acompose refuses a stale bundle and never silently falls back #334
Labels
No labels
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/devrel
role/eval
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/sysadmin
role/tpm
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-compose#334
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#329
What to build
Once composition leaves Go, a new failure mode appears: an author edits the YAML, forgets to run the compositor, and
acomposemounts a stale bundle that looks completely healthy. Go cannot compose, but it can compare.Two behaviors:
Staleness refusal. The bundle carries a digest of the source data it was composed from.
acomposecompares that digest against the source when the source is reachable, and refuses a bundle whose source has moved on. The error names the compositor command the author needs to run. Bundles already retain provenance and content digests perdocs/bundle-protocol.md, so this extends existing machinery rather than inventing it.No silent fallback. A missing, unreadable, or stale mount fails loudly instead of quietly reverting to a default roster. There is precedent to generalize:
docs/person-packages.mdalready records that refresh-then-exec refuses last-known-good fallback because that projection may use the default. Make that the general rule rather than one special case.A source that is not reachable from the launching host is not an error, since a launch-only host legitimately has the bundle and not the data. Absence of the source and a stale source are different states and must not collapse into one.
Acceptance criteria
acomposerefuses a bundle whose reachable source has changed since composition, and the message names the command to fix it.Blocked by