Skip to content

feat(pr-pipeline): stop gating any step on work class (owner Q85) #9668

Closed
2 of 2 issues completed
Closed

Description

@kyle-sexton

Problem

Owner decision Q85 (2026-10-24, Backlog HITL session): work class gates nothing. The owner: "I don't think work class needs to be a gate right now. We can always come back in and change our minds."

Work class still blocks or routes work in several places, for example:

  • intake: apply-verdict.mjs:180-181 adds a hold reason when no class is proposed, which sends the issue to status: needs-decision (the escalation needs-human pile also writes none, at apply-verdict.mjs:123, but its cause is the escalation, not this gate), and apply-verdict.mjs:82 holds work-class: structural.
  • admission: admit.mjs:285 against admission-rules.json:5 classes.
  • resolve-config/predicate.mjs (work-classes, admission classes), pr-merge / babysit (babysit_merge*.py, babysit_risk.py, babysit_verify_evidence.py), pr-verify.yml, pr-run-activity-read.yml, report-outcome.mjs, label-unblocked.mjs, triage-sweep.mjs, and the work-items tracker frontier and rule-admit.

Fix

  • No step refuses, holds, escalates or routes an issue or pull request by its work class or by a missing one.
  • Existing labels may stay on issues; nothing reads them for a decision.
  • Size, uncertainty, trust and review gates are out of scope here (owner question Q88 covers Size).

Done when

  • git grep -n -i -E "work-class|workClass|work_class|lane_class" -- .github plugins/source-control/skills/babysit-prs/scripts plugins/work-items shows no read that refuses, holds, escalates or routes on a class (docs describing the removal are fine).
  • The intake, admission, pr-merge and resolve-config test suites pass, with a case per former gate showing a class-less and a structural issue or PR passing it.

Activity

  1. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Owner, Backlog HITL session, 2026-10-24. Q85: "Should work class stop being a gate?" Answer: "the work class: nothing. There's no filtering or further processing with PRs, reviews, and blocks ... I don't think work class needs to be a gate right now. We can always come back in and change our minds." Also answered in the same session: Q83, a status-ready Feature with no parent issue is admitted like a Task ("go w/ recomemndations").

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

    @github-actions
    Contributor

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

    Size: Large
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: none

    Decision recorded. Intake has posted no refinement on this issue. This issue's - [ ] criteria are already in its body; the owner set the pr-merge scope on 2026-10-24. The open trust-gate point outside pr-merge is decided on the facts below.
    [quote truncated; the full decision is at the link]

    #9668 (comment)

    The decision settles the open questions: untrusted-provenance stays as a label check everywhere, and no other step gates on work class. The change spans intake, admission, pr-merge, resolve-config and work-items, so it is Large and may need splitting.

    Automated triage, applied by the lanes App.

  4. 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 24, 2026
  5. 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
  6. 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).

  7. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Owner, poteto session, 2026-10-24. Question: does Q85 also remove pr-merge's work-class checks, the untrusted-provenance one included? Options were: (a) remove the class-above-rung ceiling, the per-class promotion cells and the class-missing MED score, and keep the untrusted-provenance hold as its own label check that reads no work class; (b) remove everything, untrusted-provenance included; (c) leave pr-merge unchanged. Answer: "yes go w/ recommendations", meaning option (a).

    Scope for pr-merge (babysit_merge*.py, babysit_risk.py, babysit_verify_evidence.py): no refusal, hold or MED/HIGH score reads a work class. The untrusted-provenance hold stays as a trust gate.

  8. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    status: needs-decisionAwaiting a human or maintainer judgment call.
    on Oct 24, 2026
  9. 6 remaining items

  10. removed
    status: needs-decisionAwaiting a human or maintainer judgment call.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 26, 2026
  11. kyle-sexton commented on Oct 26, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Intake has posted no refinement on this issue. This issue's - [ ] criteria are already in its body; the owner set the pr-merge scope on 2026-10-24. The open trust-gate point outside pr-merge is decided on the facts below.

    Sources, quoted verbatim:

    Outside pr-merge, decided on the facts (owner, Refinement session, 2026-10-25):

    go with whatever the facts/data/metrics + /discovery:research says and ensure we're aligned with SOLID, DRY/SSOT principles
    […]
    I should only ever be in the loop ONLY when necessary (intent/vision changed, something came up during implementation that impacts trajectory/alignment, OR a high security risk) - I've covered this all before

    The owner's own answer agrees: Q90 (hub ledger, .work/backlog-to-zero/interview-checklist.md:162) records "untrusted-provenance stays a label check". It stays as a label check everywhere it runs today. Keeping it tightens nothing and loosens nothing; removing it would loosen a trust gate, which the body puts out of scope and the owner's pr-merge decision keeps ("The untrusted-provenance hold stays as a trust gate"). One rule in both places also keeps a single source of truth for the trust gate.

    Body criteria as amended by the pr-merge decision (only the amended line; the rest of the body's list stands as written):

    • In pr-merge (babysit_merge*.py, babysit_risk.py, babysit_verify_evidence.py) no refusal, hold or MED/HIGH score reads a work class; the untrusted-provenance hold stays as a label check that reads no work class.
  12. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 26, 2026
  13. melodic-automation-lanes commented on Oct 26, 2026

    @melodic-automation-lanes
    Contributor

    Split at intake (owner Q93). This issue is Size Large, so its done-when is split into 2 sub-issues, each holding its task-list lines as written.

    Automated split by the lanes App. Admission waits on this issue while a sub-issue is open; work-unblock closes it as completed once every sub-issue is closed by a merge or a listed human.

  14. kyle-sexton commented on Oct 26, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-26 rule: a person is involved only for "1. A change in original intent/vision 2. Something comes up during implementation ... that alters intent/vision or the primary design 3. If there is a HIGH/CRITICAL security issue". None applies here, so the hold label came off and intake triage runs again now.

    To hold this issue again, add needs-human (or status: needs-decision) and name which of the three applies.

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

    @melodic-automation-lanes
    Contributor

    Every sub-issue of this split is closed by a listed human or a merge (#10236, #10237), so the lanes App closes it as completed.

  16. kyle-sexton commented on Oct 29, 2026

    @kyle-sexton
    MemberAuthor

    Re-triage: scope. plugins/work-items is out of this issue's scope, as decided on #10237: #10237 (comment)

    Owner decision Q85 (no work-class gate at admission) governs the automation factory's .github lanes, which already apply it (admit.mjs gates only on work-class: untrusted-provenance). Those lanes are what will be generalized into ci-workflows for every repository. The published work-items and autonomy plugins keep their class-based admission for repositories outside the factory. Read this issue's done-when grep over plugins/work-items as out of scope.

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: readyTriaged, unblocked, and fully specified; eligible to pick up.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