You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pm-dispatch: the decision inbox gets a standard machine-marked four-facet block, a pinned digest view, and a batch-adjudication channel #9761
Maintainer ruling (2026-08-18, PM chat with the skills seat, session session_01WswfK2yNYT9hNnMH6TzAwL). Proposal verbatim: 「是不是应该有一个统一的地方可以登记和查看决策箱的4维分析记录。分诊PM对于决策箱的内容可以提前4维分析完,我只要定期看分析的结果,批量审核就可以。」 Token-cost revision, verbatim: 「统一视图 = scripts/pm/decision-inbox-rollup.mjs,这个和我直接分诊PM说,让他现场找,是不是会更加节省toekn」 — the script half is deferred behind a written trigger; the load-bearing half is block standardization (extraction degrades from an LLM comprehension task to a grep). Final 「同意」 on the revised four-point shape.
This implements the standing 2026-08-15 batch-adjudication ruling (「还是等我批量决裁吧。」) with the carrier it never had.
Change (.claude/skills/pm-dispatch/SKILL.md; a triage-duty line in the 分诊座位职责 section)
Standard four-facet block — every needs-user-decision card carries, at filing: a machine-findable marker (fixed literal, e.g. an HTML-comment marker the sanitizer is known to preserve — the author verifies survival per the read-layer clause), the four facet lines, a one-line recommendation, lettered options (A/B/…), and one mandatory confidence-gap line ("what this analysis cannot see") — case law: two four-facet-aligned, low-risk, green, reviewed PRs were voided 2026-08-15 for direction premises the analysis could not see; the recommendation is INPUT, never clearance; the human floor is unchanged. Triage validates/completes the block at inbox intake; legacy cards are backfilled on a low-frequency sub-round.
Pinned digest issue — one issue is the standing digest; the triage Routine refreshes its BODY (edit history = archive, seat-post mechanics) using a generic query + marker extraction (~ten inline lines, verbatim block paste, zero paraphrase). Authority stays on the cards — the digest is a generated view, never a second tracker (one-board rule).
Batch-adjudication channel — one maintainer comment on the digest may rule many cards ("9533 A · 9617 B · …"); the triage seat transcribes each ruling onto its card under the existing atomic four-stroke discipline, quoting the batch comment as provenance.
Script upgrade trigger, written down: if the inbox sustains >20 open cards or refresh cadence reaches daily (the inline command starts drifting across fires), freeze the extraction into scripts/pm/decision-inbox-rollup.mjs — a recorded exit, not a redesign.
Ratchet: SKILL.md 682/682 headroom 0 — additions paid by cuts, ⛔ no re-wrap. Serial: SKILL.md hot file — bundle with #9699 (objectos A-upgrade line, same file), one claim, one PR, Fixes both. Fable (clause ①); governed ⇒ draft, human merge. The pinned digest issue itself is created by the triage seat at first refresh, not by this PR.
Claim: PM loop round 4 (skills seat) — bundle lead (#9761 + #9699, one PR, Fixes both — same-file serial resolved by bundling)
Session: session_01WswfK2yNYT9hNnMH6TzAwL
Branch: claude/issue-9761-decision-inbox-digest
Worktree: objectstack-issue-9761
Domain: domain:skills
File surface: .claude/skills/pm-dispatch/SKILL.md only (决策箱/升级与决策 section + 分诊座位职责 duty line + multi-repo objectos sentence) (stop on breach; explain in the report)
Container & model: M, mode:subagent, model: claude-fable-5 — clause ① path mandate (SKILL.md), per this shift's dispatch-gates --tier derivation
Clause-②: no — internal protocol text
Serial constraints cleared: zero open PRs touch .claude/skills/** (PR #9715 targets AGENTS.md + references, disjoint; PR #9720 targets os-dev.md, disjoint — both awaiting human merge); the queued #9315+#8941 SKILL.md card is NOT yet claimed and stays behind this bundle per the seat post's hot-file queue.
{
"issue": 9761,
"status": "done",
"branch": "claude/issue-9761-decision-inbox-digest",
"pr": "https://github.com/objectstack-ai/objectstack/pull/9769",
"premise_still_valid": true,
"summary": "Bundle PR (Fixes 9761 + 9699), file surface .claude/skills/pm-dispatch/SKILL.md ONLY. Landed: standard four-facet block (fixed escaped HTML-comment marker os-decision-facets + four facet lines + one-line recommendation + lettered options + mandatory confidence-gap line, with the 2026-08-15 case law and recommendation-is-INPUT clause), pinned digest view + one-comment batch-adjudication channel + atomic four-stroke transcription, triage duty line, written greater-than-20-open/daily-cadence script-upgrade exit; multi-repo section rewritten to the live repo:objectos execution seat (A-upgrade exercised 2026-08-18) with the honest-machinery clause updated to the live merge queue + required build + merge_group, and the now-contradictory devx fold-in parenthetical in the ACCEPT path-fork paragraph trimmed at zero net lines. Governed surface: PR is DRAFT, human merge only.",
"tests": "All at final head 78f9daa, clean tree. check:pm-skill-ratchet exit 0 (SKILL.md 681/682, headroom 1; every references file still at its ceiling); check:pm-skill-id-lint exit 0 (9 files clean); check:skill-frame-sync exit 0 (4 copies isomorphic, 3 axes, 4 count mentions agree) + --self-test 12 cases exit 0; check:skill-frame-freshness exit 0; check:pm-governed-merges CI form --self-test exit 0 (77 assertions); check:doc-authoring exit 0 (377 files); pnpm --workspace-concurrency=2 --filter @objectstack/lint run check:doc-formula-expressions exit 0 (PIPESTATUS 0; dependency closure built first); node scripts/check-nul-bytes.mjs exit 0 (6237 files). Pre-flight: node scripts/pm/check-governed-merges.mjs --test .claude/skills/pm-dispatch/SKILL.md answered GOVERNED, exit 3 (quoted in PR body — first live use of the predicate in a delivery). files_changed: 1 (+43/-44). Ratchet payment table with named surviving copies is in the PR body; all cuts are true dedups into references/review-checklist.md, references/landing-operations.md and references/dispatch-runbook.md, no re-wrap. skip-changeset applied read-modify-write and read back: labels now [documentation, size/s, skip-changeset].",
"open_questions": [],
"out_of_scope_findings": []
}
Verified against GitHub / local runs at head 78f9daa — not the report's self-description:
Shape: draft, base main, Fixes lines 1–2; changed files exactly .claude/skills/pm-dispatch/SKILL.md (+43/−44, net −1); skip-changeset read back.
Content vs both rulings: the standard block lands with all six elements (marker os-decision-facets with escaped-write + read-back + literal-grep extraction rule, four facets, recommendation + lettered options, mandatory confidence-gap line, the 2026-08-15 case law described without card numbers — id-lint clean confirms); digest = generated view with zero-paraphrase verbatim paste and one-board rule stated; batch channel transcribes via the existing atomic four-stroke; script-upgrade exit written (>20 sustained / daily cadence). objectos sentence now states the live seat, four-repo triage, and the LIVE queue + build + merge_group machinery; the contradictory devx fold-in parenthetical in the ACCEPT fork was consistently trimmed.
Payment audited cut-by-cut: review-skeleton compressions survive verbatim in review-checklist.md (read in full this shift — Fixes/Part-of rules, changeset split incl. the objectui never-mint clause, rejection-assertion and green≠proof criteria, falsification and deletion/NUL criteria all present); landing compressions survive in landing-operations.md §B (double-driver, unsubscribe+archive, orphan-subscription lines spot-read) and §C/§D (parked-red list, serial relay — section headers + content spot-read); the 云卡四课 kept all four lessons inline in compressed form. No content lost, no re-wrap.
My own gate runs at 78f9daa: ratchet green (SKILL.md 681/682 — first headroom this file has had), id-lint 9 clean, frame-sync isomorphic, --test on the file answers governed/exit 3 (the predicate's first live delivery use, as instructed).
Deviation: none.
Post-merge activation note for the triage seat: on landing, create the pinned digest issue at first refresh and begin block validation at intake per the new duty line.
Close-out accounting (skills seat, session session_01WswfK2yNYT9hNnMH6TzAwL): PR #9769 MERGED 2026-08-19 00:35Z via the maintainer's enqueue; this card and #9699 auto-closed via Fixes, stale pm:dispatched removed from both (read-modify-write, read back). Live from this merge: the standard four-facet block (marker os-decision-facets, confidence-gap line), the pinned digest + one-comment batch adjudication channel (triage seat creates the digest issue at its first refresh), and the repo:objectos seat in the protocol text. Note for the triage seat: the frame's axis wording is being renamed 三轴→四维 by the in-flight successor card — validate blocks against the marker and shape, not the axis-count word, during the transition.
Activity
os-support-ai commentedon Aug 18, 2026
Claim: PM loop round 4 (skills seat) — bundle lead (#9761 + #9699, one PR, Fixes both — same-file serial resolved by bundling)
Session:
session_01WswfK2yNYT9hNnMH6TzAwLBranch:
claude/issue-9761-decision-inbox-digestWorktree:
objectstack-issue-9761Domain:
domain:skillsFile surface:
.claude/skills/pm-dispatch/SKILL.mdonly (决策箱/升级与决策 section + 分诊座位职责 duty line + multi-repo objectos sentence) (stop on breach; explain in the report)Container & model: M,
mode:subagent,model: claude-fable-5— clause ① path mandate (SKILL.md), per this shift's dispatch-gates --tier derivationClause-②: no — internal protocol text
Serial constraints cleared: zero open PRs touch
.claude/skills/**(PR #9715 targets AGENTS.md + references, disjoint; PR #9720 targets os-dev.md, disjoint — both awaiting human merge); the queued #9315+#8941 SKILL.md card is NOT yet claimed and stays behind this bundle per the seat post's hot-file queue.Generated by Claude Code
os-support-ai commentedon Aug 18, 2026
<!-- os-dev-report -->
{ "issue": 9761, "status": "done", "branch": "claude/issue-9761-decision-inbox-digest", "pr": "https://github.com/objectstack-ai/objectstack/pull/9769", "premise_still_valid": true, "summary": "Bundle PR (Fixes 9761 + 9699), file surface .claude/skills/pm-dispatch/SKILL.md ONLY. Landed: standard four-facet block (fixed escaped HTML-comment marker os-decision-facets + four facet lines + one-line recommendation + lettered options + mandatory confidence-gap line, with the 2026-08-15 case law and recommendation-is-INPUT clause), pinned digest view + one-comment batch-adjudication channel + atomic four-stroke transcription, triage duty line, written greater-than-20-open/daily-cadence script-upgrade exit; multi-repo section rewritten to the live repo:objectos execution seat (A-upgrade exercised 2026-08-18) with the honest-machinery clause updated to the live merge queue + required build + merge_group, and the now-contradictory devx fold-in parenthetical in the ACCEPT path-fork paragraph trimmed at zero net lines. Governed surface: PR is DRAFT, human merge only.", "tests": "All at final head 78f9daa, clean tree. check:pm-skill-ratchet exit 0 (SKILL.md 681/682, headroom 1; every references file still at its ceiling); check:pm-skill-id-lint exit 0 (9 files clean); check:skill-frame-sync exit 0 (4 copies isomorphic, 3 axes, 4 count mentions agree) + --self-test 12 cases exit 0; check:skill-frame-freshness exit 0; check:pm-governed-merges CI form --self-test exit 0 (77 assertions); check:doc-authoring exit 0 (377 files); pnpm --workspace-concurrency=2 --filter @objectstack/lint run check:doc-formula-expressions exit 0 (PIPESTATUS 0; dependency closure built first); node scripts/check-nul-bytes.mjs exit 0 (6237 files). Pre-flight: node scripts/pm/check-governed-merges.mjs --test .claude/skills/pm-dispatch/SKILL.md answered GOVERNED, exit 3 (quoted in PR body — first live use of the predicate in a delivery). files_changed: 1 (+43/-44). Ratchet payment table with named surviving copies is in the PR body; all cuts are true dedups into references/review-checklist.md, references/landing-operations.md and references/dispatch-runbook.md, no re-wrap. skip-changeset applied read-modify-write and read back: labels now [documentation, size/s, skip-changeset].", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
Generated by Claude Code
os-support-ai commentedon Aug 18, 2026
ACCEPT — PR #9769, closing #9761 + #9699 (reviewer of record: skills seat, session
session_01WswfK2yNYT9hNnMH6TzAwL). Governed surface ⇒ terminal three-step: conclusion here, PR stays draft awaiting the maintainer's merge, round report lists it.Verified against GitHub / local runs at head
78f9daa— not the report's self-description:main,Fixeslines 1–2; changed files exactly.claude/skills/pm-dispatch/SKILL.md(+43/−44, net −1);skip-changesetread back.os-decision-facetswith escaped-write + read-back + literal-grep extraction rule, four facets, recommendation + lettered options, mandatory confidence-gap line, the 2026-08-15 case law described without card numbers — id-lint clean confirms); digest = generated view with zero-paraphrase verbatim paste and one-board rule stated; batch channel transcribes via the existing atomic four-stroke; script-upgrade exit written (>20 sustained / daily cadence). objectos sentence now states the live seat, four-repo triage, and the LIVE queue +build+merge_groupmachinery; the contradictory devx fold-in parenthetical in the ACCEPT fork was consistently trimmed.review-checklist.md(read in full this shift — Fixes/Part-of rules, changeset split incl. the objectui never-mint clause, rejection-assertion and green≠proof criteria, falsification and deletion/NUL criteria all present); landing compressions survive inlanding-operations.md§B (double-driver, unsubscribe+archive, orphan-subscription lines spot-read) and §C/§D (parked-red list, serial relay — section headers + content spot-read); the 云卡四课 kept all four lessons inline in compressed form. No content lost, no re-wrap.78f9daa: ratchet green (SKILL.md 681/682 — first headroom this file has had), id-lint 9 clean, frame-sync isomorphic,--teston the file answers governed/exit 3 (the predicate's first live delivery use, as instructed).Post-merge activation note for the triage seat: on landing, create the pinned digest issue at first refresh and begin block validation at intake per the new duty line.
Generated by Claude Code
os-support-ai commentedon Aug 19, 2026
Close-out accounting (skills seat, session
session_01WswfK2yNYT9hNnMH6TzAwL): PR #9769 MERGED 2026-08-19 00:35Z via the maintainer's enqueue; this card and #9699 auto-closed viaFixes, stalepm:dispatchedremoved from both (read-modify-write, read back). Live from this merge: the standard four-facet block (markeros-decision-facets, confidence-gap line), the pinned digest + one-comment batch adjudication channel (triage seat creates the digest issue at its first refresh), and therepo:objectosseat in the protocol text. Note for the triage seat: the frame's axis wording is being renamed 三轴→四维 by the in-flight successor card — validate blocks against the marker and shape, not the axis-count word, during the transition.Generated by Claude Code