fix(aos): refresh the repository plan in silence instead of blocking the launch #1367
No reviewers
Labels
No labels
burndown-2026-06
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/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1367
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/mt75-quiet-plan"
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?
Kai could not launch at all tonight. This makes the sealed-plan check quiet and non-blocking.
What actually wedged
The plan sealed
3b6d851awhileorigin/mainhad moved to4d3c00f7, and the canonical checkout was two commits behind. Regeneration seals from the checked-out revision and re-validates against origin/main, so it kept sealing the old digest and failing against the new one. It could never converge on its own, which is why the error repeated after regeneration and told the operator to pull.The change
A stale digest is now a refresh trigger rather than a refusal:
The one exception is a refresh that could not run at all, which still says so in one line. That case leaves every later launch stale too, so silence there would hide the thing that matters.
Where the converge chatter was coming from
catalog,roster,wrote,linked,cascade,skills— those six lines areagent-compose's, but they reached a launching human through this file, which piped the child's stdout and stderr straight to the operator. They are now captured for the error instead.That means the noise is gone from
acomposewithout touching theagent-composerepository at all, which matters because that repo is scoped to another seat.Why not delete the gate, which was the original ask
agent-compose compose --reapplyis invoked from exactly one place: this file. The gate is therefore also the only automatic refresh of the repository plan on a native launch.Deleting it outright would have traded tonight's wedge for a plan that goes quietly stale after every policy change. Tonight is the case: after the
eval→science / tpm→director / devrel→advocaterename in #1357, a gate-less launch would have kept composing against a plan still namingdevrel, and the failure would surface somewhere further from its cause. Kai chose this shape once that was on the table.Tests
Three tests encoded stopping as the contract and now encode launching:
TestAPersistentMismatchStillLaunchesTestUnavailableRegenerationStillLaunches— asserts the one-line noticeTestFailedRegenerationStillLaunches— asserts the cause reaches the operatorOne is new:
TestARefreshedPlanPrintsNothingpins that a refreshed launch emits nothing at all, which is the property this PR exists for and the one most likely to be undone by accident.A fourth test caught a real bug mid-change: my first version called
regenerateRepositoryPlandirectly and bypassed therunPlanRegenerationseam the tests stub, so the reload silently did nothing.Verification
Full
aos-clisuite green (243s),go vetclean,pre-commit run --all-filesgreen.Not included
The same six lines still print when someone runs
agent-compose composeby hand. That isagent-compose/internal/converge, scoped to the Applied Scientist seat, and goes to Evie as a separate brief.