Skip to content

Scout pipeline and the PRD-750 Tier-1 games (PRD-735 Phases 2-3) - #1

Merged
jonit-dev merged 16 commits into
mainfrom
scout-pipeline
Oct 27, 2026
Merged

jonit-dev merged 16 commits into
mainfrom
scout-pipeline

Conversation

@jonit-dev

Copy link
Copy Markdown
Collaborator

What is this PR about?

The scout pipeline from ThreeNative PRD-735: npm run scout -- <id> <repo> <sha> clones one game repo at a pinned SHA, runs one headless DeepSeek scout with the fixed brief in scout/BRIEF.md, and validates its game-<id>.json against the pinned source.

Why does it matter?

The ThreeNative kit loop (PRD-750) needs reverse-engineer references past SM64. Games land here in the PRD-750 genre order.

Done

  • scout/BRIEF.md, scout/run.sh, validate.mjs --game <id>; node --test scout/run.spec.mjs validate.spec.mjs 8/8 (red 4/4 first)

Still open

  • One scout per Tier-1 game, each card reviewed before merge

…idation (PRD-735 Phase 2)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
… scouted; SCOUT_ARM runs a scout through a wrapper when the dsh balance is empty

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@jonit-dev

Copy link
Copy Markdown
Collaborator Author

Quake scouted (PRD-750 row 2): 9 nodes, 22 cards at bf4ac424; validate --game quake and release:assets pass. Spot check: 19 constants match known Quake defaults (maxspeed 320, accelerate 10, air cap 30, jump 270, gravity 800, step 18, weapon damages). A full per-card semantic review is still open before merge.

jonit-dev and others added 14 commits October 26, 2026 17:50
…econd import is byte-identical (PRD-735 AC-1)
…90b3, fixed-point speeds decoded (PRD-750 genre row 5)
…ts/ (PRD-001)

- git mv games, catalog, schemas, both CLIs and all suites into canonical paths;
  derive data/schema paths from module locations and the scout root from its own
- load both schemas from disk, add --data-only/check:data that rejects legacy
  root data, filename/id drift, tier faults and noncanonical JSON offline
- validate the whole library before pinned-source checks, release writes and
  the atomic catalog replacement in the importer
- scout brief and prompt name data/games/<id>.json; catalog promotion stays
  with the review lane
- add tests/library.spec.mjs CLI coverage and make CI collect every suite

Baseline 8b36c2c: every migrated document parses identical to its pre-move blob.
…cout prompt in tests

Each new invariant test was mutation-checked: breaking the schema file, an
authored-data write, a stale root path or a prompt/brief path drift each makes
it fail.
The map was left at the repository root by the scout lane: 11 nodes and 19
review cards at vetritheretri/ssb-decomp-re 572a747, all pinned citations
verified. Move it to data/games/ and promote its catalog row to Tier 1 so
check:data and the release build see six mapped games.

The real-dataset test now derives the game count instead of freezing it.
editorial scale: 5 genre-defining, 4 landmark, 3 notable, 2 niche, 1 minor.
The value lives only on the Tier-1 catalog row so game files and the release
index cannot disagree; check:data fails when a mapped game has no rating and
the catalog schema rejects ratings outside 1-5. Tier-2 rows stay unrated until
a game is mapped.
genre is a closed enum and the stable filter key; subgenre is an optional
lowercase label. Both sit on the catalog row only, are required for mapped
games (check:data fails otherwise), and stay absent on unreviewed Tier-2 rows
instead of guessing thousands of classifications.
platform was carrying list section names: 249 rows said 'Open-source
reimplementations', 36 'Other', 138 'Source ports' and 26 'Multiplatform',
and platforms named in a note ('Engine reimplementation, PC / DOS.') were
dropped. platform is now a closed 52-value vocabulary plus 'unknown', and the
new required kind records what the repository is (decompilation, disassembly,
static-recompilation, port, source-port, browser-port, engine-reimplementation,
system-software, original-source) from the same section and note text.

classify() in scripts/import.mjs owns the mapping so fresh imports agree:
re-importing the pinned list is byte-identical. Mapped games must name a real
platform; 'unknown' is limited to unexplored rows (203).
@jonit-dev
jonit-dev marked this pull request as ready for review October 27, 2026 04:08
@jonit-dev
jonit-dev merged commit d34ff31 into main Oct 27, 2026
2 checks passed
@jonit-dev
jonit-dev deleted the scout-pipeline branch October 27, 2026 04:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant