Sync Boatstack from Intelligence Flow Labs @ df798dfd69a0 - #92
Merged
operator-stack-publisher[bot] merged 1 commit intoJul 24, 2026
Merged
Conversation
operator-stack-publisher
Bot
deleted the
sync/intelligence-flow-df798dfd69a0
branch
July 24, 2026 15:34
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.
What this sync releases
Publishing a delivery slice no longer strands it — a published-open PR stays correctable in place
Multi-slice managed deliveries build sequentially, so publishing one slice's PR intentionally advances the delivery's
BUILDpointer to the next slice. But that same pointer also decided which slices may still be corrected, and it advanced the instantgh pr create/editreturned — before the published slice's CI, review, or merge was ever observed. Once it moved, the just-published slice became unreachable:record-delivery-gate --slice <id>refused it as "not active",pr-context --slice <id>only relabelled the active slice instead of redirecting, and a corrective push landed asrelation=unrelated. A slice whose PR was still open and simply needed its CI fixed had no bounded way back — a supervisory deadlock. The only sanctioned recovery, a corrective child delivery, is right for a merged or closed PR but wrong for one still open.The fix separates which slice builds next (rightly advances) from which slices may still be corrected (must not be revoked before the postcondition is terminal). The addressable set is now {active slice} ∪ {published slices whose PR is not terminal}. Publication still advances the
BUILDpointer, but aPUBLISHEDslice remains re-gateable and re-publishable in place until its PR is terminal:record-delivery-gate --slice <id>andpr-context --slice <id>now redirect the gate/ship lookup to the named active-or-published-open slice instead of rejecting it. Resolution is network-free — addressability is read from persisted delivery state, never a liveghcall.--action updateof its still-open PR: it refreshes the recorded PR URL without advancing theBUILDpointer a second time. Only the firstREVIEW_PASSED → PUBLISHEDtransition advances.pr_statemarker. It isOPENon first publication and is advanced to a terminal value (MERGED/CLOSED) only when the recovery/next resolver's existinggh pr viewobservation confirms it — a bounded, best-effort cache of an observed external fact. A terminal slice refuses in-place correction and routes to the corrective-child path, the bounded forward actuator. A published delivery still cannot be reset.BUILDpointer, so an in-place re-gate of an earlier published-open slice compares against its predecessor.This is a standing instance of the recovery principle behind
repair-stateand the mutation boundary: a supervisor that removes an actuator must still expose a bounded actuator that reaches every valid next state — including reversing its own last move. A newnonblocking-supervisory-controlconformance suite encodes that invariant as named-property tests so the failure class — advancing a durable supervisory pointer past an unobserved postcondition — cannot silently reappear, and the failure-move catalog records it as Premature supervisory pointer advance.Projection provenance
Generated from
operatorstack/intelligence-flow@df798dfd69a002bb8b9970216adf4f8afbe2b6ca.Review provenance, tests, and examples before merging.