Sync Boatstack from Intelligence Flow Labs @ 68bcc5284017 - #113
Closed
operator-stack-publisher[bot] wants to merge 1 commit into
Closed
Sync Boatstack from Intelligence Flow Labs @ 68bcc5284017#113operator-stack-publisher[bot] wants to merge 1 commit into
operator-stack-publisher[bot] wants to merge 1 commit into
Conversation
Contributor
|
Superseded and closing. This auto-generated sync snapshot predates the double-checked-locking hydration fix (intelligence-flow #198), so its |
bigboateng
added a commit
that referenced
this pull request
Jul 26, 2026
auto-merge-sync merges a passing sync PR but never closed the older sync PRs it superseded. A sync PR that fails CI is never merged by this job, so once a newer sync overtakes it, it lingers as an orphan (this is what left #109/#113/#114 open and failing until they were closed by hand). After the merge, check out the public intelligence-flow repo for history and close every open sync/intelligence-flow-* PR whose source commit is an ancestor of the just-merged source (already included), skipping the merged branch itself and leaving newer, not-yet-merged syncs untouched. Reuses the primitives already in the pipeline: gh pr list --json, git merge-base --is-ancestor, the sync branch prefix, and UPSTREAM.json's source.commit. Co-authored-by: bigboateng <bigboateng@users.noreply.github.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.
What this sync releases
recovery-status no longer blocks on an unrelated, already-ignored stale delivery
recovery-statusscans the shared delivery-state store before it selects the delivery a correction belongs to. That scan (allManagedDeliveryStates) failed closed on the first unreadable delivery and never consultedworkflow.ignored_deliveries. So a single delivery abandoned by an earlier session — malformed on disk, and already explicitly ignored — turned every recovery into a repo-wideBLOCKED: Managed delivery state cannot be verified, even when the delivery actually being recovered was healthy and on the current branch. An operator hit exactly this in the field: recovery of a fine, unrelated pull request was stranded by a staleignoreddelivery it had no relationship to, with no in-tool way forward.This is the same failure class the
nextboundary already closed under the control law stale-delivery-cannot-block-unrelated-feature — but that law had been written as if it lived only at theResolveNextboundary, so the twin read-only boundary,ResolveRecovery, never got the treatment. The store is one shared resource crossed by three boundaries: the two read-only resolvers (ResolveNext,ResolveRecovery), which must tolerate an unrelated corrupt delivery, and the mutation enumerator (ActiveManagedDeliveries), which must stay fail-closed so corrupt state can never be laundered into a write.The law is now stated over the invariant rather than one call site, and
ResolveRecoveryenforces it.allManagedDeliveryStatespartitions the store the wayscanManagedDeliveriesdoes fornext: readable states come back as data, unreadable slugs come back as a separate list rather than aborting the scan.ResolveRecoverythen applies the operator's ignored-deliveries filter to both lists before any invalidity becomes fatal, and blocks only on a delivery that is still both invalid and unignored — naming it and routing to thediscard-deliveryremedy. Recovery of an unrelated healthy delivery proceeds with an ignored corrupt delivery in the store; the mutation boundary is unchanged and still fails closed.The regression suite pins the class shut at the recovery boundary with the twins of the existing
nextconformance tests — an ignored invalid delivery no longer blocks a healthy branch (positive/bypass), a still-unignored invalid delivery blocks while naming the offender and prescribingdiscard-delivery(negative/relation), and the read-only resolver leaves the offending state byte-for-byte untouched. A companion guide,docs/control-law-scoping.md, records the method that would have caught the original miss: state a control law over its invariant and failure class, enumerate every boundary that crosses the shared resource, and extend the existing law to cover them rather than minting a near-duplicate for the second one.Projection provenance
Generated from
operatorstack/intelligence-flow@68bcc5284017ffc1271d09e96a2b583ad555ee0e.Review provenance, tests, and examples before merging.