Skip to content

Lineage stage 3: converge admission, status and label mutations atomically #992

Description

@jeffhuber

Part of #963, stabilization epic #979, and roadmap #900. Depends on accepted #990 (pure contract) and #991 (trusted delivery/publication). Replaces the admission/projection portion of unaccepted draft PR #989.

Problem and outcome

Every consumer must resolve the same exact-head contribution history and enforce admission before provider execution or label mutation. The convergence checkpoint found gate/status/controller/Board rejecting a configured branch conflict while Greptile structural requeue still mutated labels when episodes were empty.

Scope

  • Direct Codex/Claude/Devin reviewer wrappers, including legacy Devin entrypoint, use one shared contributor-excluded admission decision before launch.
  • Actual gate and both generated/package templates validate raw authoritative history before flattening/filtering; preserve current-head review and independent authority policy.
  • SaaS/trailer/Greptile labeler entrypoints (check_run, live/replayed issue_comment and pull_request_review) carry the fetched exact head/branch and complete trusted history.
  • All label mutation paths, including structural requeue and failure paths, require resolved eligible lineage first, regardless of episode count.
  • Status/controller/Board and setup-rendered contracts preserve configured branch provenance and canonical identity semantics; informational versus merge-authority review stays separate.
  • Complete canonical/tools/template/package mirror and import/materialization parity.
  • Activate automatic runner publication/label reconciliation only in this final integration stage, after every consumer is wired to the accepted contract; maintained runner and both template/package copies move together.
  • Activate delivery reconciliation and consumer admission atomically, including both Greptile structural failure paths on configured branch conflict with zero episodes. Episode presence is never a substitute for a resolved full decision.

Deterministic consumer matrix

Consume the eventually accepted #994 typed core and #991 producer adapters. Every exact route constructs one validated Target, preserves declared Identity/Authorities, validates raw History, combines raw arrivals once into a bound Chain, then uses the full resolve/admit decision. Core status ready must be translated deliberately if a legacy projection retains resolved; episode presence and current-writer fields never substitute for readiness. Keep I/O outside the pure core and reuse the already pinned trusted base. Activate all automatic runner/CLI publication and label transitions together with consumer admission, including maintained, generated and package copies.

Map every entrypoint to exact target binding, raw transport validation, configured branch conflict, ordinary matched/custom/no-contract controls, valid verified takeover/continuation, contributor exclusion, no-independent-reviewer owner action, and admission-before-side-effect. Include malformed/null/optional field controls, ambiguous/empty markers, 32-step cumulative history, semantic publication readback consumption, and normal single-builder behavior. Actual entrypoints are required; lower-helper tests alone do not prove composition.

Preserve both confirmed Greptile pull_request_review failure paths as real entrypoint tests: missing review ID and inline-comment fetch failure with required review comments. With a configured codex/ branch policy, branch codex/topic, builder:claude, an unmapped opener and genuine empty history, assert conflict and zero added or removed labels, including existing done/blocked labels. Compare the same fixture through gate and status/controller/Board; matched, custom-prefix and no-contract controls must retain valid behavior. No if episodes exemption.

Acceptance and Code Mower delivery

One isolated Code Mower Claude writer, one draft child PR using Refs #963, qualified independent exact-head Codex review with demonstrable complete diff/source coverage, no unresolved P0/P1/P2, deterministic matrix, exact unittest discovery, focused/Ruff/privacy/package checks, full CI and authoritative gate. No hosted Devin create allowance. #963 closes only after all three staged PRs are accepted and the shared outcome matrix passes on final main; #915 still verifies actual release artifacts and publication.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions