Skip to content

Epic: v1.7 ACP builder and reviewer integration #1114

Open

Description

@jeffhuber

Goal

Add a maintained Agent Client Protocol (ACP) transport so compatible builders and reviewers can be integrated through a shared client and small agent descriptors. Keep Code Mower's validated delivery/review results, provider identities, contributor exclusion, leases, recovery, and qualification as the controlling contracts.

Part of the v1.7 Operator roadmap #1096. Coordinate with #1085 / PR #1101 before changing shared provider or Operator interfaces. ACP is an optional lane transport and can proceed alongside the Operator foundations after the shared contract is stable. Existing qualified native CLI and hosted API paths remain available.

Four implementation PRs

Dependencies and parallelism

Integration boundary

Use stable ACP v1 over stdio and the maintained Python SDK. Negotiate capabilities and keep version-specific code isolated; draft v2 and remote ACP transports are deferred.

Product, selected model, adapter version, transport, execution substrate, role, and qualification are distinct. For example: product Factory Droid; transport ACP; execution Docker sandbox; role informational reviewer. Do not collapse every agent into provider=acp or silently reuse another provider's labels/qualification.

The first compatible agents are Factory Droid and Qwen Code. Poolside, Cortex Code, MiniMax Code, and Kimi are follow-on descriptor/qualification candidates using the same client. ACP's listed Muse Spark Code is unofficial and does not establish support in Meta's official Muse CLI; retain the existing Muse transport pending verification.

Acceptance

  • One maintained optional ACP transport supports fixture-tested builder and reviewer calls.
  • Factory Droid and Qwen produce valid revision-bound results in supervised, bounded pilots; reviewers remain informational.
  • ACP end-of-turn is never interpreted as delivery success or a PASS verdict without Code Mower validation.
  • Fresh review context, contributor exclusion, exact commit identity, existing gate semantics, and lease/reconciliation rules are preserved.
  • Sanitized tool lifecycle/wait/cancel/completion events are useful in Board.
  • Unavailable cost/token/model data is explicitly unknown, not zero or inferred from context-window size.
  • Registry onboarding locks agent/adapter versions and tested capability profiles; drift prompts compatibility checks.
  • Default installs and generated workflows for existing providers continue to pass.
  • Canonical provider, install/update, Board, and troubleshooting guidance describes the supported path and limitations.

Privacy and execution

ACP carries messages, reasoning, diffs, paths, tool arguments, and raw output. Keep those out of public status and cloud telemetry. Use allowlisted categories/counts/timestamps and existing accepted metadata shapes. ACP permission callbacks are policy plumbing, not an operating-system sandbox: execution isolation, network access, credentials, and write authority remain controlled by Code Mower and the selected runner.

Live pilot credentials and paid calls require established owner authorization and an explicit campaign-wide cap. No automatic paid retries, automatic registry installation, or automatic promotion is introduced.

References

Delivery

One issue per PR and one writer per branch. Prefer diffs of 300 lines or fewer where practical; keep larger protocol/test work tightly scoped and explain it in the PR. Record the named builder, actual agent/model/transport provenance, focused tests, and a canonical documentation update for every behavior change. Obtain an independent eligible Code Mower review against the current commit, resolve all P0/P1/P2 findings, and pass normal CI plus code-mower/gate. Record safe activity in Board and upload only approved metadata through the existing dry-run-first cloud flow. A new transport or passing protocol probe grants no review or merge authority.

Activity

  1. added
    epicEpic tracking issue
    contract-firstRequires product/data/merge contract agreement before dependent work merges
    v1.7Code Mower v1.7 single-tenant Operator
    on Oct 13, 2026
  2. jeffhuber commented on Oct 13, 2026

    @jeffhuber
    ContributorAuthor

    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:

    The retained v1.6.0 candidate at ac585cb65ab910a48866ae784e09dab193dc8ec6 remains 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.

  3. jeffhuber commented on Oct 13, 2026

    @jeffhuber
    ContributorAuthor

    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.

    • Independent exact-head Claude audit: PASS.
    • Python 3.12, 3.13, and 3.14 package matrices: green.
    • Release-wheel, package, graph-containment, Board-qualification, and supporting checks: green.
    • code-mower/gate: green after rerunning the transient label-snapshot race.
    • GitHub merge state: clean.

    The PR remains draft and intentionally unmerged until the already-retained v1.6.0 candidate at ac585cb65ab910a48866ae784e09dab193dc8ec6 completes 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:

    1. Complete and publish v1.6.0 from the retained artifacts.
    2. Mark Freeze the v1.7 Operator contract #1101 ready and merge its exact audited head.
    3. Branch and dispatch v1.7 ACP: shared Python client and capability negotiation #1115 from that resulting main.
    4. Begin v1.7 ACP: validated results and sanitized Board telemetry #1116 after v1.7 ACP: shared Python client and capability negotiation #1115; prepare only non-conflicting v1.7 ACP: pinned registry onboarding and doctor checks #1118 parsing/docs work in parallel.
    5. Run v1.7 ACP: Factory Droid and Qwen compatibility pilots #1117 Factory/Qwen pilots only after v1.7 ACP: shared Python client and capability negotiation #1115/v1.7 ACP: validated results and sanitized Board telemetry #1116 and under explicit credential/model/repository and campaign-spend authorization.

    Public and cloud reporting remains metadata-only. No ACP prompts, source, diffs, paths, tool arguments, raw output, or credentials are emitted.

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

    contract-firstRequires product/data/merge contract agreement before dependent work mergesepicEpic tracking issuev1.7Code Mower v1.7 single-tenant Operator

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions