Skip to content

Epic: v0.6.0-beta.3 adoption hardening #478

Description

@jeffhuber

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. The first setup PR cannot be fully self-gated until workflows exist on default; the docs should say that plainly.
  7. 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.
  8. 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:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestv0.6Code Mower v0.6 release line

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions