fix(aos): report unusable credentials on dry run instead of refusing #1002
No reviewers
Labels
No labels
burndown-2026-06
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/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
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!1002
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/dry-run-auth-diagnostic"
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?
Stacks on #1001. Merge that first and this rebases clean. The two touch different files (
launch.gothere,composition.gohere).The problem
A dry run prints a docker plan and starts nothing, so it had no use for the credential it demanded. Without one it aborted.
That is why
scripts/check-aos-release.shcarries--auth=falseat four call sites, and why #907 and #1000 were the same one-line patch landed twice at different call sites. Each new dry-run caller rediscovers this the hard way.The change
Auth resolution still runs. A dry run on a host that has credentials still shows the auth path and mount shape that
docs/aos-codex-auth.mdpromises, so that contract is intact.A failure now writes the same message to stderr and renders the plan anyway. The plan carries no auth mount, because none was staged. A real launch is untouched and still fails closed before Docker starts, which is all #902 asked for.
writeTemporaryClaudeAuth'sfailhelper cleans up and returns a zero projection, so an errored dry run has nothing left to leak and the existing deferredClosestays a no-op.The test that pinned the old contract
TestIntegratedStandaloneCodexAuthFailurePrecedesDockerPlanasserted the old behavior using dry-run as its probe, but its actual subject was ordering: auth resolves before the docker plan exists. It splits in two.TestIntegratedStandaloneCodexAuthFailurePrecedesDockerLaunchpins fail-closed on a real launch. Auth fails beforeprepareStandaloneWorkspace, so docker is never reached, and the test asserts the auth error surfaces and nothing was written.TestIntegratedStandaloneDryRunReportsUnusableAuthAndStillRendersPlanpins the diagnostic, the rendered plan, and the absence of an auth mount it never staged.That is stronger than what it replaces, which only covered the dry-run path.
Docs
Both
docs/aos-codex-auth.mdanddocs/aos-claude-auth.mdrecord the split, since the old behavior was documented deliberately rather than by accident.Not changed
The four
--auth=falseflags incheck-aos-release.shstay. They are no longer required, but they keep the smoke's rendered plan identical on a host that does have credentials, which is worth more than removing four flags.Verification status
ward exec pre-commit-allgreen. Both auth tests pass in 6.9s in isolation.The full
aos-clisuite is not confirmed green locally. One run hit Go's default 600s timeout, where earlier runs of the same suite took 259s and 298s on the same machine. My reading is accumulated slowness in the git-backed native-shadow tests under local load rather than a hang introduced here, since the new tests are fast in isolation and their fixture is a local temp repo with no network. That is inference, not a result. CI on this PR is the check that settles it, so please read the suite result here rather than my note.🤖 Generated with Claude Code
coilyco-ops referenced this pull request2026-08-12 07:54:13 +00:00