Repository navigation
Epic: v1.7.0 single-tenant always-on Code Mower Operator #1096
Description
Goal
Ship a single-tenant, continuously running Code Mower Operator that can be shared by a small team and continue supervised work while developer laptops are offline. Codex and Claude are initial qualified supervisors; Devin is an explicit full-peer target under the same evidence-based qualification contract.
Depends on completing the operational-clarity and minimum-telemetry boundary in #1066. Contract drafting may begin earlier, but active Operator mutation and release qualification must consume the released v1.6 contracts.
Dependency map
Contract first
- v1.7.0 contract: freeze Operator authority, state, recovery, and privacy #1085 — authority, state machine, storage, budgets, recovery, provider capability, and privacy contract
Foundation after the contract; parallel where file ownership permits
- v1.7.0 runtime: package the Linux container and doctor --container #1086 — reproducible non-root Linux container, Compose pilot, Linux runner parity, and
doctor --container - v1.7.0 persistence: durable store, singleton lease, and restart recovery #1087 — durable store, singleton lease, fencing, idempotency, migration, and restart recovery
- v1.7.0 identity: GitHub App service credentials and event reconciliation #1088 — GitHub App service identity plus polling/webhook reconciliation
- v1.7.0 visibility: private remote Board and Operator lifecycle projection #1089 — private remote Board and Operator lifecycle projection
ACP lane transport; after contract alignment, alongside foundations
- Epic: v1.7 ACP builder and reviewer integration #1114 - ACP integration epic: four implementation PRs for a shared client, validated results/Board events, Factory Droid and Qwen pilots, and pinned registry onboarding.
- v1.7 ACP: shared Python client and capability negotiation #1115 - shared Python ACP v1 client and capability negotiation; align first with v1.7.0 contract: freeze Operator authority, state, recovery, and privacy #1085 / PR Freeze the v1.7 Operator contract #1101.
- v1.7 ACP: validated results and sanitized Board telemetry #1116 - validated Code Mower results and sanitized Board/usage events; depends on v1.7 ACP: shared Python client and capability negotiation #1115.
- v1.7 ACP: Factory Droid and Qwen compatibility pilots #1117 - bounded Factory Droid and Qwen builder/informational-reviewer pilots; depends on v1.7 ACP: shared Python client and capability negotiation #1115 and v1.7 ACP: validated results and sanitized Board telemetry #1116.
- v1.7 ACP: pinned registry onboarding and doctor checks #1118 - pinned registry onboarding and selected-profile doctor; parsing/docs can overlap v1.7 ACP: validated results and sanitized Board telemetry #1116, final tested profiles consume v1.7 ACP: Factory Droid and Qwen compatibility pilots #1117.
ACP may progress in parallel with #1086-#1089 once the shared contract is stable and file ownership is assigned. It is an optional builder/reviewer transport; the Operator's shadow and active milestones continue to use their qualified native transports. Factory and Qwen compatibility does not promote them as orchestrators or merge-authority reviewers. When included in the v1.7 package, #1095 verifies enabled and disabled ACP postures plus retained pilot evidence. Do not change the already retained v1.6 candidate.
Runtime; serial promotion from observation to mutation
- v1.7.0 shadow: run the persistent Operator in observe-only mode #1090 —
operator run --onceand continuously running observe-only service, followed by one-week shadow soak - v1.7.0 active: bounded supervised dispatch, review, and escalation #1091 — bounded supervised dispatch, exact-head review/fix rounds, Slack owner escalation, and manual-merge pilot
Provider qualification; parallel after runtime contracts stabilize
- v1.7.0 providers: qualify Codex and Claude service-mode supervisors #1092 — interchangeable Codex and Claude service-mode supervisors
- v1.7.0 Devin: package deterministic CLI and hosted transports #1093 — packaged deterministic Devin CLI/hosted transport
- v1.7.0 Devin: qualify full-peer orchestration, building, and review #1094 — evidence-based Devin promotion to peer orchestrator, builder, and reviewer
Serial release
- v1.7.0 release: qualify the supervised single-tenant Operator #1095 — closed-laptop pilot, failure injection, docs, immutable qualification, publication, and rollback
Product boundary
- Single tenant and repository allowlist; not a multi-tenant hosted control plane.
- Private Board access through an authenticated ingress; Board remains loopback/private by default.
- GitHub App/service credentials replace shared personal PATs in the standard deployment.
- Metadata-only telemetry; no source, diffs, prompts, transcripts, issue bodies, private messages, raw output, credentials, or personal paths.
- Supervised operation with human merge approval by default.
- Provider capability and authority are versioned policy backed by evidence, not permanent provider-name exclusions.
Explicit deferrals
- OpenAI Agents API may be evaluated later as an alternate Codex transport behind the provider adapter; it is not an architectural dependency.
- Git AI may later enrich provenance and productivity events; it is not required for reliable operation.
- Factory Droid and Qwen receive bounded ACP builder/informational-reviewer pilots in Epic: v1.7 ACP builder and reviewer integration #1114. Broader agent qualification and orchestrator/merge promotion follow independent evidence; other ACP agents can use the onboarding recipe after compatibility checks.
- Quota-aware routing waits for reliable cross-provider usage and settlement data.
Delivery rules
- One issue and one writer per PR.
- Contract-first issues merge before dependent runtime work.
- Parallel PRs must have explicit file/schema ownership and rebase before exact-head review.
- Every behavior change includes focused tests and canonical documentation.
- Every changed head receives an independent eligible review; resolve all P0/P1/P2 findings.
- Active mutation, provider promotion, and release are serial decisions.
- Live credentials, infrastructure, and mutation canaries remain owner-controlled.
Activity
jeffhuber commentedon Sep 21, 2026
Orchestration update — contract track started
#1085 was dispatched to Claude through Code Mower run 35569511308. Its work order is restricted to versioned authority/state/recovery/privacy schemas, canonical fixtures, tests, threat/authority notes, and canonical documentation. It must not implement an Operator loop, active mutation, container runtime, GitHub App mutations, remote Board ingress, or cloud schema changes.
This PR is intentionally isolated from the three active v1.6 writers. The foundation issues #1086–#1089 remain undispatched until #1085 stabilizes its contract and their exact file/schema ownership can be assigned. Observe-only runtime, mutation, provider promotion, and release work remain gated in the epic's stated order.
jeffhuber commentedon Oct 13, 2026
Orchestration update — ACP queue activated
The ACP queue is now owned by the Code Mower roadmap orchestrator under the four-PR sequence in this epic.
Current dependency state:
codex/1085-operator-contractwriter lane has been reacquired at head531c4530680e53fcf9855a4e6aef4ac2cc2f6f54; it is being reconciled with currentmainwithout changing approved contract semantics.The retained v1.6.0 candidate at
ac585cb65ab910a48866ae784e09dab193dc8ec6remains untouched. GitHub and PyPI still publish v1.5.2, so ACP work is confined to isolated v1.7 worktrees and will not be merged into or rebuild that candidate.A fresh local Board snapshot was recorded with Code Mower v1.6.0. It identifies PR #1101 as rebase-needed/stale-audit and shows no active local lane process before this takeover. Public/cloud reporting remains metadata-only; no ACP payloads or private content have been emitted.
jeffhuber commentedon Oct 13, 2026
Orchestration update — contract ready, held behind v1.6 publication
PR #1101 / #1085 is now rebased onto the retained v1.6 source and technically ready at exact head
ed154fb1b2eb4dcb2e924271d90ea339559f1345.code-mower/gate: green after rerunning the transient label-snapshot race.The PR remains draft and intentionally unmerged until the already-retained v1.6.0 candidate at
ac585cb65ab910a48866ae784e09dab193dc8ec6completes its live Slack canary, privacy/control checks, 24-hour soak, and exact-artifact publication. This preserves the candidate boundary; no rebuild is currently indicated.The read-only #1115 alignment is complete. Its file ownership, optional ACP v1 SDK boundary, bounded stdio transport, capability negotiation, permission broker, fixture matrix, and conflict boundaries are defined. No writer or ACP branch will be opened until #1101 is merged into post-v1.6
main.Current queue:
main.Public and cloud reporting remains metadata-only. No ACP prompts, source, diffs, paths, tool arguments, raw output, or credentials are emitted.