Skip to content

source-control: PR pipeline states, review venue, findings lane and statuses #7576

Open
11 of 15 issues completed
Open

Description

@kyle-sexton

Parent

Refs #7555. Source: PLAN Phase 8, topic poteto-review. Thread: PR pipeline (source-control; save
point, draft, ready, statuses, review venue, merge queue), except its merge setups, which the Merge
authority thread carries.

Depends on

Outcome

Each PR follows one sequence: prep once, open ready, one AI review in CI, a findings lane fixes
accepted findings, deterministic checks plus changed-files review on each fix push, the verifier's
verdict on the final head, then merge.

Decisions

  • PR states: save point = commits pushed, no PR; draft only on request or as a multi-session
    container; ready = complete and through local gates; setting pr_open_state default ready; the
    AGENTS.md draft section is replaced by this rule (D75, Q501; owner chose ready with Matt).
    Unfinished multi-session skills are draft containers (Q585). PRs from earlier threads open as
    drafts until slice a merges.
  • One sequence per PR: prep once (format, lint, markdown cleanup, tests, local gates), open ready, one
    whole AI review in CI, findings lane fixes accepted findings, each fix push gets deterministic
    checks plus changed-files review, verifier verdict on the final head, merge queue. CI fix-docs
    off (D100, Q158). Fixed floor: a model step on synchronize reviews only changed files.
  • Setting review_venue (auto/local/ci/both, default auto): one venue per PR;
    blocking-only after the first review; fix rounds capped at 3; open security, auth or data findings
    escalate (D75, Q500). Settings: review nit handling follow-up-issue; findings-lane turn cap
    judgment until measured.
  • Findings lane on workflow_run of the review lanes, turn cap and escalation; every finding vetted
    with context; a harmless nit becomes a follow-up issue blocked by the PR (D75, Q512). It reconciles
    with the existing pr-feedback-dispatch.yml lane rather than adding one.
  • PR template ## Merge danger (Door, Blast radius; door pre-filled from HIGH_FLOOR; Risk folded
    in), written by a separate evaluating agent; optional in the org template first (D88, Q519;
    Matt's). Deny list stays with a reason per entry; risk is a reading order, never a gate (D72,
    Q78).
  • Shipping order: a pre_ready: step list with enabled flags in the source-control convention,
    read at the base branch, reported step by step on ready; writers before readers, verification last
    (D73, D77, Q504, Q507; Lauren's configurable, auditable shipping order).
  • Run-once statuses: GITHUB_TOKEN statuses that skip nothing; patch-id promise deleted;
    statuses: write on the work-lane report job stands (D73, D92, Q118, Q120).
  • Routines and lanes open ready PRs and never merge; only the merge lane merges; overridable by
    config or a routine's prompt (D57, D75, Q91).
  • Operator review thread = instruction to implement (interview first if intent is unclear); a wait
    or hold thread is a hold; neither is merge approval (D77, Q503, Q104).
  • /source-control:resolve-conflicts removed; the lane resolves conflicts after reading both sides'
    intent (a step in /source-control:pull-request's base-merge step), escalating only when both
    intents cannot hold; no message into a live session (D109, Q541, Q568). The base-merge step lands
    before the removal; pr-unblock tests update in the same slice.
  • PR body: prose plus at most one code-shape view (setting PR body code view auto); a fix or new
    behavior states its check result before and after (fixed floor; combined: Matt for fixes,
    Lauren for the rest), other changes give 1-3 run-path bullets; glossary terms (D109, Q523, Q536,
    Q574).
  • A revert ships as a new patch version (Q90).

Key interfaces

From the design's contracts, "Settings": "review_venue: auto (auto/local/ci/both),
repo. pr_open_state: ready, repo. pre_ready: step list with enabled flags in the
source-control convention, read at the base branch." "Review: nit handling follow-up-issue;
fix-round cap 3; blocking-only after first review; findings-lane turn cap judgment until
measured." "Other": "Marker comment TODO(#n); PR template section ## Merge danger (Door, Blast
radius)."

Variation verdicts: "Review venue: contain now; source-control review_venue setting; abstract-now
not chosen by owner (Q500)."

Conventions followed: ADR 0049, the source-control and pr-pipeline conventions.

Slices, filed when this phase starts: pr-states, review-venue-and-findings-lane,
pre-ready-and-statuses, merge-danger, and the base-merge-then-remove-resolve-conflicts slice.

Done when

  • The resolve-conflicts skill directory is gone and
    rg -n 'source-control:resolve-conflicts' plugins docs .github --glob '!**/CHANGELOG.md' --glob '!.changes/**'
    finds nothing.
  • rg -c '^## Open a pull request as a draft' AGENTS.md returns 0 (1 on main) and
    node --test '.github/scripts/pr-unblock/*.test.mjs' exits 0.
  • Every slice sub-issue is closed by a merged PR.

Out of scope

  • Merge setups and the verifier (Merge authority thread).
  • The org PR template in melodic-software/.github (another repository: owner stop).

Related

Activity

  1. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 16, 2026
  2. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: structural
    Basis: automated intake triage; the lanes App applied this class.

    Size: Large
    Complexity: High
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Understood: this is the PR-pipeline thread for source-control. It covers PR states, the review_venue and pr_open_state settings, the findings lane, run-once statuses, the pre_ready: step list, and removing /source-control:resolve-conflicts. The decisions are recorded in the body, so I found no open intent question.

    The work is too big for one change and is meant to be split into the five slices it names. The body lists #7571 and several Phase 2 issues as dependencies. None of them appear in the newest-200 open-issues list I was given, so I couldn't confirm they are open and left Blocked by as none. Please set the real blocked-by edges when the slices are filed. I found no likely duplicates.

    Automated triage, applied by the lanes App.

  3. changed the issue type fromtoon Oct 16, 2026
  4. changed the issue type fromtoon Oct 16, 2026
  5. 21 remaining items

  6. removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 24, 2026
  7. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.

    To hold this issue again, add needs-human (or status: needs-decision) and say why in a comment.

  8. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  9. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 24, 2026
  10. melodic-automation-lanes commented on Oct 24, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane yet: Size large: the split into sub-issues at intake is pending (owner Q93).

  11. melodic-automation-lanes commented on Oct 24, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: the issue is at status: ready.

  12. kyle-sexton commented on Oct 26, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.

    To hold this issue again, add needs-human (or status: needs-decision) and say why in a comment.

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

    needs-specNeeds a Brief or plan before anyone can build it.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.

    Fields

    Work status

    needs-spec

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions