Path: none
Maintainer ruling (chat, 2026-09-19), verbatim: 「感觉 platform-checklist 不是很合适,我们是不是应该维护一个平台真的功能清单,以及实现状态。」 → seat proposal: no second document; add the status axis to the existing ledger → 「同意,立卡」.
Why
docs/qa/platform-checklist/areas/*.json holds 264 items, all status: active — the ledger records only implemented, verified capabilities. The North Star's definition line (「做出来的是什么」… 「缺任何一样就不是这个应用」) makes a missing piece of a listed capability a requirement, but the ledger has nowhere to hold it, so (a) the backlog sweep has nowhere to point a capability-gap card and (b) the platform's implementation status lives in nobody's head. A separate feature list would drift against the ledger (the ADR-0136 lesson; the North Star: 「本页不带任何数字;数字从命令来」). One ledger, one id space, one more status.
仪器 question (北极星「仪器为车队服务」): which fleet decision differs — the disposition of every capability-gap card in the live two-repo sweep (keep with a Path: to a planned item vs. closed as 「不在清单上」), and where checklist-author writes a gap it finds. ⇒ p1 (blocks the sweep's 「待补账本」 column).
Scope
- Item schema (
docs/qa/platform-checklist/README.md, the item field table): status gains planned — a capability the definition requires, not yet implemented or not yet verified; a planned item carries id, area, title, priority, personas, since: null (or the target release), and NO steps until it is implementable. Existing values keep their meaning; every current item stays active.
docs/qa/platform-checklist/RUNNER.md + .claude/skills/checklist-test/SKILL.md: a planned item is skipped by every selector and reported as planned in the run record, never as pass/fail/blocked.
scripts/check-platform-checklist.mjs + coverage.json: a planned item does not count as coverage for any governed metadata kind (a kind mapped only to planned items is still UNMAPPED); the check's self-test pins both directions.
.claude/skills/checklist-author/SKILL.md: the five-angle coverage sweep writes a gap under a definition item as a planned item (title, area, priority) instead of leaving it in a comment; promotion planned → active happens only with a run record in which the item passed.
- One command (e.g.
pnpm checklist:status, or a --status mode of the existing check) that prints, per area, the counts of active / planned items and lists the planned ids — the 「平台功能清单 + 实现状态」 view is this command's output, not a hand-maintained page.
- The North Star's 「账本」 sentence is untouched (the ledger is still
docs/qa/platform-checklist/); AGENTS.md untouched unless a pointer there names the status axis (then Tier H).
Acceptance
- A fixture area file with one
planned item: check-platform-checklist.mjs green with the kind still mapped by an active item, RED (unmapped) when the kind's only item is planned; the RUNNER selector on that area reports the item as planned and runs nothing for it.
- Status command output for the current tree: 264 active · 0 planned across 15 areas (numbers from the command, not typed anywhere).
pnpm check:doc-authoring, check:pm-skill-ratchet (the two skills' ceilings), check:pm-skill-id-lint, check:skill-frame-sync green.
Relations
Generated by Claude Code
Path: none
Maintainer ruling (chat, 2026-09-19), verbatim: 「感觉 platform-checklist 不是很合适,我们是不是应该维护一个平台真的功能清单,以及实现状态。」 → seat proposal: no second document; add the status axis to the existing ledger → 「同意,立卡」.
Why
docs/qa/platform-checklist/areas/*.jsonholds 264 items, allstatus: active— the ledger records only implemented, verified capabilities. The North Star's definition line (「做出来的是什么」… 「缺任何一样就不是这个应用」) makes a missing piece of a listed capability a requirement, but the ledger has nowhere to hold it, so (a) the backlog sweep has nowhere to point a capability-gap card and (b) the platform's implementation status lives in nobody's head. A separate feature list would drift against the ledger (the ADR-0136 lesson; the North Star: 「本页不带任何数字;数字从命令来」). One ledger, one id space, one more status.仪器 question (北极星「仪器为车队服务」): which fleet decision differs — the disposition of every capability-gap card in the live two-repo sweep (keep with a
Path:to a planned item vs. closed as 「不在清单上」), and wherechecklist-authorwrites a gap it finds. ⇒ p1 (blocks the sweep's 「待补账本」 column).Scope
docs/qa/platform-checklist/README.md, the item field table):statusgainsplanned— a capability the definition requires, not yet implemented or not yet verified; a planned item carriesid,area,title,priority,personas,since: null(or the target release), and NO steps until it is implementable. Existing values keep their meaning; every current item staysactive.docs/qa/platform-checklist/RUNNER.md+.claude/skills/checklist-test/SKILL.md: aplanneditem is skipped by every selector and reported asplannedin the run record, never as pass/fail/blocked.scripts/check-platform-checklist.mjs+coverage.json: aplanneditem does not count as coverage for any governed metadata kind (a kind mapped only to planned items is still UNMAPPED); the check's self-test pins both directions..claude/skills/checklist-author/SKILL.md: the five-angle coverage sweep writes a gap under a definition item as aplanneditem (title, area, priority) instead of leaving it in a comment; promotionplanned → activehappens only with a run record in which the item passed.pnpm checklist:status, or a--statusmode of the existing check) that prints, per area, the counts ofactive/planneditems and lists the planned ids — the 「平台功能清单 + 实现状态」 view is this command's output, not a hand-maintained page.docs/qa/platform-checklist/); AGENTS.md untouched unless a pointer there names the status axis (then Tier H).Acceptance
planneditem:check-platform-checklist.mjsgreen with the kind still mapped by an active item, RED (unmapped) when the kind's only item is planned; the RUNNER selector on that area reports the item asplannedand runs nothing for it.pnpm check:doc-authoring,check:pm-skill-ratchet(the two skills' ceilings),check:pm-skill-id-lint,check:skill-frame-syncgreen.Relations
Path:carries the item id, the card inherits the item's P, and 「有人在等」 is not a test #19155 (Path:line carries 定义项 | 清单项 id 或缺项) reads this card's planned ids as the 「缺项」 half; skills(pm-dispatch): grading reads the checklist ITEM, not the area —Path:carries the item id, the card inherits the item's P, and 「有人在等」 is not a test #19155 lands after this one or names缺项as the placeholder.checklist-author.Generated by Claude Code