Follow-up epic from the post-v0.6.0-beta.2 cold-repo adoption rehearsal.
Goal: make a senior engineer adopting Code Mower cold feel confident from install through the first informational pilot PR, without needing repo-author tribal knowledge.
Rehearsal evidence:
- Fresh private toy repo: jeffhuber/code-mower-adoption-rehearsal-20260901.
- Installed code-mower==0.6.0b2 in a clean Python 3.12 venv and verified the version.
- Ran init --easy dry-run and apply, installed generated files, set required GitHub secrets, merged the initial setup PR, and drove one tiny follow-up PR through the reviewer loop.
- The dispatcher worked after DISPATCH_TOKEN was set.
- lanes status was useful and metadata-only.
- The tiny PR reached a green code-mower/gate status and was merged after configuring trusted audit author state.
Problems found:
- doctor --preflight does not accept --repo even though lanes status does, and with no committed code-mower.yml it fell back to the packaged owner/example config. That is surprising in a real repo checkout.
- init --easy generated support files but no obvious committed code-mower.yml for the operator to edit, so owner_login and decision-authority setup remained implicit.
- Manual audit comments from the human operator were not trusted until CLAUDE_AUDIT_BOT_AUTHORS was configured; the setup flow should make that variable and its purpose obvious.
- Generated run_claude_audit_pr.sh was not immediately usable from a package-install adoption because tools/code_mower_standalone_pin.env still had standalone placeholder values. The installed CLI path worked, but the generated wrapper failure was terse for a cold user.
- smoke-tests.sh produced useful signal but also wrote pycache locally; generated setup should avoid making the first PR look dirty or should include the ignore pattern.
- The first setup PR cannot be fully self-gated until workflows exist on default; the docs should say that plainly.
- Gate workflow_dispatch input is pr_number/head_sha, which is fine but easy to mistype; docs and lanes status next-action hints should make reruns copy-pasteable.
- Auto-merge warning is expected in pilot repos without allow_auto_merge/branch protection, but the message should point to the promotion docs so it does not feel like a failure.
Scope for this epic:
- Add doctor --adoption or equivalent adoption-mode checks that validate the actual repo, owner_login, trusted audit authors, required secrets/variables, runner readiness, first-PR expectations, and promotion posture.
- Make doctor command shape consistent with lanes status, especially --repo OWNER/REPO.
- Ensure init --easy gives operators an editable local config or a clear next step for owner_login, decision_authorities, and trusted audit authors.
- Improve generated wrapper/pin guidance so package-installed users know whether to use installed code-mower or standalone shadow mode.
- Keep generated smoke tests clean and concise.
- Add a sample orchestrator prompt pack for Claude Code, Codex, Cursor/Grok Bot, Antigravity, and Devin roles.
- Consider a CodeMower.com view that mirrors code-mower lanes status, metadata-only.
Acceptance criteria:
- A fresh repo can run install, init --easy, doctor --preflight/doctor --adoption, lanes status, and one tiny informational PR loop with no undocumented steps.
- All token, runner, and trusted-author requirements are named without exposing secrets.
- The pilot vs promoted merge-gate posture is obvious in CLI output and docs.
- No privacy boundary changes: metadata only; no source, diffs, transcripts, issue body text, raw stdout/stderr, auth output, or secrets.
- Each behavior change lands in one small PR with tests and docs.
References:
Follow-up epic from the post-v0.6.0-beta.2 cold-repo adoption rehearsal.
Goal: make a senior engineer adopting Code Mower cold feel confident from install through the first informational pilot PR, without needing repo-author tribal knowledge.
Rehearsal evidence:
Problems found:
Scope for this epic:
Acceptance criteria:
References: