Skip to content

fix(pr-pipeline): align every needs-human path with the owner stop rule #10517

Open

Description

@kyle-sexton

Refs: #10516

Problem

#10516 records the owner's stop rule in one place (docs/conventions/loop-lane/README.md, "When work stops for the owner"): work stops for the owner only for an intent/vision change, an implementation finding that alters intent or the primary design, or a HIGH/CRITICAL security issue; any other hand-off is a defect. Its inventory found code paths that still hand work to a person for other reasons. Each needs a decision: align it, or record why it is a trust control the rule keeps.

Paths found (from the #10516 inventory)

  • Cost holds: intake triage's COST rule (cost flag + needs-human) and merge-holds.mjs costHold as a person reason in enable-auto-merge and babysit_risk.person_reasons (in progress: poteto's fix/cost-hold-real-charges-only).
  • babysit_risk.person_reasons escalates only a CRITICAL security finding; the rule says HIGH or CRITICAL.
  • Other person_reasons: a high path (floor, denied or aliasing path), a trusted-actor widening, a file listing too long to check.
  • The issue lane's research-first, probe-first and split-required skips add needs-human.
  • work-resolve-issue/report-outcome.mjs hands patch escalations (patch-protected-path, patch-invalid, the other PATCH_REASONS) to a person.
  • Post-merge demotion, post-merge-failure and suite-quarantine issues are labelled needs-human.
  • A failed red-main auto-revert guard labels the draft revert PR needs-human.
  • Review rounds hand off on "Unsure: escalate", on a claude[bot] finding with no lane footer, and on feedback-not-converging.
  • Five escalation classes in plugins/autonomy/reference/guardrails.md#escalation that loop-lane §2 still requires (gate-failure, verification-divergence, admission-rejection, demotion, structural-plan-approval).
  • verify:repeated-fail and verify:too-old carry no label but never clear, so such a PR never merges unattended.
  • Intake sends text addressed to the triage run (an injection attempt) to a person: a trust control, but not one of the three reasons as written.

Kept as owner-held security controls: the untrusted-provenance hold and verify:untrusted-spec.

Acceptance criteria

  • Each path above either routes to a lane (no needs-human) or is named in the "When work stops for the owner" section as a kept trust control, with its reason.
  • A test or check per changed path shows the new routing.
  • No HIGH/CRITICAL security path is loosened without a security-review pass at the head.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 27, 2026
  2. github-actions commented on Oct 27, 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: intent
    Blocked by: none

    I understood this as a follow-up to #10516: eleven code paths still hand work to a person for reasons outside the owner stop rule. Each must either be routed to a lane or be recorded as a kept trust control. The issue lists the paths but does not choose an outcome for any of them. It also spans several subsystems, so it needs splitting. #10076 and #9578 touch related needs-human paths and may overlap. They are not duplicates.

    Open questions:

    1. For each listed path, should it be routed to a lane or kept as a named trust control? RECOMMENDED: route the operational paths (demotion/quarantine issues, review-round hand-offs, patch escalations, issue-lane skips). Keep the injection-attempt hold and the HIGH-severity security paths as named trust controls. Basis: the stop rule allows only intent changes and HIGH/CRITICAL security.
    2. Should babysit_risk.person_reasons escalate HIGH as well as CRITICAL security findings? RECOMMENDED: yes, as the rule says. Basis: the rule text, and the acceptance criteria require a security-review pass.

    To answer, post a comment that starts with this line:

    **Decision recorded.** <answer>
    

    Automated triage, applied by the lanes App.

  3. melodic-automation-lanes commented on Oct 27, 2026

    @melodic-automation-lanes
    Contributor

    The triage verdict left this issue at status: needs-decision:

    • flagged: intent
    • held by status: needs-decision
    • no lanes App verdict comment shows whether an earlier verdict was flagged
  4. added
    work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 27, 2026
  5. melodic-automation-lanes commented on Oct 27, 2026

    @melodic-automation-lanes
    Contributor

    Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.

    Intended outcome: Each of the eleven needs-human paths is either routed to a lane or named as a kept trust control in the owner stop rule section, with a routing test per changed path.

    Dependencies

    • #​10516: the 'When work stops for the owner' section in docs/conventions/loop-lane/README.md is not in the checkout yet, so there is no recorded rule to align to or to add kept controls to
    • #​10076: re-running review lanes on lane-source-changed overlaps the review-round hand-off path

    Related work

    Open questions

    1. Is this one issue, or should it be split into one issue per subsystem (cost holds, babysit_risk person_reasons, issue-lane skips, report-outcome patch escalations, post-merge/red-main issues, review rounds, guardrails escalation classes, verify:repeated-fail/too-old, intake injection hold)?
      RECOMMENDED: Split by subsystem; the single issue is Large/High with eleven independent decisions and an acceptance test per path. Basis: judgment
    2. Should babysit_risk.person_reasons escalate HIGH as well as CRITICAL security findings?
      RECOMMENDED: Yes, as the stop rule says HIGH/CRITICAL; the change needs a security-review pass at the head per the acceptance criteria. Basis: docs/conventions/pr-pipeline/README.md:1090
    3. Which paths are kept trust controls rather than routed: the intake injection-attempt hold, and the high-path, trusted-actor-widening and file-listing-too-long person_reasons?
      RECOMMENDED: Keep the injection hold and the high-path/trusted-actor-widening reasons as named trust controls; route the too-long file listing to a lane (retry or chunked check). Basis: judgment
    4. For the cost holds, does this issue wait for poteto's fix/cost-hold-real-charges-only work, or take the cost item over?
      RECOMMENDED: Wait for that branch and exclude the cost item here until it merges. Basis: judgment
    5. Where should the five guardrails.md escalation classes and verify:repeated-fail/too-old go: a lane route, or an amended loop-lane §2?
      RECOMMENDED: Route each to a lane and amend loop-lane §2 and guardrails.md#escalation to match, once #​10516 lands. Basis: judgment

    Sources read

    • /home/runner/work/_temp/refine-data/context.json: issue body, intake triage and candidates
    • docs/conventions/pr-pipeline/README.md:1090: babysit_risk.person_reasons lists a CRITICAL security finding, a high path and other person reasons
    • plugins/source-control/skills/babysit-prs/scripts/tests/test_babysit_risk.py:1518: existing test for person_reasons
    • docs/conventions/loop-lane/README.md: no 'When work stops for the owner' section found in the checkout

    To answer, post a comment that starts with this line:

    **Decision recorded.** <answer>
    

    Automated refinement by the lanes App. Answer with a comment whose first line is **Decision recorded.**.

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

    priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions