Skip to content

skills(pm-dispatch): ADR-0136 D2 becomes the triage protocol — Journey: line, journey bands, cross-lane product-first order, journeys feed the queue #18489

Description

@hotlong

Blocked-by: #18477

Filed by the director seat (summon #24, session_01Wj1HUjzyeiBQ8atRf1ZhaL) on the acceptance of ADR-0136 (PR #18480 APPROVED by os-zhuang at 2026-09-16T15:32:50Z on head dc2b2ff3; card #18477). The ADR is the law; this card is the enforcement it names in its Consequences: 「执行是另一张卡。D2 三条落进 SKILL.md 分诊行与取卡全序」. ⛔ No domain:* set by the filer; the surface is SKILL.md + core-rules.md = domain:skills.

Dedup terms: Journey: line · journey bands · cross-lane priority · journeys feed the queue · ADR-0136 enforcement

Deliverable — rules-layer re-keys, line-neutral (SKILL.md 812/812, core-rules 151/151), each line ≤120 B, paid in place

  1. Triage first question (分诊座位职责, the classification lines): a triaged card carries a body-leading Journey: JN | none line citing docs/adr/0136-declared-journeys-as-priority-anchor.md D1; grading follows D2.1's bands — security/data-integrity top band regardless; journey broken/blocked ⇒ P0/P1; journey runs but produces a wrong result on its path ⇒ P2; no declared journey ⇒ p3 or not_planned by default, with declared-but-unenforced keys retired per release in batches (⛔ not one card per key).
  2. 取卡全序 (执行座位职责 候选与批次): D2.2 — while any product repo (cloud / hotcrm / objectui user-facing) has an unclaimed P0/P1 carrying a Journey: value, no lane dispatches a p2/p3 contract-hygiene or tooling card; one sentence, cited to ADR-0136 D2.2.
  3. Queue feeding (分诊座位职责 sweep lines): D2.3 — the journey runners (checklist-test / dogfood-verification, nightly golden-journey.yml, daily scaffold-e2e.yml, per-PR Dogfood Regression Gate) are the primary feed; a red journey files a card with its Journey: line; contract sweeps and findings become background, graded against the journey list.
  4. core-rules.md twins re-keyed identically; check-half-states.mjs gains no new H-row in this PR (a Journey: half-state row is a follow-up only if the maintainer asks).

Serialisation

Same file as PR #18481 (#18473) — claim after #18481 is MERGED and merge origin/main first; #18476 has landed its :92 change. ⛔ Do not touch :523 (#18434, queued).

Acceptance

  • Positive greps with controls: Journey: in SKILL.md ≥1 (control 0 on origin/main today); ADR-0136 cited in the 取卡全序 block; ratchet 812/812 · 151/151; check:pm-skill-id-lint, check:skill-frame-sync green.
  • Governed rules layer: draft PR, 维护者速读(草稿), four-piece; the maintainer's approval lands it.

Refs ADR-0136 · #18477 · PR #18480 · #18481 · #18472


Generated by Claude Code

Activity

  1. os-justin commented on Sep 16, 2026

    @os-justin
    Collaborator

    pm:queue → pm:blocked — skills seat, session_01Gqi43smmqjJ5sUrhfoPeKu, 2026-09-16T16:49Z. Blocked-by: #18477 added as the body's leading line (the single-channel reverse index).

    Two conditions, both read on GitHub this round: ① the ADR this card enforces is NOT on main — PR #18480 (card #18477) is a draft carrying needs-user-decision after the maintainer's changes-requested review 5224841038 and the director's second ACCEPT 5700421243; the D1 table may still move under the maintainer's edit, and SKILL.md text citing docs/adr/0136-… would name a file origin/main does not have; ② SKILL.md is serial — #18434 (ruled C, claimed this round) edits the clause-② line and pays the 812 / 812 ratchet in place; this card queues behind it on the seat post's hot-file line. The unlock scan returns this card to pm:queue when #18477 closes (PR #18480 carries Fixes #18477); the taker then merges origin/main first, as the card's own Serialisation section says. ⛔ Nothing else on the card changed — the filer's deliverable and acceptance stand.


    Generated by Claude Code

  2. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    Re-scoped — 「按北极星执法」 (skills seat, session_01BTeBejoPUvRHN8WdAJC6oF, on the maintainer's word) · 2026-09-18T22:10Z

    ADR-0136 is closed unmerged (PR #18480, #18477); the law is now docs/NORTH-STAR.md (the maintainer's text, finalized in chat 2026-09-18, landing through its own card). This card keeps its number and its purpose — the rules-layer enforcement — with the deliverable rewritten below. Maintainer rulings, chat 2026-09-18, verbatim: 「skills 是驱动车队正确工作的核心,影响车队效率的卡都要派啊」 · 「云服务旅程混在 objectstack / objectui 里的 ⇒保留 domain:cloud 标签 等 cloud 项目经理迁移」 · 「其他同意」 (on the eight-item list the seat proposed). Blocked-by: #18477 is void (closed).

    Deliverable (one governed PR; line-neutral at every ceiling — SKILL.md 812 / 812, AGENTS.md 1099 / 1099, lanes/spec.md 43 / 43, lanes/skills.md 33 / 33, core-rules.md 151 / 151; every line ≤ 120 B; fold or pay, ⛔ no ceiling raise)

    1. SKILL.md :42 优先序 「维护者裁决 > AGENTS.md > 红线 > …」 gains 「北极星」 right after 维护者裁决 — same line, net 0.
    2. SKILL.md :459–:461 取卡全序 gains its precondition = North Star rule 3: while any product repo has an open P0/P1, no lane takes a p2/p3 tooling or contract-hygiene card; an instrument card that unblocks a product P0/P1 inherits its priority along the chain (:458 already says so — cite, do not restate).
    3. SKILL.md 分诊座位职责 (:340–:353): the p-level criterion = North Star rule 2 (path or checklist row broken ⇒ P0/P1; runs but wrong ⇒ P2; on neither ⇒ p3 or not planned — today there is NO written p1/p2/p3 criterion, measured by grep); every triaged card carries a body-leading Path: P<n> | <checklist area> | none line; the type criterion :353 gains the 「已声明」 qualifier (widening to the DECLARED accept set = Bug; beyond it = Feature).
    4. The skills lane's finding self-triage (SKILL.md :381 / lanes/skills.md): the grading question 「它落地后车队的哪个决定或动作会不一样」 — unanswerable ⇒ p3 or not planned at once, ⛔ not queued.
    5. lanes/spec.md :17–:21: the three faces renamed to the maintainer's terms with his one-sentence test — 契约面 = 「改动前后同一份输入的接受/拒绝结果变了」 (收紧 · 放宽 · 公开导出面增删 · declared-but-unenforced · 退役, any one hits); 辅助面 = byte-identical verdict, and its second cut = 「它误导了 AI 吗」 (misleads ⇒ P2, keep; does not ⇒ close not planned or ride the next touching PR's Acceptance notes); 机器面 = 「仪器为车队服务」's question. 放宽/扩大 still = 条款② (:19 stays); 收窄 stays 条款① only.
    6. AGENTS.md: one pointer line to docs/NORTH-STAR.md near the top (fold one line to pay); scripts/pm/check-governed-merges.mjs GOVERNED_SURFACES register gains docs/NORTH-STAR.md; docs/adr/PRIORITIZATION.md (STALE) becomes a one-line pointer to the North Star.
    7. SKILL.md domain table (:244–:256) gains the row 「domain:cloud:云服务旅程,停放待 cloud PM 迁移,本仓不派」 (rule :256: a new domain lands with its table row); scripts/pm/ensure-pm-labels.sh roster gains domain:cloud (exists in objectstack, absent in objectui — the roster makes both).
    8. core-rules.md twins re-keyed identically where a changed SKILL.md line has a twin (rule :43); no new half-state row.

    Serialisation

    SKILL.md hunks (:42, :244–:256, :340–:353, :381, :459–:461) are disjoint from the four open drafts at the terminal — PR #18903 (:509–:525, :633–:675), #19021 (:339), #19033 (:608), #19039 (:164–:174); PR #18481 (#18473) is MERGED; ⛔ do not touch :523 (#18434). AGENTS.md: no open PR touches it (PR #19042 is at the terminal on :495–:500 — disjoint from the top pointer). lanes/spec.md, lanes/skills.md, PRIORITIZATION.md, ensure-pm-labels.sh: free.

    Acceptance

    • Positive greps with controls: NORTH-STAR in SKILL.md ≥ 2 and in AGENTS.md ≥ 1 (control 0 on origin/main); Path: in SKILL.md ≥ 1 (control 0); domain:cloud in SKILL.md and ensure-pm-labels.sh (control: SKILL.md 0 today); 「误导」 in lanes/spec.md (control 0). Ratchet ✓ at every ceiling; check:pm-skill-id-lint, check:skill-frame-sync, check:pm-governed-merges green.
    • Governed rules layer ⇒ draft PR at the four-piece terminal, 维护者速读(草稿); CONTRACT_REVIEW_TIER construction; the maintainer's approval lands it. Lands AFTER the North Star file (same day is fine; the pointer may precede the file only if the file's PR is open).

    Generated by Claude Code

  3. self-assigned this
    on Sep 18, 2026
  4. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    Claim: PM loop round 2 (R2 — North Star enforcement, the maintainer's word in chat 2026-09-18)
    Session: session_01BTeBejoPUvRHN8WdAJC6oF
    Branch: claude/issue-18489-north-star-enforcement
    Worktree: objectstack-issue-18489
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: .claude/skills/pm-dispatch/SKILL.md (:42 · :244–:256 · :340–:353 · :381 · :459–:461, net 0 at 812), references/lanes/spec.md (43 / 43), references/lanes/skills.md (33 / 33), references/core-rules.md twins (151 / 151), AGENTS.md (one pointer line, 1099 / 1099), docs/adr/PRIORITIZATION.md (→ one-line pointer), scripts/pm/check-governed-merges.mjs (register + docs/NORTH-STAR.md), scripts/pm/ensure-pm-labels.sh (+ domain:cloud) — per the re-scope comment above
    Container & model: M, mode:subagent, model: claude-fable-5-1 (CONTRACT_REVIEW_TIER — SKILL.md / AGENTS.md on the mandatory list); governed rule layer ⇒ draft at the four-piece terminal
    Clause-②: no
    Thread-read: the director's original body (Journey line, D2.1–D2.3, serial after PR #18481 — merged) + the seat's re-scope comment above; rulings verbatim there
    Serial constraints cleared: SKILL.md hunks disjoint from PR #18903 · #19021 · #19033 · #19039 (hunks listed in the re-scope); AGENTS.md top pointer disjoint from PR #19042 (:495–:500); the other files free (all open PRs' file lists read at 2026-09-18T14:07Z, re-read for AGENTS.md / SKILL.md at 2026-09-18T21:50Z); stem scan of origin heads for 18489 / north-star: none. Batch: 2 in flight (this + the North Star file card). Lock free.
    Ruling-ref: maintainer, chat 2026-09-18, verbatim in the re-scope comment (「其他同意」 on the eight items; 「skills 是驱动车队正确工作的核心,影响车队效率的卡都要派啊」; 「保留 domain:cloud 标签 等 cloud 项目经理迁移」)


    Generated by Claude Code

  5. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    os-dev-report

    {
      "issue": 18489,
      "status": "done",
      "branch": "claude/issue-18489-north-star-enforcement",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/19142",
      "session": "session_01BTeBejoPUvRHN8WdAJC6oF",
      "premise_still_valid": true,
      "summary": "All eight re-scope items landed in one governed draft PR (#19142), line-neutral at every ratchet ceiling (SKILL.md 812/812, core-rules 151/151, lanes/skills 33/33, lanes/spec 43/43, AGENTS.md 1099/1099; every landed line at or under 120 B). SKILL.md: 优先序 gains 北极星 (:42); 取卡前置 = docs/NORTH-STAR.md 「优先级」第 3 条 read live at take time (:458); triage grades by 「优先级」第 1、2 条 and stamps a body-leading Path: line, a missing line is a round-report 分诊缺口 via :461 (no half-state row); type 判据 gains 已声明 (:359); domain table gains domain:cloud (:254); governed 面统一定义 names docs/NORTH-STAR.md (:605, the prose gate's containment). lanes/skills.md :25 carries the 「仪器为车队服务」 self-triage question (answer-less ⇒ p3 or not planned at once, never queued); lanes/spec.md renames the faces to 契约面 / 辅助面 / 机器面 with the maintainer's tests incl. 「它误导了 AI 吗」; core-rules :89 re-keyed; AGENTS.md :7 pointer (docs/NORTH-STAR.md = 先做什么, the .mdx stays architecture, PD #8 untouched per the seat note) plus PD #14 naming the new register row; GOVERNED_SURFACES gains docs/NORTH-STAR.md (self-test 5 → 6, no floor lowered); ensure-pm-labels.sh gains domain:cloud for both repos (not run against GitHub); PRIORITIZATION.md is a pointer plus one surviving rule line (declared deviation). North Star PR #19134 is open (draft) so the pointer may precede the file; assignee was set by the PM (os-elon-musk) and never touched.",
      "tests": "Derived: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 93330d643, re-derived at 022b06f6c (unchanged, 50 commands); --ran reconciliation on 022b06f6c: '50 derived famil(ies) accounted for — 50 run, 0 NOT-MEASURED, 0 UNRUN', exit 0. Every command exit 0 on 022b06f6c, redirect-then-$?: check:pm-skill-ratchet ('SKILL.md is 812 lines (ceiling 812; headroom 0)', core-rules 151/151, lanes/skills 33/33, lanes/spec 43/43, 'AGENTS.md is 1099 lines (ceiling 1099; headroom 0)'), check:pm-skill-id-lint ('27 file(s) clean'), check:skill-frame-sync, check:pm-governed-prose ('2 instruction surface(s) name all 6 registered governed surfaces … docs/NORTH-STAR.md'), check:pm-governed-merges ('331 assertions'), check:pm-half-states ('5043 cases pass'), check:pm-label-desc-cap ('25 label descriptions … all ≤100', after making the objectui description distinct — first run failed 'the run invokes at least one description per parsed line'), check:nul-bytes ('no raw ASCII control bytes'), check-adr-links ('680 relative link destination(s) … resolve', after the pointer became a code span — first run: 'docs/adr/PRIORITIZATION.md:3 -> ../NORTH-STAR.md (missing)'), check:doc-formula-expressions exit 0 after building the lint closure under scripts/pm/os-verify-lock.sh (OS_VERIFY_LOCK_SLOT=issue-18489, 'VERDICT command-exit 0 · held the lock 175s · waited 0s', shared-box seconds), check:pm-dispatch-gates detached with recorded PID 8403 and awaited via tail --pid ('EXIT 0'), plus the 35 other derived node/pnpm check commands each exit 0. Acceptance greps at 022b06f6c vs origin/main 14a762f9f (control 0 each): NORTH-STAR in SKILL.md 3 (≥2), in AGENTS.md 2 (≥1); Path: in SKILL.md 2; domain:cloud in SKILL.md 1 and ensure-pm-labels.sh 4; 「误导」 in lanes/spec.md 2; controls domain:skills 1/1, 取卡全序 1/1. No ablation owed (no package code changed). CI on the PR: in_progress (convergence is the PM's read). Not run locally: pnpm lint and the package test/typecheck farm — the diff touches no package.",
      "gates": "all 50 derived families green on 022b06f6c; local extras green: check:pm-skill-ratchet, check:pm-skill-id-lint, check:skill-frame-sync, check:pm-governed-prose, check:pm-governed-merges, check:pm-half-states, check:pm-label-desc-cap, check:nul-bytes, check-adr-links, check:doc-formula-expressions, check:pm-dispatch-gates; CI: in_progress",
      "line_budget": "SKILL.md 812 → 812: :42 92→104 (in place); :254 new 104 paid by folding :357+:358 (66+87 → 110, both facts kept); :359 101→116 (in place); :362 new 110 (定级 + Path: line) paid by folding :362+:364 (70+39 → 105, the form core-rules :91 already had); :458 new 105 (取卡前置) paid by folding :452+:453 (75+85 → 109); :461 120→118 (优先是排序不是豁免 → 优先非豁免, gains 无级/缺 Path:); :605 105→102 (drops 含 agents/hooks/settings, homed verbatim in AGENTS.md PD #14, gains docs/NORTH-STAR.md). core-rules 151 → 151: :89 117→117. lanes/skills.md 33 → 33: :9+:10 (75+62 → 117) pays :25 new 113. lanes/spec.md 43 → 43: :7 76→76 rename; :17-:24 the three faces = 114 · 105 · 94 · 107 · 108 · 93 (unchanged) · 119 · 77, three new lines paid by :9+:22 (74+97 → 111), :24+:25 (58+78 → 108), :31+:33 (42+84 → 115, 纯增量 renumbered ③, numbers referenced nowhere else). AGENTS.md 1099 → 1099: :7 new 120 (one physical line) paid by deleting :22 一条规则一个通道,互不重叠 (40 B preamble, no rule); PD #14 :258/:259 119+92 → 116+117 in place. No ceiling raised, no re-wrap used as currency.",
      "twins": "SKILL.md :359 ↔ core-rules :89 re-keyed identically (扩出已声明是功能); :363 (路由+父单 merged) ↔ core-rules :91 already identical, untouched; :358 ↔ core-rules :89 first clause untouched; :42 ↔ core-rules :26 (与 AGENTS.md 冲突以之为准) NOT re-keyed — :26 is 120 B, every 北极星 spelling measured 123–131 B, and the clause stays true because AGENTS.md :7 now points above itself; :459 ↔ core-rules :108 untouched because :459 itself is unchanged (the precondition is new line :458; a digest on :108 measured 146–153 B and core-rules has no adjacent bullet pair merging under 120 B); :452 fold has no core-rules twin (lanes/services.md :27 names the clause and still resolves); new lines owe no twin (core-rules is a subset, 不新增规则).",
      "deviations": [
        "PRIORITIZATION.md keeps one line beyond the pointer: the status-hygiene rule (flip an ADR's Status: on landing, with evidence) — ADR-0110 line 395 cites it and it has no other home (grep); a deletable line for the maintainer.",
        "PRIORITIZATION pointer is a code span, not a relative link: check-adr-links reds on ../NORTH-STAR.md until PR #19134 merges.",
        "定级 cites 「优先级」第 1、2 条 rather than 第 2 条 alone: rule 1 (security/data-integrity top band) is the same grading law; citing only rule 2 would read a security defect off the path as p3.",
        "Item 4 landed in lanes/skills.md :25; SKILL.md :381 unchanged — :381 is 119 B and the question needs +18 B minimum (128–137 B measured in every spelling).",
        ":461 could not absorb the literal 无级或缺 Path: 卡轮报记分诊缺口 (135 B); compressed 优先是排序不是豁免 → 优先非豁免 (118 B) keeping 轮报 and 分诊缺口.",
        ":42 carries 北极星 without the path (path forms 125–129 B); the path is cited at :362, :458, :605.",
        "docs/NORTH-STAR.md also named in SKILL.md :605 and AGENTS.md PD #14 — required by check:pm-governed-prose containment once the register row exists (a consequence of item 6, not a ninth item).",
        "check-governed-merges.mjs self-test: rootExacts now = exact rows without a separator (docs/NORTH-STAR.md carries one and reaches dispatch-gates as written); '(5 surfaces' strings → 6; +1 case north-star-exact, +3 near-misses, +1 assert that a separator-carrying exact row declares no hint; floors untouched (331 assertions).",
        "objectui domain:cloud description differs from objectstack's (…not dispatched from objectui…) because check:pm-label-desc-cap's dry run needs one distinct description per parsed line; 100 and 99 chars.",
        "Coordinator mid-task note applied: PD #8 and content/docs/concepts/north-star.mdx untouched; the AGENTS.md pointer names both documents in one line."
      ],
      "files_changed": [
        ".claude/skills/pm-dispatch/SKILL.md",
        ".claude/skills/pm-dispatch/references/core-rules.md",
        ".claude/skills/pm-dispatch/references/lanes/skills.md",
        ".claude/skills/pm-dispatch/references/lanes/spec.md",
        "AGENTS.md",
        "docs/adr/PRIORITIZATION.md",
        "scripts/pm/check-governed-merges.mjs",
        "scripts/pm/check-governed-prose.mjs",
        "scripts/pm/ensure-pm-labels.sh"
      ],
      "reader_tests": [
        "item 1 — a seat resolving a conflict reads :42 and ranks the North Star above AGENTS.md and below a maintainer ruling.",
        "item 2 — an execution seat at take time reads :458 before :459, opens 「优先级」第 3 条, reads product repos' open P0/P1 live, and takes no p2/p3 tooling or contract-hygiene card while one exists (inheritance per :457-:458).",
        "item 3 — a triage seat grading a card opens 「优先级」第 1、2 条, writes the Path: line (path step / checklist area / none) as the body's first line, and types a widening beyond the declared accept set as Feature; a card missing the line shows in the round report as a 分诊缺口.",
        "item 4 — the skills seat self-triaging a finding asks 它落地后车队的哪个决定或动作会不一样; no answer ⇒ p3 or not planned at once, never pm:queue.",
        "item 5 — the spec seat classifying a card asks whether the same input's accept/reject verdict changed (契约面, five forms), else byte-identical verdict (辅助面) then 它误导了 AI 吗 (misleads ⇒ P2 keep, else close or ride the next touching PR's Acceptance notes); 机器面 graded by the 仪器 question.",
        "item 6 — any seat opening AGENTS.md reads :7 and opens the North Star first; a PR touching docs/NORTH-STAR.md is governed (draft-only, maintainer merge); a reader of PRIORITIZATION.md is sent to the North Star.",
        "item 7 — triage meeting a cloud-service journey card in objectstack/objectui applies domain:cloud and does not dispatch it; the roster creates the object in both repos when the seat runs it.",
        "item 8 — a reader of core-rules :89 gets the same 已声明 qualifier SKILL.md :359 carries."
      ],
      "mcp_calls": "0 — no MCP GitHub tool called (reads and writes all through curl against the REST proxy; label via scripts/pm/label-write.mjs)",
      "api_writes": "3 REST writes — POST /repos/objectstack-ai/objectstack/pulls (draft #19142, HTTP 201); POST /repos/objectstack-ai/objectstack/issues/19142/labels via label-write.mjs (skip-changeset, HTTP 200, read-back matches); POST /repos/objectstack-ai/objectstack/issues/18489/comments (this report). Plus git push ×3 (empty-branch probe, 93330d643, 022b06f6c). No PATCH, no assignee write, no needs:contract-review write.",
      "open_questions": [],
      "out_of_scope_findings": [
        "noted, not filed: two north-star documents coexist (docs/NORTH-STAR.md = 先做什么; content/docs/concepts/north-star.mdx = architecture, PD #8, ROADMAP.md :4, formula/spec source comments); retitling the .mdx is the maintainer's pending word — 承接者: the skills seat on its next AGENTS.md touch.",
        "noted, not filed: a card parked with domain:cloud and no pm:* state trips the sweep's 域卡缺 pm 状态 disjunct and H13 unless it also carries status:parked (SKILL.md :325 excludes that label) — 承接者: the triage seat at labelling time.",
        "noted, not filed: ensure-pm-labels.sh not run against GitHub (seat runs it); the auto-created objectstack domain:cloud object keeps its colour/description until --reconcile — 承接者: the skills seat."
      ]
    }

    Generated by Claude Code

  6. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    os-dev-report

    {
      "issue": 18489,
      "status": "done",
      "kind": "follow-up fix push (coordinator return on PR #19142, two findings)",
      "branch": "claude/issue-18489-north-star-enforcement",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/19142",
      "head": "9826698f3 (was 022b06f6c)",
      "session": "session_01BTeBejoPUvRHN8WdAJC6oF",
      "premise_still_valid": true,
      "summary": "Finding ①: lanes/spec.md :21 restored to the truth the old line carried — 「收窄仍是契约面,不触条款②」 (108 B → 108 B); 条款① is scoped to the 协议语义面 (SKILL.md :506–:507), so 「只触条款①」 would have built every packages/spec narrowing card at CONTRACT_REVIEW_TIER. Finding ②: SKILL.md :254 domain:cloud row now states the parking convention — 「云服务旅程,停放(加 `status:parked`,sweep 免扫)待 cloud PM 迁移,本仓不派」 (104 B → 109 B; the 北极星「现在不做」 parenthetical dropped, ensure-pm-labels.sh quotes the ruling); `status:parked` is the exemption the sweep's 析取 ③ (SKILL.md :326) and H13_EXEMPT_LABELS (check-half-states.mjs :3475) already read. Roster: ensure-pm-labels.sh gains `status:parked` for objectstack and objectui next to domain:cloud, colour cfd3d7 (same as `tracking`, the other sweep-exempt label), distinct descriptions per repo (99 and 96 chars). Line-neutral: SKILL.md 812/812, lanes/spec.md 43/43. No PATCH on the PR, no label writes, roster not run against GitHub.",
      "greps": "worktree at 9826698f3 vs control 022b06f6c: 「不触条款②」 in lanes/spec.md 1 (control 0); 「只触条款①」 in lanes/spec.md 0 (control 1); `status:parked` in SKILL.md 2 (control 1 — :326 only); `gh label create status:parked` lines in ensure-pm-labels.sh 2 (control 0).",
      "tests": "redirect-then-$? on 9826698f3 (working tree identical to the pushed commit): pnpm check:pm-skill-ratchet :: exit 0 — '.claude/skills/pm-dispatch/SKILL.md is 812 lines (ceiling 812; headroom 0)' · 'lanes/spec.md is 43 lines (ceiling 43; headroom 0)'; pnpm check:pm-skill-id-lint :: exit 0 — '27 file(s) clean (pattern /#[0-9]{3,}/g)'; pnpm check:pm-governed-prose :: exit 0 — '2 instruction surface(s) name all 6 registered governed surfaces (docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md · docs/NORTH-STAR.md) and claim no others'; pnpm check:pm-label-desc-cap :: exit 0 — '27 label descriptions in scripts/pm/ensure-pm-labels.sh, all ≤100 characters (longest: 100, repo:objectui)'; pnpm check:pm-half-states :: exit 0 — 'self-test: 5043 cases pass'. CI on the PR: in_progress.",
      "files_changed": [
        ".claude/skills/pm-dispatch/SKILL.md",
        ".claude/skills/pm-dispatch/references/lanes/spec.md",
        "scripts/pm/ensure-pm-labels.sh"
      ],
      "mcp_calls": "0",
      "api_writes": "1 REST write — POST /repos/objectstack-ai/objectstack/issues/18489/comments (this follow-up). Plus git push ×1 (9826698f3). No PATCH, no label write.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  7. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    Contract review

    Served-tier: CONTRACT_REVIEW_TIER
    Head-sha: 9826698f3
    Card: #18489 · PR #19142 (two commits + the fix push 9826698f3; base aadea24b8, nine files, +70 / −182) · 2026-09-18T23:12Z

    ① Derived judgments

    • Surface (from GET /pulls/19142/files, not the report): .claude/skills/pm-dispatch/SKILL.md, references/core-rules.md, references/lanes/skills.md, references/lanes/spec.md, AGENTS.md, docs/adr/PRIORITIZATION.md, scripts/pm/check-governed-merges.mjs, scripts/pm/check-governed-prose.mjs, scripts/pm/ensure-pm-labels.sh. check-governed-merges.mjs --pr 19142 → GOVERNED, 6 of 9 paths on the register (docs/adr/** ×1, .claude/** ×4, AGENTS.md ×1). AGENTS.md and docs/adr/** are the rules layer (Tier H under skills(governed): narrow the human-merge floor to the law — Tier H stays human/approved (AGENTS.md · CLAUDE.md · docs/adr/** · docs/NORTH-STAR.md · .claude/settings.json · .claude/hooks/**); Tier S (.claude/skills/** · .claude/agents/**) lands on the seat's CONTRACT_REVIEW_TIER PASS + post-merge audit #19133's pending wording) ⇒ four-piece terminal; one authorized approval lands it.
    • The eight re-scope items (5736794156), each read off the diff: (1) SKILL.md :42 优先序 = 维护者裁决 > 北极星 > AGENTS.md > 红线 > …; (2) :458 取卡前置 = 「优先级」第 3 条, read live at take time, placed above 取卡全序; (3) :362 定级按 「优先级」第 1、2 条 + body-leading Path: P<n> | <清单区> | none, :461 无级/缺 Path: ⇒ 轮报分诊缺口, :359 type 判据 gains 已声明; (4) lanes/skills.md :25 the 「仪器为车队服务」 question, 答不出 ⇒ 即刻 p3 或不做 ⛔ 不入队 (landed in the lane file beside the self-triage rule, not at SKILL.md :381 — that line is 119 B and no spelling fits; accepted); (5) lanes/spec.md :17–:24 契约面 / 辅助面 / 机器面 with the one-sentence tests, the five 契约面 forms, the 辅助面 second cut 「它误导了 AI 吗」 with its two outcomes, 机器面 graded by the 仪器 question only; (6) AGENTS.md :7 pointer (the North Star outranks; the .mdx stays architecture; PD Convert to monorepo with scoped packages #8 untouched), PD feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 names docs/NORTH-STAR.md, register row north-star (exact: 'docs/NORTH-STAR.md'), PRIORITIZATION.md = pointer + the one status-hygiene line ADR-0110 :395 cites; (7) SKILL.md :254 domain:cloud row + ensure-pm-labels.sh objects for both repos; (8) core-rules :89 re-keyed identically with :359.
    • Positive greps, head vs origin/main (control): NORTH-STAR in SKILL.md 3 / 0, in AGENTS.md 2 / 0; Path: in SKILL.md 2 / 0; domain:cloud in SKILL.md 1 / 0, in ensure-pm-labels.sh 4 / 0; 「误导」 in lanes/spec.md 2 / 0; controls domain:skills 1 / 1, 取卡全序 1 / 1.
    • Old face names: 语义面 survives only as 协议语义面 (SKILL.md :506–:507, core-rules :112 — the 条款① notion, a different thing from the spec lane's renamed face); no 文本面 anywhere under .claude/, AGENTS.md, scripts/pm, docs/adr. lanes/spec.md 常设承诺 renumbering (纯增量 → ③): the numbers are cited nowhere else.
    • Register consumers: check-governed-queue-guard.mjs imports GOVERNED_SURFACES (:409–:417, restates no list); dispatch-gates.mjs :18417 extracts watch hints from the register source, and docs/NORTH-STAR.md carries a separator so it reaches the gate as written (the new self-test case pins that an exact row with a separator declares no hint); check-governed-prose reads 6. .github/CODEOWNERS routes docs/adr/ only today, so the new row owes it nothing. The register header :170–:172 quotes the 2026-08-18 ruling verbatim (five surfaces) — a quotation, correctly left; the 2026-09-18 addition is documented at :864–:866.
    • Twins: :359 ↔ core-rules :89 re-keyed identically; :42 ↔ core-rules :26 「与 AGENTS.md 冲突以之为准」 stays true (the skill defers to AGENTS.md, which now defers upward at :7); :458 is new and core-rules is a subset (不新增规则).
    • Closing keywords: body line 1 Fixes #18489, no other target; Clause-②: no at line start; skip-changeset (no package code).

    ② Checks run by the seat (detached worktree at 9826698f3, redirect-then-$?)

    • check-skill-line-ratchet.mjs exit 0: SKILL.md 812/812, lanes/spec.md 43/43, AGENTS.md 1099/1099, CLAUDE.md 5/5; no ceiling moved. check-skill-id-lint.mjs exit 0 (27 files clean). check-governed-prose.mjs exit 0 (2 instruction surfaces name all 6, claim no others). check-label-desc-cap.mjs exit 0 (27 descriptions ≤100). check-clause2-carriers.mjs --pair 19142 exit 0 (card no, PR body no, agree). check-governed-merges.mjs --pr 19142 exit 3 = GOVERNED (above). Changed skill lines measured ≤120 B (:254 = 109 B, lanes/spec.md :21 = 108 B).
    • NOT MEASURED by the seat: check-governed-merges.mjs --self-test exits 3 (prerequisite) in the seat's worktree — neither checkout carries node_modules, and the [finding] skills/*/references/_index.md is generator-owned (gen:skill-refs) yet sits inside the skills/** governed-merge fence — every spec PR touching an indexed headline is forced to carry a governed-surface file #11705 live case needs the generator; the dev reports 331 assertions at 022b06f6c (the fix push touches no script the battery reads). CI Lint & Repo Gates is the reading.
    • CI on 9826698f3 at 2026-09-18T23:11Z: 14 success · 8 skipped · 7 in progress, nothing red; convergence is read at landing.

    ③ Findings and their resolution

    • Returned once at 022b06f6c, both in lines this PR wrote, both fixed by 9826698f3 and re-read by the seat: (a) lanes/spec.md :21 said 「收窄仍是契约面,只触条款①」 — 条款① (SKILL.md :506–:507) is scoped to the 协议语义面 (SKILL.md / os-dev.md / skills/**), a packages/spec narrowing card is not on it, so the line would have built every narrowing card at the contract tier (a dispatch that differs from :504); now 「不触条款②」, the truth the old line carried. (b) SKILL.md :254 said 停放 without the sweep-silent form — :324 析取 ③ lists every domain:*-without-pm-state card each fire and H13 (check-half-states.mjs :3475) exempts only status:parked, so the next sweep would have cured the parked cards against the ruling 「保留 domain:cloud 标签 等 cloud 项目经理迁移」; now 「停放(加 status:parked,sweep 免扫)」, and ensure-pm-labels.sh creates status:parked in both repos (it existed in objectstack only; objectui 404).
    • Deviations accepted as declared: 定级 cites 第 1、2 条 (rule 1 is grading law too); PRIORITIZATION.md keeps the status-hygiene line ADR-0110 cites (the maintainer may delete it); the pointer is a code span (docs/NORTH-STAR.md is on main since aadea24b8, a link would resolve too — no change asked); item 4 in lanes/skills.md :25; the .mdx untouched per the seat's note.
    • Not filed, carried to the maintainer in chat: the objectstack domain:cloud object was auto-created (colour/description differ from the roster until --reconcile); the roster was not run against GitHub in this PR.

    Implemented-by: claude/issue-18489-north-star-enforcement (os-dev, CONTRACT_REVIEW_TIER build)
    Reviewed-by: session_01BTeBejoPUvRHN8WdAJC6oF (domain:skills seat, contract tier)

    VERDICT: PASS — governed rules layer (AGENTS.md + docs/adr/**) ⇒ four-piece terminal; one authorized approval, then the seat lands it.


    Generated by Claude Code

  8. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    ACCEPT — PR #19142 @ 9826698f3 (three commits; nine files, +70 / −182) · skills seat session_01BTeBejoPUvRHN8WdAJC6oF · 2026-09-18T23:12Z

    Read on GitHub: draft, base main (aadea24b8, which carries docs/NORTH-STAR.md), body line 1 Fixes #18489, Clause-②: no at line start; closing keywords touch this card only; get_files = the nine paths named in the review record; skip-changeset present (size/m, documentation are the labellers'); two reports on this card (5737191360 at 022b06f6c, follow-up 5737279776 at 9826698f3), literal first line os-dev-report, JSON parses, read back to the tail. Contract review record 5737301010: PASS after one return (two findings, both fixed in the follow-up push and re-read by the seat). Seat gates at 9826698f3: ratchet 812/812 · 43/43 · 1099/1099, id-lint clean, governed-prose 6/6, label-desc-cap ≤100, clause2 --pair agree; governed self-test NOT MEASURED by the seat (no node_modules in either checkout) — CI is the reading. CI at 2026-09-18T23:11Z: 14 success · 8 skipped · 7 in progress, nothing red. The newest Claim: (5736794156's round) names this branch.

    Path face: check-governed-merges.mjs --pr 19142 → GOVERNED (6 of 9 paths; AGENTS.md + docs/adr/** are the rules layer) ⇒ draft stays; needs-user-decision goes on; the final 维护者速读 is on the PR; review requested from os-zhuang and hotlong. On an authorized APPROVED (ruling C) the seat lands it: record on head, --pair 0, checks green, ready + auto-merge SQUASH. #19133's PR (#19144) is SERIAL behind this one on the register and PD #14 and merges main once this lands. This card closes on the merge (Fixes).


    Generated by Claude Code

  9. removed their assignment
    on Sep 18, 2026
  10. os-elon-musk commented on Sep 18, 2026

    @os-elon-musk
    Collaborator

    Landed — PR #19142 @ 9826698f3 → main 4d1d9d9f9 (skills seat, 2026-09-18T23:35Z)

    Approved by os-zhuang (GOVERNED_APPROVERS; reviews 5253479671 · 5253480625 on 9826698f3 at 2026-09-18T23:33Z), readied and merged by os-zhuang's hand at 2026-09-18T23:33Z (squash 4d1d9d9f9; the seat's ruling-C landing was not needed). Read back on origin/main: SKILL.md :42 carries 北极星, :254 the domain:cloud + status:parked row; the register carries north-star. Contract review record 5737301010 (PASS at this head; its authorship pair re-flowed to two lines at 2026-09-18T23:34Z after check-clause2-carriers --pair read it half-written — content unchanged). Residue: pm:dispatched → pm:done, unassigned; needs-user-decision cleared on the PR. Consequences: PR #19144 (#19133) is now conflicted on the register row order, PD #14 and the prose header — its dev merges main and resolves; the seat re-records on the post-merge head. status:parked in objectui and the objectstack domain:cloud object's description: the seat runs ensure-pm-labels.sh for both at the next label pass (not this comment). This card closed on the merge.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions