Skip to content

chore(tiers): release kit — discovered test suite, bench validation kit, review before validation - #237

Merged
mbreiser merged 1 commit into
mainfrom
chore/release-kit
Sep 29, 2026
Merged

mbreiser merged 1 commit into
mainfrom
chore/release-kit

Conversation

@mbreiser

@mbreiser mbreiser commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Lessons from the first two releases, turned into tooling and docs:

  1. pixi run test discovers tests by name (scripts/run-tests.py): every tests/test-*.js|py and tests/validate-*.js. It replaces the hand-kept && chain in pixi.toml. Every PR that added a test appended to that same line, so every release candidate hit the same merge conflict (candidate 2 hit it three times). Details:
    • Each file runs in its own process, and every Node test gets the vendored yaml hook, passed as a file URL so it also works on Windows.
    • Every file runs even after a failure; a summary follows, and the exit status is non-zero if anything failed.
    • pixi run test -- wire runs a subset, and -- --list shows what would run.
    • It picks up 8 files that were running nowhere: test-crc.js, validate-arena-geometry.js, validate-header-v2.js, validate-matlab-reference.js, and the four validate-* suites only their own workflows ran. All pass. Total: 56 files, about 15 s.
  2. A bench validation kit.
    • protocols/validation/bench_closed_loop_2x10.yaml, the closed-loop check used for feat(closed loop): a trial opens at its trialParams frame_index — Studio v0.91 #225 and both 2026-09-2x candidates. It needs the CSHL course pattern bundle on the SD card.
    • pixi run bench-check -- LOG --hold epoch_a_frame25=25 --hold epoch_b_frame75=75 --channel next --build <sha>. It checks that the run completed, every arena command was ok, there were no error glyphs, and the closed loop held its frames. It prints Studio version, tier, build, controller firmware and panel inventory.
    • It reads behavior_v1 and v2 logs, plain or .gz. I verified it on the real 2026-09-28/29 bench logs (all pass), and it has its own tests with synthetic logs.
  3. Release docs and the g6-release skill:

Linear: LAB-222 (two-tier web releases)

Tier

Tooling and docs only, merged after CI like #232. No served page changes: a new YAML file under protocols/validation/ is served but not listed in protocols/index.json.

Release notes

None (no tool changes).

Test plan

  • pixi run test: 56/56 files pass (the old 46 + 8 previously unrun + 2 new)
  • tests/test-run-tests.py 12/12, tests/test-bench-check.py 20/20
  • pixi run bench-check on the rc3, Production v0.92 and v0.91-baseline logs: all pass, including the behavior_v1 log
  • The validation protocol passes the protocol validator
  • CI green, including the 3-OS tiers job

🤖 Generated with Claude Code

…it, review-before-validate

- `pixi run test` = scripts/run-tests.py: runs every tests/test-*.js|py and
  tests/validate-*.js by name (each in its own process, the vendored yaml hook
  for every Node test, a summary, non-zero on any failure; `-- <substring>`
  runs a subset, `-- --list` shows the set). Replaces the hand-kept `&&` chain
  that every test-adding PR edited on the same line, so every candidate
  conflicted in pixi.toml. It also picks up 8 files that were running nowhere
  (test-crc.js, validate-arena-geometry/-header-v2/-matlab-reference, and the
  four validate-* suites only their own workflows ran); all pass. 56 files, ~15 s.
- Bench kit: protocols/validation/bench_closed_loop_2x10.yaml (the #225/rc
  closed-loop check) + scripts/bench-check.py / `pixi run bench-check`
  (completed, all arena commands ok, no error glyphs, --hold COND=FRAME,
  --channel, --build; reads behavior_v1/v2, .jsonl[.gz]). Verified on the
  2026-09-28/29 bench logs; tests/test-bench-check.py (synthetic logs).
- release-process.md + g6-release skill: adversarial review of the candidate
  diff BEFORE bench time (lesson from 2026-09-29 rc1/rc2), the bench kit
  steps, course-repo auto-commit off for validation runs, keep PRs mergeable
  (no CI on conflicting PRs), tests are discovered by name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mbreiser
mbreiser merged commit 9eeb25c into main Sep 29, 2026
5 checks passed
@mbreiser
mbreiser deleted the chore/release-kit branch September 29, 2026 21:11
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