Skip to content

Builder takeover: make provenance, labels, and reviewer exclusion handoff-aware #963

Description

@jeffhuber

Part of stabilization epic #979 and roadmap #900.

Part of roadmap #900. Follow-up from the v1.4.0 release dogfood in PR #959.

Problem

Current provenance and reviewer exclusion are centered on the PR opener, branch prefix, and one active builder label. During an explicit takeover this can become internally inconsistent: PR #959 remained authored on a Devin branch, the final repair commit came from Codex, the active label changed to builder:codex, and the Devin reviewer still excluded itself solely because Devin originally opened the PR.

The system needs a handoff-aware contributor model so builder recording, labels, review eligibility, Board status, and the gate describe the same exact-head history.

Outcome

Code Mower preserves ordered builder contribution episodes, exposes one current writer, and excludes every verified contributor to the current diff from satisfying its own independent review requirement.

Acceptance criteria

  • Persist a metadata-only handoff record binding repository, PR, branch, source lane, destination lane, expected head, and resulting head.
  • Preserve ordered source and takeover contribution episodes while exposing exactly one current writer.
  • Keep exactly one active builder label; a valid takeover preserves earlier builder history in provenance rather than erasing or contradicting it.
  • Builder auto-record, runner-recorded provenance, the gate, Board projection, and reviewer selection resolve the same exact-head builder lineage.
  • Reviewer exclusion uses verified contributors to the current diff. The PR opener alone is neither necessary nor sufficient; every contributing builder lane is excluded from gating its own work.
  • Direct reviewer wrappers, including Devin CLI, use the shared exclusion resolver instead of product-specific PR-author-only checks.
  • Conflicting author, branch, label, or provenance evidence without a valid handoff fails closed with a concise owner action.
  • A PR Prepare the v1.4.0 release and stop stale completions projecting complete #959-shaped regression with a Devin author and branch, explicit Codex takeover, and Codex final head records both contributors, identifies Codex as current writer, excludes Devin and Codex from self-gating, and accepts an independent Claude exact-head audit.
  • Public and cloud evidence remains metadata-only and contains no source, diffs, prompts, transcripts, paths, credentials, or provider output.

Boundaries

Reuse the reviewer-exclusion and provenance contracts from #293 and #296 plus explicit handoff evidence from #751. Do not grant review or merge authority through a handoff and do not infer contribution from provider prose.

Delivery

Three staged independently reviewable PRs (#990#991#992), each with one Code Mower builder, one independent exact-head merge-authority audit, focused adversarial regressions, privacy checks, and the normal Code Mower gate. This evidence-backed decomposition supersedes the original one-PR delivery requirement and the earlier work-order wording below.

Completion dependencies and PR map

Requires #962's verified handoff boundary and #975's role eligibility result; keep contributor independence a separate shared decision. The accepted #990 core and #991 producer used Code Mower Codex source with independent eligible Code Mower Claude review. The #992 source assignment is recorded before launch; all reviews exclude actual contributors. #949 and #977 consume this resolver; #951/#920 verify its behavior. Every verified contributor to the current diff remains excluded from satisfying its own required independent review. If no qualified eligible lane remains, fail closed with one owner action. Do not fix labels manually as the product completion criterion.

Convergence checkpoint and revised PR map

Draft #989 is unaccepted and preserved at 0706c53922f67168dfbb6d2a6493a031a9b0f205. A demonstrably complete audit of the preceding candidate found five P2s; its earlier nominal PASS was rejected because the reviewer admitted incomplete context. After the consolidated repair, a deterministic actual-consumer matrix found gate/status/controller/Board rejecting a configured branch conflict while both Greptile structural requeue failure paths still mutated labels when episodes were empty. The serial repair loop is stopped; no further repair round, full suite or audit is claimed for this head.

Reconstruct owning diffs from preserved #989 source and regressions rather than blindly replaying repair commits. Keep generated/package/tools mirrors with their owning stage. #989 is superseded implementation evidence and remains draft until replacement PRs exist; it never becomes an accepted prerequisite. #963 stays open until all three staged PRs and the final actual-consumer matrix pass on main. Graphify #982 waits for this accepted outcome, then refreshes once; #915 still verifies the candidate and published artifacts.

The checkpoint passed 1,111 tests and 1,410 subtests with one expected opt-in installed-Codex sandbox rehearsal skipped; Ruff/privacy/package guards/readiness and all remote package/containment CI passed. Those results do not override the confirmed no-mutation invariant failure. Provider spend is unavailable; configured caps are ceilings, not billed usage. No new hosted Devin create allowance.

#992's bounded same-Codex correction delivered draft #997 at 8ee4067e33d737765d0b68a870a42598f4852e04. Fresh broker qualification checkpoint records 3,741 canonical full tests with 16 skips, all affected and owning checks, verified actual candidate/legacy installed payloads, depth-one installed-artifact checks, guards, and all CI matrices passing. Independent Code Mower Claude review attempted this exact head but failed before model inference because local OAuth authentication expired; it remains INCOMPLETE, with no review completion label or merge. Local reauthentication is required before a separately authorized bounded exact-head review. The original correction checkpoint remains historical evidence. Two of three lineage stages and seven of eight stabilization outcomes remain accepted; Graphify #982 refresh and #915 publication follow full #963 acceptance.

Current qualification checkpoint

Local authentication was restored. A separately bounded independent Code Mower Claude review completed on 8ee4067e33d737765d0b68a870a42598f4852e04 with verified complete input coverage and one remaining P2; qualified review and broker disposition. The earlier authentication failure remains INCOMPLETE historical evidence. Contract tracing narrowed the actionable regression to Devin’s public UNKNOWN/needs diagnostic for new lineage refusals; all CLIs already catch refusals and return nonzero, and no broad Codex/Claude rewrite is justified.

One bounded correction is running in the same Code Mower Codex session, restricted to the Devin wrapper, its owning/public-boundary tests and package manifest. No new hosted Devin create is authorized. The delivered head will require fresh exact-head qualification and independent review; the 3,741 passing tests and CI on 8ee do not override this P2. Draft #997 remains unmerged. Two of three #963 stages and seven of eight #979 outcomes remain accepted. Graphify #982 refresh follows full #963 acceptance, then #915 verifies actual release artifacts, installation, publication and closeout.

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

    contract-firstRequires product/data/merge contract agreement before dependent work mergesenhancementNew feature or requesttier:RCode Mower generated label

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions