Repository navigation
Fix: Octatrack base, engines on a core whose owned channel closed read STUCK instead of waiting for the transport - #1033
Merged
Conversation
resident_engines.c only looked at its own closed[] flags, so a core closed from outside the engines (a legacy packet aging out, the stall watchdog's abort, a failed key-bus job, a sequence wrap) left every claim waiting for the transport (wait 7) until a power cycle (MKII, 27 Oct 2026). Treat dl_owned_closed(c) like closed[c] in placement's STUCK test and at admission, so a new controller is refused (STUCK_BOOT) and the self-test names it. Board test mode 64 closes core B from outside; mode 47 now expects Sidechain refused on its closed core. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Base identity 052d86b7 (resident_engines.c changed); base-bound module packages relinked. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…-core # Conflicts: # sdk/machines/octatrack/base-binding.json # src/engine/assets/octatrack-base-variants.json # src/engine/assets/octatrack-base.elemod # src/engine/assets/octatrack-module-packages.json
…rrent main Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Brings in Analog BD 0.1.6 (repeat98#944, beta base 6483508a) and the later docs merges. The generated base files were regenerated with their producers, not resolved by hand: octatrack:base --stock OS1.40C --beta --write and octatrack:module-packages. The five base-bound packages rebind byte-identical (requiredBase a542a515); Analog BD's package is unchanged (f83c7f81). Test mode 64 does not clash: main's board test ends at mode 63. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ngines-closed-core Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
MODWERK_JOURNAL_BOARD_ENABLED 0), so the lease is never acquired. The real gap: a core's owned channel can be closed from outside the engines (a legacy packet aging out after 64 frames without an ACK, the stall watchdog'sdl_abort, a failed key-bus job, a sequence wrap), andresident_engines.conly looked at its ownclosed[]:owned_reserverefused,reserve()returned 0 and placement set wait 7 every tick for good, while admission still let a new controller in to wait the same way. The key bus already reported the core as down; the engines did not.resident_engines.ctreatsdl_owned_closed(c)likeclosed[c]in placement's STUCK test and at admission (shut(c)): an engine not yet placed on that core reads STUCK, a module that needs it is refused at install (Sidechain and Analog BD with a conflict; a key-bus reader was already refused bykeybus_down()), and the self-test names the failure. Placed engines keep working; a power cycle clears it as before. It does not recover the unit, and why the rollback's restore traffic timed out after the drop is still open: the transport's close reason is a private static with no room in the 192-byte engine view, so exporting it is a follow-up. Changelogchangelog/2026-10-28-octatrack-engines-closed-core.md. Beta base regenerated.npm run pr:ready;sdk/tests/test_resident_engines_board.pynew mode 64 (core B's owned channel closed from outside: Sidechain refused with a conflict and STUCK_BOOT, a key-bus reader refused, placement reports STUCK and never TRANSPORT, no job runs or is reserved on B) and mode 47 now expects Sidechain refused on its closed core; with the fix reverted both modes fail. Not yet on a unit (it needs a USB drop to show).Independent of #1024 and #944; whichever lands later regenerates the base.
🤖 Generated with Claude Code