Skip to content

Sync Boatstack from Intelligence Flow Labs @ 550a1c87fa41 - #100

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

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

Conversation

@operator-stack-publisher

Copy link
Copy Markdown
Contributor

What this sync releases

The delivery-gate recorder resolves the evidence ledger through the shared dual-layout rule

A feature's compiled trio — tasks.json, test-matrix.json, and evidence.md — is written by activate-plan under the feature's compiled/ subdirectory, while older features carry these artifacts at the feature root. To keep the two layouts from diverging, Boatstack resolves such an artifact through one shared rule (featureArtifactPath): try each layout in turn and use the one that exists. pr-context already resolved the evidence ledger this way. The delivery-gate recorder did not: record-delivery-gate, invoked with no explicit --evidence, hand-joined the feature-root path with no fallback. On a project that keeps its ledger only at compiled/evidence.md — the location activate-plan writes — the recorder could not find it, and the test and review gates failed with "delivery gate requires current evidence: … no such file," demanding the ledger at a path nothing writes. This is the compiled-artifact analogue of the published-slice split-brain: a shared resolution rule that one straggler consumer bypassed, so it silently diverged from every layer that honored it.

The recorder now resolves its default evidence path through the same featureEvidencePath helper pr-context uses — the feature-root copy first (canonical for legacy features), the compiled/ copy as the current-layout fallback — so the two layers provably resolve the same ledger for a given feature and can never again disagree on where evidence lives. The change is strictly additive: an explicit --evidence argument and an absolute path are honored unchanged, a legacy feature-root ledger still resolves exactly as before, and the only new behavior is that a compiled/-only ledger is now found instead of reported missing. tasks.json resolution is unchanged.

A regression suite pins the fix: the shared resolver's ordering (root canonical, compiled/ fallback, and the canonical path returned when neither exists so a missing-evidence error names the right location); a proof-of-fix gate over a compiled/-only ledger with no --evidence; the preserved legacy feature-root path; and the anti-drift invariant that the recorder and pr-context route through the one resolver and cannot re-diverge.

Projection provenance

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

@operator-stack-publisher
operator-stack-publisher Bot merged commit e6a6eb0 into main Jul 25, 2026
9 checks passed
@operator-stack-publisher
operator-stack-publisher Bot deleted the sync/intelligence-flow-550a1c87fa41 branch July 25, 2026 09:20
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