Skip to content

Sync Boatstack from Intelligence Flow Labs @ 60f76062f721 - #99

Merged
operator-stack-publisher[bot] merged 1 commit into
mainfrom
sync/intelligence-flow-60f76062f721
Jul 25, 2026
Merged

Sync Boatstack from Intelligence Flow Labs @ 60f76062f721#99
operator-stack-publisher[bot] merged 1 commit into
mainfrom
sync/intelligence-flow-60f76062f721

Conversation

@operator-stack-publisher

Copy link
Copy Markdown
Contributor

What this sync releases

Corrections for a published-but-open slice route to that slice in place, not the active one

When a multi-slice delivery publishes an early slice and the build pointer advances, that slice is not finished: its pull request is still open and may need a CI fix or a review follow-up before it merges. Boatstack's actuators already knew this — resolveAddressableSlice treats the addressable set as {the active slice} ∪ {published slices whose PR is not terminal}, so record-delivery-gate --slice and publish-pr can re-gate and update a published-open slice in place. But the advisor, router, and safety layers were left deciding purely on the whole-delivery pointer (ActiveIndex < len(Slices)): whenever any later slice was still unbuilt they treated the correction as belonging to the active slice. A fix pushed on the published slice's own branch was mis-routed — recovery-status named the active slice and prescribed repair_active, record-change charged the active slice's repair budget and reset it to BUILD, and the publication-bypass finding reported the fix branch as relation=unrelated against the active slice. The published slice's open PR was left with no clean forward move, and the active slice's build loop was corrupted by a correction that was never about it. This is the slice-granularity instance of advisor–actuator addressability drift: one domain concept — "which slice may still be corrected" — with two implementations, only one of which had been migrated to per-slice addressability.

The advisor layer now consumes the same addressability the actuators do. A single branch-keyed resolver, resolveAddressableSliceByBranch, returns the addressable slice (active or published-open with a non-terminal PR) that a correction branch owns, and the router, recorder, and safety finding all route through it. A correction reported from a published-open earlier slice's branch now resolves to that slice: recovery-status reports PUBLISHED_OPEN and a repair_published_slice next-operation that directs the operator to re-gate and publish-pr --action update the slice in place; record-change (now with an optional --slice, falling back to the correction branch) binds the observation to that slice and drives an in-place re-gate that preserves its open-PR identity, without touching the active slice's status, repair budget, or mode; and the publication-bypass finding names the published slice and reads the branch as current_branch. The active-slice path is unchanged for the ordinary case, and a fully-published (terminal-PR) delivery keeps its existing draft_corrective_child behavior.

The regression suite pins the class shut: from a published-open slice's branch it asserts the router routes in place, record-change binds the published slice while leaving the active slice untouched (both via --slice and via branch resolution), the safety finding names the published slice, and — the anti-drift invariant — the advisor's by-branch resolver and the actuator's by-id resolver select the same slice, so the two layers cannot silently diverge again.

Projection provenance

Generated from operatorstack/intelligence-flow@60f76062f72185efddad1c22f6c1fc088aff0005.
Review provenance, tests, and examples before merging.

@operator-stack-publisher
operator-stack-publisher Bot merged commit 58a0d80 into main Jul 25, 2026
9 checks passed
@operator-stack-publisher
operator-stack-publisher Bot deleted the sync/intelligence-flow-60f76062f721 branch July 25, 2026 03:05
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.

0 participants