Skip to content

fix: four papercuts in operating the harness (#147, #148, #149, #153) - #161

Merged
thedancingdeveloper merged 1 commit into
mainfrom
fix/operating-papercuts
Aug 4, 2026
Merged

fix: four papercuts in operating the harness (#147, #148, #149, #153)#161
thedancingdeveloper merged 1 commit into
mainfrom
fix/operating-papercuts

Conversation

@thedancingdeveloper

Copy link
Copy Markdown
Contributor

None of these is about model quality. All four are about the harness being
usable by someone who has not read its source, and all four were hit within
the first hour of pointing it at an unfamiliar repository (#56).

Stacked on #151 because it touches the same files.

#147 — a run destroyed the checkout it was given

Headless works in place and begins each attempt with git checkout -- . and
git clean -fd, so a modified tracked file was reverted and an untracked one
deleted, neither recoverably, and no document mentioned it. A real import came
within one command of losing 136 uncommitted files including two whole crates.

Preflight now refuses a dirty checkout before anything is claimed, doctor
reports it before you get that far, and --allow-dirty overrides it — loudly,
with the detail kept in the report, because the whole point is that the loss is
silent and irreversible. Session mode is unaffected: it has its own worktree.

#153 — the role flags were a seed pretending to be a setting

After any run had stored a map, --implementer was inert; two runs were spent
on a model that had been explicitly replaced on the command line. The warning
existed and went to stdout, which is block-buffered into a pipe — so it
arrived out of order when it arrived, and vanished entirely when the process
was killed.

It is a log line now, it names both models, and --reroute makes the command
line win. The second symptom is fixed too: a complete stored map no longer
refuses to start for want of flags it did not need, which had made the flags
simultaneously required and ignored.

#148plan --dry-run demanded a GitHub repository

To answer a purely local question. --repo is now optional under --dry-run,
which prints the items it parsed and stops.

#149verify: accepted a test filter that matched nothing

cargo test -p gateway secure_cookies ran zero tests, exited 0, and adoption
reported the item as already delivered. The harness cannot tell that apart
without reading another ecosystem's output, and should not try — so this is
documented, with the failure shown, next to the sentence that promised exit 0
was evidence.

Docs

USAGE.md gains what headless does to your checkout, what the role flags
actually are, and how to write a verify: that fails when the work is absent.

All four gates green.

🤖 Generated with Claude Code

@thedancingdeveloper
thedancingdeveloper changed the base branch from fix/context-budget-and-starved-target to main August 4, 2026 23:31
None of these is about model quality. All four are about the harness being
usable by someone who has not read its source, and all four were hit within
the first hour of pointing it at an unfamiliar repository.

**#147 — a run destroyed the checkout it was given.** Headless works in place
and begins each attempt with `git checkout -- .` and `git clean -fd`, so a
modified tracked file was reverted and an untracked one deleted, neither
recoverably, and no document mentioned it. A real import came within one
command of losing 136 uncommitted files including two whole crates.

Now preflight refuses a dirty checkout before anything is claimed, `doctor`
reports it before you get that far, and `--allow-dirty` overrides it — loudly,
with the detail kept in the report, because the whole point is that the loss is
silent and irreversible. Session mode is unaffected: it has its own worktree.

**#153 — the role flags were a seed pretending to be a setting.** After any run
had stored a map, `--implementer` was inert; two runs were spent on a model
that had been explicitly replaced on the command line. The warning existed and
went to stdout, which is block-buffered into a pipe — so it arrived out of
order when it arrived, and was lost entirely when the process was killed.

It is a log line now, it names both models, and `--reroute` makes the command
line win. The second symptom is fixed too: a complete stored map no longer
refuses to start for want of flags it did not need, which had made the flags
simultaneously required and ignored.

**#148 — `plan --dry-run` demanded a GitHub repository** to answer a purely
local question. `--repo` is now optional under `--dry-run`, which prints the
items it parsed and stops.

**#149 — `verify:` accepted a test filter that matched nothing.** `cargo test
-p gateway secure_cookies` ran zero tests, exited 0, and adoption reported the
item as already delivered. The harness cannot tell that apart without reading
another ecosystem's output, and should not try — so this is documented, with
the failure shown, next to the sentence that promised exit 0 was evidence.

Docs: USAGE gains what headless does to your checkout, what the role flags
actually are, and how to write a `verify:` that fails when the work is absent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@thedancingdeveloper
thedancingdeveloper merged commit 879aff9 into main Aug 4, 2026
2 checks passed
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.

1 participant