Laboratory: build corpus scenarios without the operator #50

Manually merged
vinny merged 0 commits from vinny/lab-build into master 2026-10-15 02:04:55 -04:00 AGit
Owner

Part of #7. Owner decision of 2026-10-15: the coding agent builds the laboratory scenarios itself. A scenario is now identified by what its build makes, not only by an operator's save file.

tools/lab_build.py build <scenario_id> --record (development tooling):

  • turns CMO's loaded scenario into a blank one (Tool_BuildBlankScenario) at the descriptor's start time;
  • waits for CMO to be paused (its Lua has no pause), then sets the start time again;
  • presses Spawn on the approved Builder plan and requires an "all as planned" audit;
  • runs the family's additions from docs/laboratory/additions/, which use fixed GUIDs and take units in GUID order;
  • fingerprints the result: a SHA-256 over the start time and, by GUID, every unit's class, position, host, loadout and damage, every mission and the special actions;
  • records the plan version, the plan and additions SHA-256 and the fingerprint in corpus.json.

Corpus:

  • Descriptors gain a build record (schema updated). A ready scenario has a save, a complete build, or both.
  • corpus.start_sha256() is the save's hash, else the fingerprint. Evaluation matches a run's save_sha256 against it.
  • validate-corpus checks every additions file against its hash. .gitattributes keeps the additions in LF in every checkout.
  • The seven ready scenarios keep their saves and gain build records; their fingerprints come with their first builds. tpl-surface-offensive-sag has its plan and additions recorded.

Tests: a built scenario is ready by its fingerprint, an incomplete build is not, its additions are checked, and evaluation matches a run to a build. The laboratory tests pass (40).

Spawning here is development work under the owner decision of 2026-09-29. The shipped Builder still spawns only on a person's press.

🤖 Generated with Claude Code

Part of #7. Owner decision of 2026-10-15: the coding agent builds the laboratory scenarios itself. A scenario is now identified by what its build makes, not only by an operator's save file. **`tools/lab_build.py build <scenario_id> --record`** (development tooling): - turns CMO's loaded scenario into a blank one (`Tool_BuildBlankScenario`) at the descriptor's start time; - waits for CMO to be paused (its Lua has no pause), then sets the start time again; - presses Spawn on the approved Builder plan and requires an "all as planned" audit; - runs the family's additions from `docs/laboratory/additions/`, which use fixed GUIDs and take units in GUID order; - fingerprints the result: a SHA-256 over the start time and, by GUID, every unit's class, position, host, loadout and damage, every mission and the special actions; - records the plan version, the plan and additions SHA-256 and the fingerprint in `corpus.json`. **Corpus:** - Descriptors gain a `build` record (schema updated). A ready scenario has a save, a complete build, or both. - `corpus.start_sha256()` is the save's hash, else the fingerprint. Evaluation matches a run's `save_sha256` against it. - `validate-corpus` checks every additions file against its hash. `.gitattributes` keeps the additions in LF in every checkout. - The seven ready scenarios keep their saves and gain build records; their fingerprints come with their first builds. `tpl-surface-offensive-sag` has its plan and additions recorded. **Tests:** a built scenario is ready by its fingerprint, an incomplete build is not, its additions are checked, and evaluation matches a run to a build. The laboratory tests pass (40). Spawning here is development work under the owner decision of 2026-09-29. The shipped Builder still spawns only on a person's press. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Operator decision 2026-10-15: the coding agent builds the laboratory
scenarios itself. tools/lab_build.py (development tooling) makes CMO's
loaded scenario a blank one at the start time, waits for the pause,
presses Spawn on the descriptor's approved Builder plan, requires the
audit to read every unit back as planned, runs the family's additions
(docs/laboratory/additions/, fixed GUIDs and GUID order) and fingerprints
the result. A descriptor's build record holds the plan, its and the
additions' SHA-256 and the fingerprint; a ready scenario has a save, a
complete build, or both, and a run's save_sha256 is the save's hash or
else the fingerprint. validate-corpus checks the additions files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version 0.7.33 (lab-build)
Some checks failed
check / check (ubuntu-latest) (push) Has been cancelled
check / check (windows-latest) (push) Has been cancelled
check / check (ubuntu-latest) (pull_request) Has been cancelled
check / check (windows-latest) (pull_request) Has been cancelled
11ccf7f57c
vinny manually merged commit 11ccf7f57c into master 2026-10-15 02:04:55 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
vinny/CMOnet!50
No description provided.