fix(bioreactor-v1): drop require_live_session, rejected by bread 0.3.0#31
Merged
Merged
Conversation
bread 0.3.0 removed the `hardware.require_live_session` field and rejects it at load time as an unknown key. The machine-profile pin moved 0.2.11 -> 0.3.0 but the provider configs still set it, so bread exited immediately on startup, the runtime's hello handshake failed on the dead stdout pipe, and the runtime aborted: [ERROR] Unknown hardware key: 'require_live_session' [bread0] Hello handshake failed: poll error on stdout pipe Runtime initialization failed: Failed to start provider 'bread0' Found on real hardware during the #138 acceptance run. The field's intent is now carried by bus_path: a real path opens a live CRUMBS session and startup throws if the bus cannot be opened, while a mock:// path seeds an inventory instead. Both bioreactor-v1 and mixed-bus-dev already use /dev/i2c-1, so removing the key preserves the behaviour exactly. Verified with the released bread 0.3.0 binary's --check-config: the old config reproduces the failure (exit 1), and all bread and ezo configs in this repo now validate. Also bumps the runtime pin to 0.1.32 (the release carrying the install.sh non-loopback-auth fix, anolishq/anolis#172).
CameronBrooks11
added a commit
to anolishq/anolis-workbench
that referenced
this pull request
Jul 13, 2026
…0.3.0 (#202) bread 0.3.0 removed the `hardware.require_live_session` field and rejects it at load time as an unknown key. The renderer still emitted it, the catalog still declared it as a bread topology field, both project templates still seeded it, and the TS contract still typed it — so every bread config workbench generated was dead on arrival: the provider exits immediately, the runtime's hello handshake fails on the dead stdout pipe, and the runtime aborts. The field's intent now rides on bus_path: a real path opens a live CRUMBS session and startup throws if the bus cannot be opened, while a mock:// path seeds an inventory instead. Both templates already set bus_path, so behaviour is preserved. The checked-in golden fixture encoded the broken output as expected, so it asserted the bug was correct; updated to match. Verified by rendering both templates and running the released bread 0.3.0 binary's --check-config over the output: bioreactor-manual (/dev/i2c-1) and mixed-bus-mock (mock://) both validate. Same root cause as the failure found on real hardware during the anolishq/anolis#138 run (anolishq/anolis-projects#31).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unblocks the #138 real-Pi acceptance run. Found on hardware.
The bug
bread 0.3.0 removed
hardware.require_live_sessionand rejects it at load time as an unknown key — its CHANGELOG says so explicitly:The machine-profile pin moved bread
0.2.11 → 0.3.0, but the provider configs still set the field. So on the Pi, bread exited instantly, the runtime's hello handshake failed on the dead stdout pipe, and the runtime aborted:A breaking change shipped under a minor bump, with nothing validating the project configs against the pinned provider.
The fix
Remove the key. Its intent is now carried by
bus_path: a real path opens a live CRUMBS session and startup throws if the bus cannot be opened (amock://path seeds an inventory instead). Both projects already use/dev/i2c-1, so behaviour is preserved exactly.Also bumps the runtime pin to 0.1.32 — the release carrying the install.sh non-loopback-auth fix (anolishq/anolis#172).
Verification
Against the released bread 0.3.0 binary's
--check-config, not just source reading:Unknown hardware key: 'require_live_session', exit 1.Follow-up
anolis-workbenchstill renders this key (core/renderer.py:225), declares it incatalog/providers.json, seeds it into both project templates, and types it infrontend/src/lib/contracts.ts. Any bread project workbench generates is dead on arrival against bread 0.3.0. Fixing separately.Worth considering a CI gate that runs each provider's
--check-configagainst the project configs at the pinned version — this class of breakage is entirely mechanical to catch.