Skip to content

feat(designer): run whole condition on arena + g6_io_bench demo - #129

Merged
mbreiser merged 2 commits into
mainfrom
feat/run-whole-condition
Jul 1, 2026
Merged

feat(designer): run whole condition on arena + g6_io_bench demo#129
mbreiser merged 2 commits into
mainfrom
feat/run-whole-condition

Conversation

@mbreiser

@mbreiser mbreiser commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Builds on #126 (G6 setAnalogOut/setDigitalOut protocol commands + field validation, already merged). Two v3-designer changes:

Feature A — per-condition run replays the whole condition (83f822a)

The inspector's per-condition button (was "Test on arena", trialParams-only) now runs the entire selected condition via the shared runSequence path — controller commands + waits, in order, plugins skipped-with-warning — instead of sending only trialParams. Relabeled "Run this condition"; eligibility relaxed to any condition with commands.

  • Refactor: preRunCheck is parameterizable; extracted runStepsOnArena(steps, conditionsByName) shared by "Run on arena" (whole sequence) and "Run this condition" (single-condition step list).
  • Motivation: after the full-sequence runner (LAB-97) landed, the trialParams-only dry-run was redundant and silently skipped the new setAnalogOut/setDigitalOut I/O commands (logged in ROADMAP "To review").

g6_io_bench built-in demo (d4c2b41)

One-click AO/DO bench test in Load demo ▾: a pure-I/O condition (setDigitalOut + setAnalogOut + waits, no trialParams, so no pattern/SD dependency). New fixture tests/fixtures/v3_g6_io_bench.yaml.

Footer bumped to v0.39.

Verification

  • pixi run test green (v2 137, v3 663, wire 112, runner 130, plugin-registry 15, +others).
  • Browser: demo loads clean (io_test + 6 commands, no console errors); "Run this condition" renders + drives the shared runner.
  • Hardware: the whole-condition run is best confirmed on a real G6 (RUN → DO1/J3 toggles, J27 ≈ 2.5 V). Reuses the byte-pinned, already-hardware-proven encoders from feat: G6 analog/digital-out protocol commands + designer field validation #126.

🤖 Generated with Claude Code

mbreiser and others added 2 commits July 1, 2026 12:56
…st trialParams)

The inspector's per-condition arena button was a trialParams-only "dry-run"
(LAB-94) — it skipped waits, plugins, and the new setAnalogOut/setDigitalOut,
which was misleading now that the full-sequence runner (LAB-97) exists. Repurpose
it to run the WHOLE selected condition end-to-end.

- onRunConditionDryRun builds a one-step sequence for the selected condition and
  runs it through the same runSequence path as "Run on arena" (waits, allOn/allOff,
  setPositionX, setAnalogOut/setDigitalOut all replay; plugins skipped-with-warning).
  Button relabeled "Run this condition".
- Extract runStepsOnArena() shared by onRunSequence + the per-condition run
  (connect-on-demand + run + button re-sync in one place); drop the now-duplicate
  connect block from onRunSequence.
- preRunCheck(opts) parameterized: { steps, hasRandom, title, body, confirmLabel }
  scopes the confirm to one condition; no-arg = whole sequence.
- renderArenaTestControl shows the button for ANY condition with commands (dropped
  the trialParams-only gate); updated notes/tooltips/comments.
- Footer v0.37 -> v0.38.

Reuses the hardware-verified runSequence path. Browser-verified: the button now
renders for a non-trialParams condition (arena_check), module loads clean, pixi
run test green. The whole-condition run is NOT yet exercised on hardware.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… SD)

One-click AO/DO bench test in the "Load demo" dropdown: a pure-I/O condition
(setDigitalOut + setAnalogOut + waits, NO trialParams) so it runs with no
pattern/SD-card dependency — pairs with the new "Run this condition" button.

- tests/fixtures/v3_g6_io_bench.yaml (new)
- experiment_designer_v3.html: demo dropdown option; footer v0.38 -> v0.39

Browser-verified: demo loads (io_test + 6 commands), no console errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mbreiser
mbreiser merged commit 9638541 into main Jul 1, 2026
3 checks passed
mbreiser added a commit that referenced this pull request Jul 2, 2026
* docs(arena-studio): unification design + wireframes v1–v5 + handover

Consolidated onto current main. v5 is the approved density/ergonomics
pass over v4 (one 44px bar; Console essentials + collapsible foot-gun
groups; 150px collapsible run-log) with content re-synced to shipped
main: ArenaSession broker shipped, run-log module built-but-unwired,
plus #126 analog/digital-out, #129 run-whole-condition, #130 0x88 +
panel-display-mode, #131 FicTrac. Handover refreshed to the verified
2026-07-01 shipped-vs-pending table.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* arena-studio: ISP firmware-push handoff + same-origin dev artifacts

Groundwork for Arena Studio's "push official builds to panels" flow:

- docs/development/arena-studio-isp-firmware-push-handoff.md — catalog
  schema (isp_file/isp_sha256, firmware repo PR #17), the 0xE0/0xE3/0xC8/
  0xC9 wire flow (encoders already in js/arena-wire-g6.js), UX notes from
  the real fleet reflash, gotchas (CORS: Pages yes / Release assets no).
- flasher/firmware/manifest-dev.json — schema-identical dev catalog to
  develop against until PR #17 + a release tag publish the real one.
- Dev builds (same-origin): isp-progress-display 23d66af (progress bar
  while ISP-flashing + first-boot smiley), both revs, .bin + .uf2; plus
  the current fleet build (dd7d3f9) ISP bins.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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