Skip to content

fix\(pr-pipeline\): align every needs-human path with the owner stop rule - part 1 of 6 #11019

Description

@melodic-automation-lanes

Part 1 of 6 of #10517, split at intake (owner Q93). The done-when below is copied from #10517 as written.

Done when

  • 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).
  • Intake admission's charge words and pr-merge costHold hold only for a charge that README:331 names. A test shows that text naming model usage on the subscription login (for example "runs on the subscription login") is not held, and that a plan or seat change, or a paid subscription purchase, still is.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 29, 2026
  2. github-actions commented on Oct 29, 2026

    @github-actions
    Contributor

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

    Size: Medium
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Decision recorded. The admission charge hold on this issue is a false positive (#11019 (comment)). The work adds no charge. It aligns the cost holds with the owner's own cost definition, quoted verbatim in docs/conventions/loop-lane/README.md:331-338, and model usage on the subscription login is "Not cost, so spend it freely". The words that tripped the rule ("subscription", "seat") are test examples: one of something that must not be held, and one of something that still is.

    This is the very defect part 2 fixes. Admission reads only the title and body (.github/scripts/intake-triage/admit.mjs:971), and it drops inline code spans first (plugins/work-items/scripts/charge-words.json, code).

    [quote truncated; the full decision is at the link]
    #11019 (comment)

    The decision settles the open questions: the charge hold was a false positive, and the lane checks the remaining cost-hold work (intake's COST rule, and costHold as a person reason in enable-auto-merge and person_reasons) against main. Parts 2 to 6 (#11020 to #11024) are sibling splits of #10517, not duplicates.

    Automated triage, applied by the lanes App.

  3. added
    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 29, 2026
  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    on Oct 29, 2026
  5. melodic-automation-lanes commented on Oct 29, 2026

    @melodic-automation-lanes
    ContributorAuthor

    Not admitted to the issue lane: its title or body names a charge (subscription, seat), which needs an owner decision. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  6. melodic-automation-lanes commented on Oct 29, 2026

    @melodic-automation-lanes
    ContributorAuthor

    The latest triage verdict holds nothing: admission moved the issue to status: needs-decision; its comment says why.

  7. kyle-sexton commented on Oct 29, 2026

    @kyle-sexton
    Member

    Decision recorded. The admission charge hold on this issue is a false positive (#11019 (comment)). The work adds no charge. It aligns the cost holds with the owner's own cost definition, quoted verbatim in docs/conventions/loop-lane/README.md:331-338, and model usage on the subscription login is "Not cost, so spend it freely". The words that tripped the rule ("subscription", "seat") are test examples: one of something that must not be held, and one of something that still is.

    This is the very defect part 2 fixes. Admission reads only the title and body (.github/scripts/intake-triage/admit.mjs:971), and it drops inline code spans first (plugins/work-items/scripts/charge-words.json, code). So the example phrases in the body go in code spans: runs on the subscription login, plan or seat change, paid subscription purchase. The issue then goes back through intake. No criterion changes meaning.

    Part of criterion 1 has landed on main: the babysit cost hold holds only a real new charge (f9c2695, #10525; d695a5a, #10866). The branch named in the body is not on the remote. The lane checks what is left (intake's COST rule, and costHold as a person reason in enable-auto-merge and person_reasons) against main and does only that.

    • 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. (body, amended: the "in progress" note is dropped because the babysit side landed in fix(babysit-prs): hold cost only for a real new charge #10525/fix(source-control): stop holding non-billing model and timeout changes as cost #10866, and the lane does what main still lacks)
    • Intake admission's charge words and pr-merge costHold hold only for a charge that docs/conventions/loop-lane/README.md:336 names. A test shows that text naming model usage on the subscription login (for example runs on the subscription login) is not held, and that a plan or seat change, or a paid subscription purchase, still is. (body, amended: the example phrases are now in code spans so admission's charge-word check skips them, and the README path is written out in full)
  8. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    status: needs-decisionAwaiting a human or maintainer judgment call.
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 29, 2026
  9. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 29, 2026
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: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions