Skip to content

fix(bioreactor-v1): drop require_live_session, rejected by bread 0.3.0#31

Merged
CameronBrooks11 merged 1 commit into
mainfrom
fix/bread-030-require-live-session
Jul 13, 2026
Merged

fix(bioreactor-v1): drop require_live_session, rejected by bread 0.3.0#31
CameronBrooks11 merged 1 commit into
mainfrom
fix/bread-030-require-live-session

Conversation

@CameronBrooks11

Copy link
Copy Markdown
Member

Unblocks the #138 real-Pi acceptance run. Found on hardware.

The bug

bread 0.3.0 removed hardware.require_live_session and rejects it at load time as an unknown key — its CHANGELOG says so explicitly:

Removed hardware.require_live_session config field. […] Configs with require_live_session will be rejected at load time as an unknown key.

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:

[bread0] Spawning: /opt/anolis/bin/anolis-provider-bread
[bread0] Process spawned successfully (PID=24441)
[ERROR] Unknown hardware key: 'require_live_session'
[bread0] Hello handshake failed: poll error on stdout pipe
Runtime initialization failed: Failed to start provider 'bread0'

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 (a mock:// 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:

  • Old config reproduces the exact bench failure: Unknown hardware key: 'require_live_session', exit 1.
  • All 4 bread configs in this repo now validate.
  • All 4 ezo configs validate against ezo 0.3.0 (no second landmine).

Follow-up

anolis-workbench still renders this key (core/renderer.py:225), declares it in catalog/providers.json, seeds it into both project templates, and types it in frontend/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-config against the project configs at the pinned version — this class of breakage is entirely mechanical to catch.

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
CameronBrooks11 merged commit f4fd79a into main Jul 13, 2026
2 checks passed
@CameronBrooks11
CameronBrooks11 deleted the fix/bread-030-require-live-session branch July 13, 2026 16:05
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).
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