Commit Graph
15 Commits
Author SHA1 Message Date
Miguel Angel Simon Sierra dfd3a80d3a feat(eval): allocate the brief corpus per move, in waves
Round 2 split briefs equally across the three source types. At round 3
volume that would put roughly 700 briefs on 25 primitive moves, which at
the measured intra-cluster correlation of 0.33 carry about as much
information as 3 independent ones.

choose_targets now takes a wave number and brings every catalog move up
to that many generation attempts, so cluster sizes stay uniform.
Attempts are counted rather than acceptances, which is what makes a
killed wave resumable without backfilling a move the gates rejected.
wave_report prints per-source counts, the per-move count distribution
and the unbackfilled shortfall.
2026-07-31 21:11:03 +02:00
Miguel Angel Simon Sierra 1a4378737f feat(eval): pre-register the round 3 arm decision rule 2026-07-31 20:58:40 +02:00
Miguel Angel Simon Sierra 42985dc506 test(eval): freeze round 2's per-brief recall as an offline fixture 2026-07-31 20:56:04 +02:00
Miguel Angel Simon Sierra 6a9f4f4b50 feat(eval): record the round 2 verdict, summary and report 2026-07-31 20:52:34 +02:00
Miguel Angel Simon Sierra e0e532f56d feat(eval): report tokens and dollars per cell alongside fit 2026-07-31 16:58:44 +02:00
Miguel Angel Simon Sierra 6bfa66d2d1 feat(eval): compare cells on the same briefs, not the same column
fit when shown is conditioned on retrieval succeeding, and the briefs a short
list finds are the easy ones, so reading that column across cells compares
different brief sets and can invent an effect that is only difficulty. The
report now restricts the full shelf to each cell's own gold-shown briefs.
2026-07-31 16:42:49 +02:00
Miguel Angel Simon Sierra 5e04109a11 feat(eval): split retrieval misses from selection misses in the report
A low fit reads as the model choosing badly when the real story is often that
retrieval never showed it the answer, and those two call for opposite fixes.
Each cell now reports how often the gold move was in the list the run could
see, and its fit on just those runs.
2026-07-31 16:37:37 +02:00
Miguel Angel Simon Sierra 65949f60e0 feat(eval): aggregate the round-two grid into a report
Round one printed one card per run, which does not survive 2043 of them. This
aggregates per cell and per stratum first and shows individual runs only for
failures, keeping mountable and fit as two separate columns. It reads the
checkpoint log alone, so it runs against a grid that is still going.
2026-07-31 16:32:55 +02:00
Miguel Angel Simon Sierra 4bce4ce0ce fix(eval): dry run banner stated 50 output tokens while billing 800
The banner a reader checks before approving spend disagreed with the
arithmetic under it by a factor of sixteen, understating the output half of
every projection. The printed assumption now interpolates the constant, and a
regression pins the two together.
2026-07-31 16:09:41 +02:00
Miguel Angel Simon Sierra 7759acc5ea perf(eval): memoize the semantic ranking per brief
semantic_topk re-read and re-scored vectors.json on every call. The grid asks
for a semantic ranking 227 briefs x 4 cells, so a tens-of-megabytes parse and a
424-move cosine sweep ran roughly 900 times. The parse and the ranking are now
memoized, keyed by the vectors path so the tests that repoint VECTORS still see
their own file.
2026-07-31 16:02:43 +02:00
Miguel Angel Simon Sierra 6a2b287a2f feat(eval): drop briefs the blind committee cannot reconstruct
The gold sets are right by construction, but at 424 entries some moves are
near twins, so 45 of 272 briefs describe a beat that two moves answer equally
well. Three independent full-shelf readers reconstructed 227, below the 95
percent floor, and the grid stayed blocked.

Moves those 45 briefs and their gold into excluded/ rather than deleting them,
so the drop is auditable and reversible, and leaves gold purely constructed.
The kept corpus is easier than the generated one and its block stratum falls
from 79 to 53, which the verdict has to state.
2026-07-31 15:41:39 +02:00
Miguel Angel Simon Sierra 4ee6694be4 fix(eval): read round two briefs from round two
The runner resolved the brief directory one level up, where round one's five
briefs live. They load without error, so the whole nine cell grid would have
scored against the wrong corpus. The generator and the gold committee already
resolved it correctly, so the three stages now assert they agree.

Commits the 272 brief corpus, its gold sets and the committee audit so the
experiment is reproducible from the repository rather than from one machine.
2026-07-31 15:37:11 +02:00
Miguel Angel Simon Sierra ddcf5c0636 fix(evals): regenerate the shelf and index for the twelve merged pairs
Two moves that shipped as registry components became primitive and component
collisions, so the catalog now merges twelve pairs instead of ten. Regenerated
rather than hand edited: the shelf suite asserts these bytes come back out of
the builder unchanged.
2026-07-31 12:47:37 +02:00
Miguel Angel Simon Sierra d866d092dd fix(evals): resolve shelf sources from the vendored path in tests too
The shelf builder reads primitive artifacts from evals/catalog-retrieval/sources,
but the test fixture still exported them to the old scratch layout, so the
negative controls built against a repo that had no primitive sources at all.
The location is now one named constant both sides resolve against.

Two moves that shipped as registry components in the previous commit,
caption-camera-follow and grade-split-reveal, are now real primitive plus
component collisions, so the pinned collision set and the regenerated shelf
account for them.
2026-07-31 12:36:02 +02:00
Miguel Angel Simon Sierra bb912587b9 feat(primitives): add 25 video primitives, live docs pages, and the catalog retrieval eval
Adds the 25 video primitive compositions and their generated Mintlify pages.
Each page embeds a live <hyperframes-player> preview with editable composition
variables rather than a rendered MP4.

Adds the catalog-browsing eval under evals/catalog-retrieval: a 424-entry shelf
built from HEAD, nine retrieval conditions (no-catalog control, full read,
lexical, semantic, and hybrid across several values of k), a brief generator
that constructs each brief from a known target, a blind three-pass gold
validation committee, and a mechanical scorer that keeps mountable and fit as
two separate numbers.

The eval vendors its own shelf, primitive sources, and preview list instead of
reading them from an ignored working directory, so the shelf regenerates byte
for byte from a clean checkout. Derived artifacts stay out: the embedding cache
and the run checkpoints are regenerated rather than committed, so no run can
score against a stale copy of either.

Lint ignores now cover vendored minified player bundles by pattern instead of
one path at a time.
2026-07-31 12:27:41 +02:00