Skip to content

pm-dispatch(triage): a lane seat may self-triage (p1/p2) a card that blocks its own in-flight work on clear evidence, then ask the triage seat to review #27061

Closed

Description

@objectstack-fleet

Filing gate ③ (maintainer-directed). Filed by the domain:server seat 1 (session_01R1q2xdtYgU6FKrZ7LgjPCC) on the maintainer's instruction, 2026-10-28 03:20Z. ⛔ Not a claim.

The maintainer's words (verbatim, in order)

  1. 「影响你工作的,高优先级的,是否建议你直接分诊」 (Leehom, 2026-10-28T03:19Z)
  2. The coordinator answered with a proposal (its words, given for context only): a server seat triages a card itself and grades it p1 or p2 only when the card blocks this lane's in-flight work and the evidence is clear, as with objectql: since #26930 a predicate delete walks every matched row one by one; 1,001 rows cost ~1.7 s (18×), and rest's nested-object-door cap test now nears its 5 s budget in the merge queue #27004 holding the merge queue and the [maintainer] refactor(driver-sql): split src/sql-driver.ts (22,096 lines, +2,533 in 30 days) along its SqlDriver seams, one move-only slice per PR #25521 split line. It posts the triage record on the card as usual, then tells the triage seat to review. Every other card still goes to the triage seat.
  3. 「照此执行,并立卡更新 skills」 (Leehom, 2026-10-28T03:20Z, in reply to that proposal)

The rule is in effect now for the server lane. This card writes it into the skill so every lane seat reads the same text.

Text today

  • references/triage-duties.md L75: 「车道席可附证据/前提重验,⛔ 不定级不改标;每张卡欠一次分诊首触,车道 ⛔ 不自分诊。」 That line is now wrong for a card that blocks the seat's own in-flight work.
  • SKILL.md L34: 「执行席只在本车道认领,永不改 domain:*」. That stays as written. Self-triage does not change a card's lane.

Wanted

  1. One narrow exception in triage-duties.md L75. A lane seat may give a card its first triage, and grade it p1 or p2, only when both of these hold:
    • (a) the card blocks the lane's own in-flight work: a claimed card, its PR, the lane's merge-queue landings, or a split series the lane runs;
    • (b) the evidence is clear: a named failing check or run, a reproduced measure, or a pinned test, cited on the card.
  2. Same record, same review. The seat posts its triage record on the card in the triage seat's format, with Ruling-ref: quoting the maintainer lines above. Then it asks the triage seat to review, and the triage seat may regrade. The seat's grade stands until then.
  3. Everything else still goes to the triage seat. ⛔ No self-triage of a card that does not block in-flight work. ⛔ No self-triage outside the seat's lane. ⛔ No domain:* change. ⛔ No p0 by this route: p0 stays with the main-red convention (landing-operations.md L80–81) and pm-dispatch(p0): a lane's p0 card is dispatched at once — no batch, depth-wait or concurrency cap holds it, and lower-priority dev work pauses to make room; main or merge-queue red is graded p0 at first touch #27047. ⛔ No self-triage of a human-floor item (triage-duties.md 人工地板); those still go to the maintainer.
  4. Point the SKILL.md label-table and seat-duty lines that say a lane never triages at the new exception, so no reader finds the old absolute rule alone.

Reach

Every lane seat and the triage seat. Text only under .claude/skills/pm-dispatch/**, Tier S (lands after the required review). No code or gate change.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: p1 · domain:skills · area:devpath · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-28T03:54Z

    ⛔ Not a claim.

    • Read fresh. Maintainer-directed (Leehom, 03:19–03:20Z, verbatim on the card): a lane seat may give a card its first triage, at p1 or p2, only when the card blocks the lane's own in-flight work and the evidence is clear. It posts a triage-format record, and triage reviews it.
    • p1: the rule is already in effect for the server lane, and it changes how first touch is owed (triage-duties.md L75), so every seat should read the same text soon.
    • Triage's side, from now: the self-triage records are added to the round's checks. Each round, triage reads the lane-seat triage records posted since the last round and confirms or regrades each one in a reply.
    • Seam to keep consistent: a main or merge-queue red is already p0 by convention ① (any seat files it and stops the bleed). The PR for this card, and pm-dispatch(p0): a lane's p0 card is dispatched at once — no batch, depth-wait or concurrency cap holds it, and lower-priority dev work pauses to make room; main or merge-queue red is graded p0 at first touch #27047 (p0 dispatch), should say so in one place, so a lane seat that self-triages a queue-red card grades it p0, not p1/p2.
    • priority:p1 added.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

    Premise correction before dispatch · domain:skills#2 · 2026-10-28T16:02Z — ⛔ not a claim

    Read on origin/main 65b49208 this fire (dispatch-runbook 派发前置, three faces):

  3. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

    Claim: PM loop round 2 (takeover shift, wave 8) · 2026-10-28T16:05Z
    Session: session_01QSeKYmhU5KEj1nukYhp1Tg
    Account: os-justin (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-27061-lane-self-triage
    Worktree: objectstack-issue-27061
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: .claude/skills/pm-dispatch/references/triage-duties.md (the 在飞/首触 region around today's L70–78, written against the text PR #27295 lands at L11 / L12 / L16; ceiling 102 / 102, net 0 lines, prose ≤120 B) and .claude/skills/pm-dispatch/SKILL.md (L170–171 only — the pointer to the exception; L34 红线 untouched; ceiling 319 / 319, net 0 lines, table-row pin 341 B untouched) (stop on breach; explain in the report)
    Container & model: S (protocol text, judgment on wording — M treatment), mode:subagent, model: CONTRACT_REVIEW_TIER (MANDATORY — dispatch-gates --tier this fire on origin/main 65b49208: .claude/skills/pm-dispatch/SKILL.md ⇢ '.claude/skills/pm-dispatch/SKILL.md' — clause ① of the model-tiering ruling (narrowed to protocol semantics, 2026-08-20): the PM dispatch skill MAIN file is the lane's own operating protocol), effort: xhigh (p1, protocol semantics)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (maintainer-directed protocol text: 「照此执行,并立卡更新 skills」)
    Thread-read: 6474025763
    Premise: corrected 6474025763 (the quoted triage-duties.md L75 left the file with PR #26771; the absolute now lives in SKILL.md L170–171; the p0 seam is settled by PR #27266; the triage-side line is written against PR #27295's text)
    Serial constraints cleared: PR #27295 (this seat's #27062, triage-duties.md L11 / L12 / L16 + contract-review.md) is in the merge queue (mergeable_state: clean) — this card is DISPATCHED ONLY AFTER PR #27295 is MERGED and starts from that origin/main (hard serial on triage-duties.md, as the seat's post r73 declared); PR #27292 (#27117, SKILL.md L60) merged fa5e7825 — clear; seat 1's in-flight #27214 (claim 6473046815: dispatch-runbook.md 〈云卡四课〉, execution-duties.md mode:cloud rows) and #27209 (skills/objectstack-ui/rules/pages.md) are disjoint; landing-operations.md is read, not edited.

  4. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

    os-dev-report

    {
      "issue": 27061,
      "status": "done",
      "branch": "claude/issue-27061-lane-self-triage",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27320",
      "head": "f192e7d5",
      "session": "session_01QSeKYmhU5KEj1nukYhp1Tg",
      "premise_still_valid": true,
      "summary": "Wrote the lane self-triage exception into the pm-dispatch skill as the card's Wanted 1–4 and triage's grade specify. triage-duties.md (102 → 102): four new lines directly after the main-red block — the trigger with both conditions (blocks the lane's own in-flight work: claimed card / PR / landings / split chain; clear evidence) and p1/p2 only; the three evidence kinds cited on the card, the record in triage's format and the ask-triage step; the line-initial Ruling-ref: and the three prohibitions (domain:*, p0 stays with main-red, human floor); triage's per-round confirm-or-regrade with the seat's grade standing until then — paid by four deletions whose content has a named home (the fire-continuation line → SKILL.md L68/L93; the unowned-p0 stop-bleed line → SKILL.md L35 红线 + landing-operations.md 约定③, a verbatim duplicate landed in the same commit; the producer-first line → the 责任三问 line + lanes/server.md L35 + lanes/hotcrm.md L30; the per-card-exemption line merged verbatim into the run-to-empty line L24). SKILL.md (319 → 319): L170–171 rewritten together at net 0 so the queue/level rule names the lane self-triage as its third exception and points at triage-duties.md; L34 红线 untouched. Draft PR opened through the relay with assignee os-justin and skip-changeset (.claude/** publishes nothing); nothing readied, enqueued or approved.",
      "files_changed": [
        ".claude/skills/pm-dispatch/references/triage-duties.md",
        ".claude/skills/pm-dispatch/SKILL.md"
      ],
      "line_budget": {
        ".claude/skills/pm-dispatch/references/triage-duties.md": {
          "lines_before": 102,
          "lines_after": 102,
          "ceiling": 102,
          "edited": [
            { "old": "L24", "new": "L24", "bytes": "102 → 120", "text": "首触定级与五析取 sweep 每 fire 跑到清空,先于旧卡重验:⛔ 无每轮预算、无逐卡豁免评论。", "note": "absorbs old L71 verbatim (无逐卡豁免评论 · 先于旧卡重验); gives up 总量 and the rhetorical 清得动就多清" }
          ],
          "deleted": [
            { "old": "L25", "bytes": 69, "text": "窗口耗尽未跑完的,下一 fire 从标签状态断点续跑。", "home": "SKILL.md L68 (fire 到达时上一轮未清空的接续处理,⛔ 不重开、不重排) + L93 (状态只经 GitHub 标签…循环须能从全新会话恢复)" },
            { "old": "L31", "bytes": 114, "text": "无主 p0 锚卡一轮即轮报,再一轮本席贴认领行只代派止血(landing-operations.md 约定③)。", "home": "SKILL.md L35 红线 (唯一例外:无主 p0 锚卡一轮即轮报、再一轮分诊只代派止血:每轮一张,复核非分诊) + landing-operations.md L82–84 约定③ (incl. 分诊贴标准认领行); all three landed together in commit 3af6022e" },
            { "old": "L69", "bytes": 103, "text": "生产者在哪是常设分诊问题:declared ≠ enforced 形状的卡先问谁在写这个字段。", "home": "same file 责任三问 line (now L71: 谁的代码出险 = who writes the field; 据答改卡范围、域与路由) + lanes/server.md L35 + lanes/hotcrm.md L30 (both: 先问生产者在哪) + SKILL.md L314 Responsibility: first answer" },
            { "old": "L71", "bytes": 94, "text": "⛔ 不设逐卡豁免评论;每 fire 定完全部未定级 finding,优先于旧卡重验。", "home": "merged into L24 (see edited)" }
          ],
          "added": [
            { "new": "L30", "bytes": 119, "text": "车道席自分诊:本车道卡挡自有在飞(认领卡/PR/落地/拆分链)且证据清楚,方可首触定 p1/p2。", "spec": "Wanted 1(a), lane restriction, p1/p2 only" },
            { "new": "L31", "bytes": 118, "text": "证据 = 卡上引具名失败 check/run、复现读数或 pin 测试;记录照分诊格式贴卡,请分诊复审。", "spec": "Wanted 1(b) + 2 (record form, ask triage)" },
            { "new": "L32", "bytes": 119, "text": "行首 `Ruling-ref:` 引本例外裁决原话;⛔ 不改 `domain:*`、不定 p0(归 main-red)、不碰人工地板。", "spec": "Wanted 2 (Ruling-ref) + 3 (⛔ domain:*, ⛔ p0 → main-red two lines up + SKILL.md L35, ⛔ human floor L79–85); not-blocking / outside-lane are the contrapositive of L30" },
            { "new": "L33", "bytes": 112, "text": "分诊每轮读上轮以来新贴的自分诊记录,逐条回复确认或改判;复审前席位定级有效。", "spec": "triage's grade 6460243271 + Wanted 2 last sentence" }
          ]
        },
        ".claude/skills/pm-dispatch/SKILL.md": {
          "lines_before": 319,
          "lines_after": 319,
          "ceiling": 319,
          "widest_table_row": "341 B, pin 341, untouched",
          "edited": [
            { "old": "L170", "new": "L170", "bytes": "118 → 118", "before": "`domain:*` 只由分诊产出,两例外:sub-issue 承父卡域、main-red 锚卡;无标签的卡 ⛔ 不得认领。", "after": "`domain:*`、队列与级别只由分诊落笔;两例外:sub-issue 承父卡域、main-red 锚卡,免审计评论。", "dropped": "无标签的卡 ⛔ 不得认领 → home: SKILL.md L105 (open + 队列标签 + 无 assignee = 可派发), execution-duties.md L7 (candidates read with labels: [domain:X]) + L11 (无分诊审计评论即非候选), and the retained 无分诊审计评论 ⛔ 不得认领 (labels and audit comment land in one stroke, L114/L119)" },
            { "old": "L171", "new": "L171", "bytes": "118 → 118", "before": "预贴标签只是建议,队列与级别只由分诊落笔;无分诊审计评论 ⛔ 不得认领;两例外豁免。", "after": "无分诊审计评论 ⛔ 不得认领;车道席自分诊是队列与级别的第三例外,住 `triage-duties.md`。", "dropped": "预贴标签只是建议 → home: triage-duties.md L22 (析取 ⑤: pm:queue/priority:* applied in the creation minute = untriaged, ⛔ 不凭 actor) + L52 (type 立单者可预填、分诊校正) + 只由分诊落笔 itself; 两例外豁免 → kept as ,免审计评论 on L170" }
          ],
          "L34_红线": "unchanged"
        }
      },
      "tests": "No package touched → no ① build closure, no package test suite owed, no ablation (no tested behaviour changed). Every measurement on head f192e7d5. Byte widths measured with Buffer.byteLength (the ratchet's own measure): all added/edited prose lines 112–120 B. check:pm-skill-ratchet verdict lines: `triage-duties.md is 102 lines (ceiling 102; headroom 0)` · `SKILL.md is 319 lines (ceiling 319; headroom 0)` · `SKILL.md: widest table row is 341 bytes (pin 341; headroom 0)` · `triage-duties.md: widest table row is 0 bytes (pin 0; headroom 0)`. Control-character self-scan of both files: 0 hits; check-nul-bytes OK (22097 files).",
      "gates": "Derived with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (stderr line 1: gate list derived from the tree of 'objectstack-ai/objectstack' at commit f192e7d5; change set = 2 path(s) vs merge base d4427aedc): 22 commands, all run locally with exits captured before any pipe, all 0 — pnpm check:pm-skill-ratchet 0 · check:pm-skill-id-lint 0 (104 files clean) · check:pm-governed-prose 0 · check:skill-frame-sync 0 · check:pm-half-states 0 (5034 cases) · check:nul-bytes 0 · check:pm-governed-merges 0 · check:pm-expected-skips 0 · check:pm-label-write 0 · check:doc-authoring 0 · check:cross-package-test-inputs 0 · check:agent-test-spelling 0 · check:gitlink-declared 0 · check:driver-memory-census 0 · check:refd-timer-probe 0 · check:watch-hint-literal 0 · pnpm --filter @objectstack/lint run check:doc-formula-expressions 3 (PREREQUISITE NOT MET: formula/lint not built — nothing measured) then 0 after `pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` under the verify lock (VERDICT command-exit 0 · held 71s · waited 0s) · node scripts/check-closing-keyword-parity.mjs 0 · …--self-test 0 · node scripts/check-comment-mask-corpus.mjs 0 (18816 files, 0 disagree) · node scripts/pm/check-governed-queue-guard.mjs --self-test 0 (401 cases) · node scripts/pm/check-harness-current.mjs --self-test 0 (26 cases). --ran reconciliation exit 0: `✓ dispatch-gates --ran: 22 derived famil(ies) accounted for — 22 run, 0 NOT-MEASURED (a DERIVED zero — all 22 recorded an exit code and none of them is 3)`. Beyond the derived set: check:skill-frame-freshness 0 (local-only; HEAD 1 commit behind, frame unchanged) · check:pm-record-recognisers 0 (297 + 49 cases) · check:pm-dispatch-gates detached under nohup per its header, verdict line `✓ dispatch-gates self-test (fast tier): 1935 cases pass; 7 slow section(s) deferred`, no ELIFECYCLE line in its log, exit code NOT captured (detached process). CI: the same families run in `Lint & Repo Gates` on the PR — in_progress at report time, cited from the PR's check-runs by the seat, not re-run here.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0 — no GitHub MCP tool called, read or write; the card and its comments were read by REST (GET /repos/objectstack-ai/objectstack/issues/27061 and …/comments?per_page=100), the PR read back by GET /repos/objectstack-ai/objectstack/pulls/27320",
      "api_writes": "2 REST writes, both through the relay as objectstack-fleet[bot]: ① fleet-write dispatch.mjs op pr_create (POST /repos/objectstack-ai/objectstack/pulls with assignees os-justin and labels skip-changeset in the same stroke) — relay request fw-20261028T164340Z-c8258d, run 40728812628 conclusion success, read-back identical 13665/13665 B, assignee os-justin; label read-back by GET /pulls/27320: skip-changeset present (labels on the pull: documentation, size/s, skip-changeset — the first two bot-added; draft=true, head f192e7d5); ② post-stamped.mjs --comment=27061 (POST /repos/objectstack-ai/objectstack/issues/27061/comments) — this comment. Plus 2 git pushes (the empty-branch probe and commit f192e7d5), git not REST.",
      "deviations": [
        "Placement: the four triage-duties lines are contiguous after the main-red block (old L28–30) instead of the order's 在飞/释放 block (old L75–78) for the lane side and L11/L16 for triage's line — the card's quoted L75 was the dead line's old position, and the live 'seat acts first, triage follows' analogue is the main-red block, where the ⛔ p0 pointer reads two lines up; the seat may move L33 next to L11/L16 at zero cost.",
        "Hypothesis 1 (3 lines + maybe a 4th): the ruling's enumerations (four in-flight kinds, three evidence kinds, record form, ask, five ⛔, grade-stands) did not fit 3 × 120 B; landed as 3 lane-side lines + 1 triage-side line (4 new, 4 paid). Not-blocking and outside-lane are carried as the contrapositive of L30 (本车道卡…方可), not as separate ⛔ clauses.",
        "Hypothesis 2 (payment candidates) partly falsified: L69's claimed home SKILL.md L130 is a routing rule, not the producer question — its homes are the 责任三问 line + lanes/server.md L35 + lanes/hotcrm.md L30; of L24–27 only L25 has a home (SKILL.md L68 + L93), L26/L27 have none and stay; L71's home is L24 itself, so it was merged (edit) rather than deleted outright; the fourth payment is L31, a verbatim duplicate of SKILL.md L35 + landing-operations.md 约定③ landed in the same commit 3af6022e — not on the seat's list.",
        "Hypothesis 3 (pointer in L171 alone with 2 B of room) falsified: every in-place variant carrying a file name measured 121–141 B; L170–171 were rewritten together at net 0 (118/118 B), dropping 预贴标签只是建议 and 无标签的卡 ⛔ 不得认领 to the named homes above.",
        "The order's byte readings (119 B for L170/L171, 117 B for L75) counted the newline; Buffer.byteLength gives 118/118/116, which is the ratchet's measure and the one used here.",
        "pnpm --filter @objectstack/lint run check:doc-formula-expressions refused with PREREQUISITE NOT MET (exit 3) on the fresh worktree; built formula + lint under the verify lock (VERDICT command-exit 0) and reran to exit 0; the build changed no tracked file.",
        "check:pm-dispatch-gates was run detached (nohup) as its own header requires on an agent container; its verdict line is quoted but its exit code was not captured (the process was not a child of a shell that could wait on it).",
        "The shared refs/remotes/origin/main moved during the run (now ff26bc4c); the derivation and the diff were taken against the merge base / recorded BASE d4427aed, which is exactly the two files.",
        "Worktree created with --no-track (os-dev.md's form; the order's command omitted it) — no effect on the branch.",
        "Harness attribution reminder asks for a model-named Co-Authored-By trailer; the commit carries AGENTS.md's model-free pair (Claude-Session + Co-authored-by: Claude), as os-dev.md directs; reported, not a history rewrite.",
        "No GitHub write beyond the three budgeted (push, pr_create, this comment); no label write, no PATCH, nothing readied or enqueued."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "class: none of a|b|c (protocol-text drift) · the lane charters still state the old absolute for their own lane and are outside this card's two-file scope: lanes/skills.md L22 「本车道 finding 同走分诊席首触,⛔ 不自分诊」, lanes/spec.md L29 「findings 首触定级归分诊席,本席只供证据」, lanes/ui.md L8 「⛔ 不产 domain:*、type 与定级,分诊唯一生产」 — a reader of one charter alone does not find the exception · carrier: domain:skills#2 seat (its lane charters) · noted, not filed · dedupe words: 自分诊 车道席 lanes/skills.md 分诊唯一生产 首触"
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

    ACCEPT → PR #27320 comment 6475352733 · domain:skills#2 · 2026-10-28T17:01Z — ⛔ not a claim. Contract review (CONTRACT_REVIEW_TIER) PASS → PR comment 6475315022 on head f192e7d5 (claim line 6475239129 first): the lane self-triage exception is four lines in triage-duties.md (trigger with both conditions, p1/p2 only; the three evidence kinds, triage's record format and the ask-triage step; Ruling-ref: and the ⛔ on domain:* / p0 / the human floor; triage's per-round confirm-or-regrade with the seat's grade standing meanwhile), paid by four deletions with homes; SKILL.md L170–171 name it as the third exception to 只由分诊落笔. 45 check-runs green or expected-skip, Tier S; the seat lands it through the relay (pr_ready + automerge_enable) in the next act on the maintainer's standing word of this shift. After MERGED: strip pm:dispatched; #27326 (the three lane charters still stating the old absolute) unblocks and waits for triage's grade.

  6. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

    Landed — PR #27320 merged; card closed by Fixes #27061

    probe reading (2026-10-28T17:21Z, domain:skills#2)
    git merge-base --is-ancestor 7a950940 origin/main after git fetch origin main true — 7a950940 pm-dispatch(triage): a lane seat may self-triage at p1/p2 a card that blocks its own in-flight work … is on origin/main; GET pulls/27320 → merged: true, merge_commit_sha 7a950940, merged by the queue entry the seat made on the maintainer's standing word (2026-10-28T17:19Z); origin/main:references/triage-duties.md carries the 车道席自分诊 lines at L30–33 and SKILL.md L170–171 name the third exception; both files at their ceilings (102 / 319); main's push CI on 7a950940 at this reading: 24 success · 14 skipped · 16 in progress or queued · 0 failure
    GET issues/27061 state: closed, state_reason: completed (2026-10-28T17:19Z), closed by the PR body's Fixes #27061 (the only closing keyword in the body — no other card was closed by it)

    State change: pm:dispatched removed from this card in the same act (label-write, read back: tooling, priority:p1, domain:skills, area:devpath remain as ownership). Downstream: #27326 (Blocked-by: #27061, the three lane charters) is unblocked in the same act — pm:blocked → pm:queue, no grade yet, triage's first touch owed. The SKILL.md / triage-duties hot-file queue is FREE. From this merge a lane seat may give a card its first triage at p1/p2 when it blocks the lane's own in-flight work on cited evidence, in triage's format with a Ruling-ref: line, and triage confirms or regrades it each round.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillspriority:p1High: required for production / M2tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions