needs-ruling: a cross-cutting flag for decisions only a human owns #30
Replies: 4 comments 1 reply
|
the only thing i'd add is that an admin comment might not be enough and probably needs follow up. so "ruling" is an on-going state until an agreement is reached and the issue/PR goes back to its "normal" flow. |
|
Triage here, completing the escalation contract so this is decision-ready: the decider is @danmt, and acceptance is on hold until his ruling lands, as the opening post states. My recommendation on each open question:
One consequence worth stating for the record: if accepted, #18 (issue-flow sweep, now @danmt — over to you on the three questions; a comment here unblocks acceptance. |
|
Triage, converging this. Outcome stays escalate — waiting on @danmt — but your amendment was sitting unincorporated, so here it is folded into the spec. That leaves one comment between this and acceptance. Your amendment, taken
Agreed, and it corrects a real defect in the proposal as I wrote it. My original Clearing rule was "the human rules in a comment; whoever set the flag incorporates the ruling and removes it" — that models a ruling as a single atomic reply, which is exactly the failure mode you are pointing at. If the human's first comment asks a clarifying question, or half-answers, the flag would come off while the decision is still open, and the board would go back to being unable to distinguish a stalled disagreement from work-in-progress. That is the bug the label exists to fix, reintroduced at the exit. Revised, replacing the Clearing bullet:
This does not change the staleness treatment — the sweep still never marks it Still open — three questions, unchangedMy recommendations are on the record in the comment above; restating them compactly so this is answerable in one pass:
A plain "1 yes, 2 yes, 3 yes" (or any of them overridden) is enough and I will mint from it. What I am not doingNot minting yet. Three decisions are open, and TRIAGE.md is explicit that an issue with an open question is an issue that should not exist — minting now would move this decision onto a builder, which is the failure the door exists to prevent. Scope preview for when you rule, so the cost is visible up front: one issue touching LABELS.md (new row + doctrine), TRIAGE.md (the escalate outcome gains an in-flight variant), BUILDER.md and REVIEWER.md (the deadlock path names the label), and the bootstrap rows in |
|
Triage, converging. Outcome: accept. Minted as #50 (epic) with two children — #51 ( @danmt — your "rather than questions they seem like statements but I agree with each point" is the ruling, and re-asking it in my last comment was over-cautious: nothing was actually open. The amendment I folded in afterwards was your own words, not a new question, so it needed no second sign-off. Taking the three as ruled:
Plus your amendment, which is the load-bearing one: What got minted#50 — the epic. Carries the ten decisions (D1–D10) so neither child can quietly reopen one, plus the constraints: two axes stay two, a sixth #51 — the label, the doctrine, and the PR reconciler's exclusion rule. Two things I decided in the spec rather than bringing back here, both mechanical consequences rather than fresh calls — flagging them so they are visible, and reversible by a word from you:
#52 — the sweep's ruling invariants.
#18 is untouched. As promised, this arrived as a separate issue rather than as a moving target under PR #32; #51 and #32 both edit LABELS.md and TRIAGE.md, so whichever lands second owes an ordinary rebase. Closing this as resolved — the decision is on the record here, the work is on the board. |
Uh oh!
There was an error while loading. Please reload this page.
Raised for @danmt (via the sherpa session) — operator input incoming; triage should hold acceptance until his comment lands.
The gap
The doctrine names human rulings twice — TRIAGE.md escalates decisions to discussions, REVIEWER.md ends panel deadlocks with "the builder escalates to the maintainer for a ruling" — but nothing on the board marks where a ruling is pending. A stalled disagreement is indistinguishable from work-in-progress, and the human has no queue of their-turn items beyond mergeable PRs.
Proposed shape
A new cross-cutting label,
needs-ruling, legal on issues AND PRs: a human decision is required; the question, options, and a recommendation are stated in the flagging comment.state:needs-human— that label means exactly "this PR could merge right now" and its narrowness is load-bearing (thestate:needs-rebaselesson: a label that means two things lies about both).claimed/blocked(a fact about what is in the way, likeblocker:*). On PRs the reconciler treats it blocker-ish:needs-rulingandstate:needs-humanare mutually exclusive by construction.blocked.Touched if accepted
LABELS.md (new row + doctrine), TRIAGE.md (escalate outcome gains the in-flight variant), BUILDER.md + REVIEWER.md (deadlock path names the label), the core label table shipped in #27 (labels-reconcile bootstrap rows), #18 sweep invariants (skip + bare-flag detection).
Open questions for this discussion
needs-rulingvsblocker:ruling(blocker-prefix makes the PR semantics free, but blockers are currently PR-only vocabulary and this must live on issues too).stale?All reactions