happy paths before release: hosted drive keys, do --json refusals, no unasked merge, manual truth - #1682
Merged
Conversation
The shipped run-road acceptance exited 5 on a binary with nothing wrong: it looked for `ctrl+g hide` and pressed ctrl+g to open the task column, and looked for a `#2` id the rows no longer draw. It now opens the column with alt+l, finds the second task by its title, opens the folded Done group before pressing the first run, and reads the Running heading instead of a glyph at a fixed column. A real run against dev 461a43f ends ALL PASS. Found by the 2026-09-29 happy-path pass over dev 461a43f. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
`codeaf do "" --json` exited 1 with the refusal on stderr and nothing on stdout, though the manual promises one parseable object even when the run failed. Every refusal after the flags parse (a blank brief, --best with --cheap, a bad --slots) now prints the shared envelope with ok:false, stop:"error" and the refusal as its error, keeping stderr and the exit code. An unknown flag stays on the usage path, as the manual says. Found by the 2026-09-29 happy-path pass over dev 461a43f. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
After a senior-dev run passed, the chat merged its branch into the person's main on the wake turn and said so (seen twice on a cheap model), though senior-dev.md says codeaf never merges into your branch and offers the merge instead. The outcome prompt said "offer to merge" only in the passed bullet; it now says, for every outcome, that bringing the branch over is the person's call, to be done only when they ask in a later message. This is guidance, not an enforced guard; the system prompt is left alone because it sits at its byte budget. Found by the 2026-09-29 happy-path pass over dev 461a43f. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
worker-harness.md said a finished run is always merged into the folder it was cut from; on main or master the landing keeps its branch and says `branch kept`, as how-tasks-run.md already said. commands.md said /history opens a place called tasks with running and earlier sections; it opens the sessions place. The pages now say what the binary does. Found by the 2026-09-29 happy-path pass over dev 461a43f. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ns place
The sentence names a section of the tasks page of this manual ("When a
task splits its own work"); the sessions-place rename caught it by mistake.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Sep 30, 2026
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.
Four small fixes from the 2026-09-29 pre-release happy-path pass over dev
461a43fb6(seven lanes driving the real binary against the manual, on dev and then on the published staging build of the same commit). One commit per concern.scripts/hosted-drive.shdrove keys the surface no longer has. The shipped run-road acceptance exited 5 on a healthy binary: it looked forctrl+g hide, pressed ctrl+g to open the task column, and looked for a#2id rows no longer draw. It now opens the column withalt+l, finds the second task by title, opens the foldedDonegroup before pressing the first run, and reads theRunningheading. A real run against dev461a43fb6(cheap model, isolated home, scheduler and browser stubs) ends ALL PASS.codeaf do --jsonprinted nothing on an early refusal.codeaf do "" --jsonexited 1 with zero bytes on stdout, though the manual promises one parseable object even when the run failed (fix: docs-audit bug batch (headless, reading helpers, held tasks, standing, teams, fan-out checks, media, remote) #1604 added that refusal). Every refusal after the flags parse — blank brief,--bestwith--cheap, a bad--slots— now prints the shared envelope (ok:false,stop:"error", the refusal aserror), keeping stderr and exit 1. An unknown flag stays on the usage path.mainunasked. Seen twice on a cheap model after a passed/senior-dev: the wake turn rangit mergeand said "merged into main". senior-dev.md says codeaf never merges into your branch and offers the merge.program-outcome.mdnow says, for every outcome, that bringing the branch over is the person's call, done only when they ask in a later message. This is guidance, not an enforced guard; an enforced guard would sit at the pre-action bash seam (taskGitGuard.PreAction). The system prompt is untouched — it sits at its byte budget.main/masterit saysbranch kept(how-tasks-run.md already said so). commands.md said/historyand a bare/taskopen a place calledtasks; they open[sessions].Validation contract → tests
--jsonprints exactly one envelope and keeps exit 1 and the stderr line →TestDoParsedRefusalsKeepTheJSONContract(failed before, on all three empty-stdout cases)--jsonthose refusals are unchanged →TestDoParsedRefusalsWithoutJSONKeepTheirOldReturnTestDoFlagParseRefusalKeepsUsageWithoutAJSONEnvelopeTestAProgramOutcomeLeavesBringingItsBranchOverToThePerson(failed before)Gates. Build, vet, gofmt, the manual gates,
make test-laws, andcmd/codeafgreen locally. Locallymake pr-ready'sinternal/sessionrun failed three times with a different set of task tests each time (task N never finishedafter 30–130 s while its eight shards ran the box to load 8); every one of them passes alone, twice, on this branch, and this branch changes only one prompt paragraph and its test in that package. The same suite on untouched dev failed locally too, with a third random set (TestARefutedNodesRepairRoundRunsOnTheCarefulModel,TestAuditVerifiesAChangeThatPassesItsTest,TestRefutedWorkIsRepairedInPlaceAndLandsWhenItHolds) — the laptop's load flake tracked in #1525, not this change. CI'stouched packages(which runsinternal/sessionin full) is green on this PR.🤖 Generated with Claude Code