openplanr 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/cli/commands/backlog-commands.d.ts +3 -0
- package/dist/cli/commands/backlog-commands.d.ts.map +1 -0
- package/dist/cli/commands/backlog-commands.js +60 -0
- package/dist/cli/commands/backlog-commands.js.map +1 -0
- package/dist/cli/commands/company.d.ts.map +1 -1
- package/dist/cli/commands/company.js +17 -0
- package/dist/cli/commands/company.js.map +1 -1
- package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
- package/dist/cli/commands/planning-artifacts.js +13 -5
- package/dist/cli/commands/planning-artifacts.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-B-l_941W.js → index-C_OquZVk.js} +2 -2
- package/dist/dashboard/assets/{index-B-l_941W.js.map → index-C_OquZVk.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +8 -8
- package/dist/dashboard/index.html +1 -1
- package/dist/services/artifact-service.d.ts.map +1 -1
- package/dist/services/artifact-service.js +13 -6
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/company-export-service.d.ts +41 -0
- package/dist/services/company-export-service.d.ts.map +1 -0
- package/dist/services/company-export-service.js +429 -0
- package/dist/services/company-export-service.js.map +1 -0
- package/dist/services/company-sync-service.d.ts +24 -1
- package/dist/services/company-sync-service.d.ts.map +1 -1
- package/dist/services/company-sync-service.js +36 -19
- package/dist/services/company-sync-service.js.map +1 -1
- package/docs/CLI.md +97 -1
- package/lib/backlog-item.d.mts +45 -1
- package/lib/backlog-item.mjs +302 -34
- package/lib/host-packages/adapter-registry.json +4 -4
- package/lib/host-packages/capability-map.json +1 -1
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/icon.png +0 -0
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +77 -77
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/ceo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/chair-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +3 -7
- package/lib/host-packages/claude/openplanr/skills/challenger-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/coo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/cpo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/cto-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +2 -3
- package/lib/host-packages/claude/openplanr/skills/investigate/references/backlog-filing.md +102 -0
- package/lib/host-packages/claude/openplanr/skills/investigate/references/findings.md +8 -16
- package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +73 -84
- package/lib/host-packages/claude/openplanr/skills/operate/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/operate/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +16 -17
- package/lib/host-packages/claude/openplanr/skills/plan/references/planning-ids.md +53 -0
- package/lib/host-packages/claude/openplanr/skills/plan/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/plan-review/SKILL.md +6 -6
- package/lib/host-packages/claude/openplanr/skills/plan-review/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/release/SKILL.md +40 -139
- package/lib/host-packages/claude/openplanr/skills/release/references/cadence.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/release-notes.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/release/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/schemes.md +4 -2
- package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +37 -24
- package/lib/host-packages/claude/openplanr/skills/ship/references/backlog-filing.md +102 -0
- package/lib/host-packages/claude/openplanr/skills/ship/references/findings.md +8 -16
- package/lib/host-packages/claude/openplanr/skills/ship/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +9 -9
- package/lib/host-packages/claude/openplanr/skills/spec/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +74 -74
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +3 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/backlog-filing.md +102 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/findings.md +8 -16
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +2 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +73 -84
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/planning-ids.md +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan-review/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan-review.mdc +6 -6
- package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +16 -17
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/cadence.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/release-notes.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/schemes.md +4 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-release.mdc +40 -139
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/backlog-filing.md +102 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/findings.md +8 -16
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +37 -24
- package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +9 -9
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +89 -89
- package/lib/host-packages/openai/openplanr/skills/ceo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/ceo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/chair-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/chair-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +3 -7
- package/lib/host-packages/openai/openplanr/skills/challenger-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/challenger-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/cmo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/coo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/coo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/cpo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/cpo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/cto-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/cto-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +2 -3
- package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/investigate/references/backlog-filing.md +102 -0
- package/lib/host-packages/openai/openplanr/skills/investigate/references/findings.md +8 -16
- package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +73 -84
- package/lib/host-packages/openai/openplanr/skills/operate/openplanr.skill.json +15 -4
- package/lib/host-packages/openai/openplanr/skills/operate/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/operate/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +16 -17
- package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +15 -4
- package/lib/host-packages/openai/openplanr/skills/plan/references/planning-ids.md +53 -0
- package/lib/host-packages/openai/openplanr/skills/plan/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/plan-review/SKILL.md +6 -6
- package/lib/host-packages/openai/openplanr/skills/plan-review/openplanr.skill.json +12 -1
- package/lib/host-packages/openai/openplanr/skills/plan-review/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/release/SKILL.md +40 -139
- package/lib/host-packages/openai/openplanr/skills/release/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/release/references/cadence.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/release-notes.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/release/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/schemes.md +4 -2
- package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +37 -24
- package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +9 -9
- package/lib/host-packages/openai/openplanr/skills/ship/references/backlog-filing.md +102 -0
- package/lib/host-packages/openai/openplanr/skills/ship/references/findings.md +8 -16
- package/lib/host-packages/openai/openplanr/skills/ship/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +9 -9
- package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +12 -1
- package/lib/host-packages/openai/openplanr/skills/spec/references/return-contract.md +10 -0
- package/package.json +1 -1
- package/lib/host-packages/claude/openplanr/.claude-plugin/icon.svg +0 -11
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/errors.mjs +0 -8
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
- package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/investigate/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/claude/openplanr/skills/operate/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +0 -166
- package/lib/host-packages/claude/openplanr/skills/release/scripts/collect_changes.sh +0 -85
- package/lib/host-packages/claude/openplanr/skills/ship/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +0 -108
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +0 -166
- package/lib/host-packages/cursor/openplanr/rules/planr-release/scripts/collect_changes.sh +0 -85
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +0 -108
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/errors.mjs +0 -8
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/errors.mjs +0 -8
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
- package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/investigate/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/openai/openplanr/skills/operate/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +0 -166
- package/lib/host-packages/openai/openplanr/skills/release/scripts/collect_changes.sh +0 -85
- package/lib/host-packages/openai/openplanr/skills/ship/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +0 -108
package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/note-checklist.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Operate note checklist
|
|
2
|
+
|
|
3
|
+
Check a written Operate note line by line before returning it. Each item names the diagnostic
|
|
4
|
+
code `openplanr operate validate-note` reports for the same problem. Fix what you can; report each
|
|
5
|
+
item that stays unresolved as a structural issue, with its code.
|
|
6
|
+
|
|
7
|
+
This checklist is the check. Never run `npx`, install or download anything, or search the
|
|
8
|
+
filesystem for a validator or the CLI. Run `openplanr operate validate-note <note> --profile
|
|
9
|
+
<profile> --contract-version 2.0.0` only if `command -v openplanr` succeeds, and treat its
|
|
10
|
+
diagnostics the same way.
|
|
11
|
+
|
|
12
|
+
Profiles: `advisor` (CEO, CTO, CPO, CMO and COO reviews), `challenger`, `chair` and
|
|
13
|
+
`board-report`. Notes written now use contract 2.0.0.
|
|
14
|
+
|
|
15
|
+
## Every profile
|
|
16
|
+
|
|
17
|
+
- [ ] The profile is one of the four above (`E_OPERATE_REVIEW_PROFILE_INVALID`).
|
|
18
|
+
- [ ] The preamble, before the first `##` heading, holds at most one contract line, written
|
|
19
|
+
`> **Contract:** …` or `- **Contract:** …`
|
|
20
|
+
(`E_OPERATE_REVIEW_CONTRACT_DECLARATION_DUPLICATE`). A note with no contract line passes.
|
|
21
|
+
Only a contract line that is present is checked: its value must be exactly
|
|
22
|
+
`operate-review-quality-contract@2.0.0` (`E_OPERATE_REVIEW_CONTRACT_DECLARATION_INVALID`
|
|
23
|
+
for an unsupported kind or version, `E_OPERATE_REVIEW_CONTRACT_VERSION_INVALID`,
|
|
24
|
+
`E_OPERATE_REVIEW_CONTRACT_VERSION_MISMATCH`).
|
|
25
|
+
- [ ] The note has exactly one level-one `#` title (`E_OPERATE_REVIEW_TITLE_MISSING`,
|
|
26
|
+
`E_OPERATE_REVIEW_TITLE_DUPLICATE`).
|
|
27
|
+
- [ ] The note fits its size limit in UTF-8 bytes: advisor 16 KiB, challenger 12 KiB, chair and
|
|
28
|
+
board-report 24 KiB (`E_OPERATE_REVIEW_SIZE_LIMIT`).
|
|
29
|
+
- [ ] Every required `##` section for the profile is present (`E_OPERATE_REVIEW_SECTION_MISSING`)
|
|
30
|
+
and appears once (`E_OPERATE_REVIEW_SECTION_DUPLICATE`); there is no other `##` section
|
|
31
|
+
(`E_OPERATE_REVIEW_SECTION_UNEXPECTED`); and the sections follow the order listed below
|
|
32
|
+
(`E_OPERATE_REVIEW_SECTION_ORDER`).
|
|
33
|
+
- [ ] Check section items, section fields and item fields only in sections that are present. A
|
|
34
|
+
missing section is reported once, as `E_OPERATE_REVIEW_SECTION_MISSING`, and yields no
|
|
35
|
+
field or item code for what it would have held. The preamble fields are always checked.
|
|
36
|
+
- [ ] Each required field is written as `- **Name:** value` or `> **Name:** value`, appears once
|
|
37
|
+
in its scope (`E_OPERATE_REVIEW_FIELD_DUPLICATE`), and holds a real value, not empty, `...`,
|
|
38
|
+
`TBD`, `TODO` or a `<placeholder>` (`E_OPERATE_REVIEW_FIELD_MISSING`).
|
|
39
|
+
- [ ] A field with a fixed value list uses one of the listed values exactly
|
|
40
|
+
(`E_OPERATE_REVIEW_FIELD_VALUE_INVALID`).
|
|
41
|
+
- [ ] The item section holds at least one item or its exact empty-state sentence
|
|
42
|
+
(`E_OPERATE_REVIEW_ITEM_OR_EMPTY_STATE_MISSING`), at most five items
|
|
43
|
+
(`E_OPERATE_REVIEW_ITEM_LIMIT`), headed `### <prefix><n> — <title>` and numbered 1, 2, 3
|
|
44
|
+
with no gaps or repeats (`E_OPERATE_REVIEW_ITEM_SEQUENCE`).
|
|
45
|
+
- [ ] `Decision-changing gaps` is `None.` or a list within its limit (advisor and challenger 3,
|
|
46
|
+
chair and board-report 5) counted as `- ` lines (`E_OPERATE_REVIEW_SECTION_ITEM_LIMIT`).
|
|
47
|
+
|
|
48
|
+
## advisor
|
|
49
|
+
|
|
50
|
+
- [ ] Preamble fields: `Signal` (`action`, `watch` or `insufficient context`) and `Bottom line`.
|
|
51
|
+
- [ ] Sections: `Findings`, `Recommended next move`, `Decision-changing gaps`,
|
|
52
|
+
`Sources consulted`.
|
|
53
|
+
- [ ] Items `F1`…`F5` under `Findings`, or `No decision-relevant finding was established.` Each
|
|
54
|
+
has `Priority` (`P0`, `P1`, `P2` or `unranked`), `Status` (`observed` or `inferred`),
|
|
55
|
+
`Why it matters`, `Sources`, `Confidence` and `Decision impact`.
|
|
56
|
+
- [ ] `Recommended next move` is exactly `No recommendation from current context.` or has
|
|
57
|
+
`Recommendation`, `Suggested owner`, `First step`, `Expected result`, `Check` and
|
|
58
|
+
`Revisit when`.
|
|
59
|
+
|
|
60
|
+
## challenger
|
|
61
|
+
|
|
62
|
+
- [ ] Preamble fields: `Verdict` (`holds`, `holds with exceptions` or `not decision-ready`) and
|
|
63
|
+
`Bottom line`.
|
|
64
|
+
- [ ] Sections: `Material exceptions`, `Decisions that still hold`, `Risks and dissent`,
|
|
65
|
+
`Decision-changing gaps`.
|
|
66
|
+
- [ ] Items `X1`…`X5` under `Material exceptions`, or `No material exception found.` Each has
|
|
67
|
+
`Target`, `Type` (`unsupported`, `contradicted`, `correlated reasoning`,
|
|
68
|
+
`missing alternative`, `unpriced downside` or `overconfident`), `Decision impact`,
|
|
69
|
+
`Challenge`, `Sources` and `Resolution`.
|
|
70
|
+
- [ ] `Risks and dissent` has `Dissent` and `Resolution condition`.
|
|
71
|
+
|
|
72
|
+
## chair
|
|
73
|
+
|
|
74
|
+
- [ ] Preamble fields: `Overall signal` (`act now`, `decide next`, `watch` or
|
|
75
|
+
`insufficient context`) and `Executive call`.
|
|
76
|
+
- [ ] Sections: `Decision queue`, `Action plan`, `Risks and dissent`, `Decision-changing gaps`,
|
|
77
|
+
`Review coverage`.
|
|
78
|
+
- [ ] The decision queue and action plan items below.
|
|
79
|
+
|
|
80
|
+
## board-report
|
|
81
|
+
|
|
82
|
+
- [ ] No preamble fields are required.
|
|
83
|
+
- [ ] Sections: `Scope`, `Executive summary`, `Decision queue`, `Action plan`,
|
|
84
|
+
`Risks and dissent`, `Decision-changing gaps`, `Review coverage`, `Issues`.
|
|
85
|
+
- [ ] `Scope` has `Subject`, `Window`, `Requested decision` and `Custody`.
|
|
86
|
+
- [ ] `Executive summary` is not empty (`E_OPERATE_REVIEW_SUMMARY_MISSING`); a missing
|
|
87
|
+
`Executive summary` section is reported both as `E_OPERATE_REVIEW_SECTION_MISSING` and as
|
|
88
|
+
`E_OPERATE_REVIEW_SUMMARY_MISSING`.
|
|
89
|
+
- [ ] Exceptions to "a missing section yields no other code": with at least one decision, a
|
|
90
|
+
missing `Action plan` (chair or board-report) also yields
|
|
91
|
+
`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`; in a contract 1.0.0 note, a missing `Executive call`
|
|
92
|
+
also yields `E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING` and a missing `Human gate` also yields
|
|
93
|
+
`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`.
|
|
94
|
+
- [ ] The decision queue and action plan items below.
|
|
95
|
+
|
|
96
|
+
## Decision queue and action plan (chair and board-report)
|
|
97
|
+
|
|
98
|
+
- [ ] Items `D1`…`D5` under `Decision queue`, or `No decision-ready proposal was established.`
|
|
99
|
+
- [ ] Each heading carries a priority: `### D1 — [P0] <title>`, with `P0`, `P1`, `P2` or
|
|
100
|
+
`unranked` (`E_OPERATE_REVIEW_ITEM_HEADING_INVALID`).
|
|
101
|
+
- [ ] Each decision has `Recommendation`, `Why now`, `Suggested owner`, `Confidence`,
|
|
102
|
+
`Alternative`, `First step`, `Expected result`, `Check`, `Dependencies`, `Revisit when`,
|
|
103
|
+
`Sources` and `Dissent`.
|
|
104
|
+
- [ ] With at least one decision, `Action plan` has the table header
|
|
105
|
+
`| ID | Priority | Action | Suggested owner | First step | Success measure | Check | Depends on |`
|
|
106
|
+
and at least one `A<n>` row (`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`).
|
|
107
|
+
- [ ] The action plan has at most seven rows (`E_OPERATE_REVIEW_ACTION_LIMIT`), and every row
|
|
108
|
+
has exactly eight columns, none empty or a placeholder from the field list above (`...`,
|
|
109
|
+
`TBD`, `TODO`, `<placeholder>`); `—` is accepted, for example in `Depends on`
|
|
110
|
+
(`E_OPERATE_REVIEW_ACTION_ROW_INVALID`).
|
|
111
|
+
|
|
112
|
+
## Older notes (contract 1.0.0)
|
|
113
|
+
|
|
114
|
+
Only for reading a note that declares `operate-human-review-contract@1.0.0`; never write one.
|
|
115
|
+
Its sections and fields differ from the lists above. A 1.0.0 board report also needs:
|
|
116
|
+
|
|
117
|
+
- [ ] A non-empty `Executive call` section (`E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING`).
|
|
118
|
+
- [ ] A `Human gate` with one statement per decision naming adopt, reject, defer, the decision's
|
|
119
|
+
owner and a reason; with no decision, it offers close, supply evidence, and re-run for any
|
|
120
|
+
absent review seat (`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`), and never offers adopt,
|
|
121
|
+
reject or defer (`E_OPERATE_REVIEW_HUMAN_GATE_CONTRADICTORY`).
|
|
122
|
+
|
|
123
|
+
A caller that requires a conforming note fails it as a whole when any item above is unresolved
|
|
124
|
+
(`E_OPERATE_REVIEW_NOTE_INVALID`); that whole-note code is never listed on the `CODES:` line.
|
|
125
|
+
|
|
126
|
+
## Report format
|
|
127
|
+
|
|
128
|
+
End the reply with exactly one line: `CODES: ` followed by every distinct code from the items
|
|
129
|
+
above, each written in full, sorted alphabetically and comma-separated; write
|
|
130
|
+
`CODES: none` when every item passes. Each code appears once however many times the problem
|
|
131
|
+
occurs.
|
|
@@ -122,13 +122,8 @@ findings, use `No recommendation from current context.`, and list only decision-
|
|
|
122
122
|
|
|
123
123
|
## Optional quality check and return
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
```sh
|
|
128
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-output-path>" --profile advisor --contract-version 2.0.0
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Treat its diagnostics as editing guidance and report any unresolved structural issue.
|
|
125
|
+
Check the note against the advisor profile in [the note checklist](note-checklist.md). Treat
|
|
126
|
+
unchecked items as editing guidance and report any unresolved structural issue.
|
|
132
127
|
|
|
133
128
|
Lead the chat return with the grounded signal and principal recommendation. Link
|
|
134
129
|
the output note, summarize the finding count, and state the evidence reviewed and
|
package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/references/note-checklist.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Operate note checklist
|
|
2
|
+
|
|
3
|
+
Check a written Operate note line by line before returning it. Each item names the diagnostic
|
|
4
|
+
code `openplanr operate validate-note` reports for the same problem. Fix what you can; report each
|
|
5
|
+
item that stays unresolved as a structural issue, with its code.
|
|
6
|
+
|
|
7
|
+
This checklist is the check. Never run `npx`, install or download anything, or search the
|
|
8
|
+
filesystem for a validator or the CLI. Run `openplanr operate validate-note <note> --profile
|
|
9
|
+
<profile> --contract-version 2.0.0` only if `command -v openplanr` succeeds, and treat its
|
|
10
|
+
diagnostics the same way.
|
|
11
|
+
|
|
12
|
+
Profiles: `advisor` (CEO, CTO, CPO, CMO and COO reviews), `challenger`, `chair` and
|
|
13
|
+
`board-report`. Notes written now use contract 2.0.0.
|
|
14
|
+
|
|
15
|
+
## Every profile
|
|
16
|
+
|
|
17
|
+
- [ ] The profile is one of the four above (`E_OPERATE_REVIEW_PROFILE_INVALID`).
|
|
18
|
+
- [ ] The preamble, before the first `##` heading, holds at most one contract line, written
|
|
19
|
+
`> **Contract:** …` or `- **Contract:** …`
|
|
20
|
+
(`E_OPERATE_REVIEW_CONTRACT_DECLARATION_DUPLICATE`). A note with no contract line passes.
|
|
21
|
+
Only a contract line that is present is checked: its value must be exactly
|
|
22
|
+
`operate-review-quality-contract@2.0.0` (`E_OPERATE_REVIEW_CONTRACT_DECLARATION_INVALID`
|
|
23
|
+
for an unsupported kind or version, `E_OPERATE_REVIEW_CONTRACT_VERSION_INVALID`,
|
|
24
|
+
`E_OPERATE_REVIEW_CONTRACT_VERSION_MISMATCH`).
|
|
25
|
+
- [ ] The note has exactly one level-one `#` title (`E_OPERATE_REVIEW_TITLE_MISSING`,
|
|
26
|
+
`E_OPERATE_REVIEW_TITLE_DUPLICATE`).
|
|
27
|
+
- [ ] The note fits its size limit in UTF-8 bytes: advisor 16 KiB, challenger 12 KiB, chair and
|
|
28
|
+
board-report 24 KiB (`E_OPERATE_REVIEW_SIZE_LIMIT`).
|
|
29
|
+
- [ ] Every required `##` section for the profile is present (`E_OPERATE_REVIEW_SECTION_MISSING`)
|
|
30
|
+
and appears once (`E_OPERATE_REVIEW_SECTION_DUPLICATE`); there is no other `##` section
|
|
31
|
+
(`E_OPERATE_REVIEW_SECTION_UNEXPECTED`); and the sections follow the order listed below
|
|
32
|
+
(`E_OPERATE_REVIEW_SECTION_ORDER`).
|
|
33
|
+
- [ ] Check section items, section fields and item fields only in sections that are present. A
|
|
34
|
+
missing section is reported once, as `E_OPERATE_REVIEW_SECTION_MISSING`, and yields no
|
|
35
|
+
field or item code for what it would have held. The preamble fields are always checked.
|
|
36
|
+
- [ ] Each required field is written as `- **Name:** value` or `> **Name:** value`, appears once
|
|
37
|
+
in its scope (`E_OPERATE_REVIEW_FIELD_DUPLICATE`), and holds a real value, not empty, `...`,
|
|
38
|
+
`TBD`, `TODO` or a `<placeholder>` (`E_OPERATE_REVIEW_FIELD_MISSING`).
|
|
39
|
+
- [ ] A field with a fixed value list uses one of the listed values exactly
|
|
40
|
+
(`E_OPERATE_REVIEW_FIELD_VALUE_INVALID`).
|
|
41
|
+
- [ ] The item section holds at least one item or its exact empty-state sentence
|
|
42
|
+
(`E_OPERATE_REVIEW_ITEM_OR_EMPTY_STATE_MISSING`), at most five items
|
|
43
|
+
(`E_OPERATE_REVIEW_ITEM_LIMIT`), headed `### <prefix><n> — <title>` and numbered 1, 2, 3
|
|
44
|
+
with no gaps or repeats (`E_OPERATE_REVIEW_ITEM_SEQUENCE`).
|
|
45
|
+
- [ ] `Decision-changing gaps` is `None.` or a list within its limit (advisor and challenger 3,
|
|
46
|
+
chair and board-report 5) counted as `- ` lines (`E_OPERATE_REVIEW_SECTION_ITEM_LIMIT`).
|
|
47
|
+
|
|
48
|
+
## advisor
|
|
49
|
+
|
|
50
|
+
- [ ] Preamble fields: `Signal` (`action`, `watch` or `insufficient context`) and `Bottom line`.
|
|
51
|
+
- [ ] Sections: `Findings`, `Recommended next move`, `Decision-changing gaps`,
|
|
52
|
+
`Sources consulted`.
|
|
53
|
+
- [ ] Items `F1`…`F5` under `Findings`, or `No decision-relevant finding was established.` Each
|
|
54
|
+
has `Priority` (`P0`, `P1`, `P2` or `unranked`), `Status` (`observed` or `inferred`),
|
|
55
|
+
`Why it matters`, `Sources`, `Confidence` and `Decision impact`.
|
|
56
|
+
- [ ] `Recommended next move` is exactly `No recommendation from current context.` or has
|
|
57
|
+
`Recommendation`, `Suggested owner`, `First step`, `Expected result`, `Check` and
|
|
58
|
+
`Revisit when`.
|
|
59
|
+
|
|
60
|
+
## challenger
|
|
61
|
+
|
|
62
|
+
- [ ] Preamble fields: `Verdict` (`holds`, `holds with exceptions` or `not decision-ready`) and
|
|
63
|
+
`Bottom line`.
|
|
64
|
+
- [ ] Sections: `Material exceptions`, `Decisions that still hold`, `Risks and dissent`,
|
|
65
|
+
`Decision-changing gaps`.
|
|
66
|
+
- [ ] Items `X1`…`X5` under `Material exceptions`, or `No material exception found.` Each has
|
|
67
|
+
`Target`, `Type` (`unsupported`, `contradicted`, `correlated reasoning`,
|
|
68
|
+
`missing alternative`, `unpriced downside` or `overconfident`), `Decision impact`,
|
|
69
|
+
`Challenge`, `Sources` and `Resolution`.
|
|
70
|
+
- [ ] `Risks and dissent` has `Dissent` and `Resolution condition`.
|
|
71
|
+
|
|
72
|
+
## chair
|
|
73
|
+
|
|
74
|
+
- [ ] Preamble fields: `Overall signal` (`act now`, `decide next`, `watch` or
|
|
75
|
+
`insufficient context`) and `Executive call`.
|
|
76
|
+
- [ ] Sections: `Decision queue`, `Action plan`, `Risks and dissent`, `Decision-changing gaps`,
|
|
77
|
+
`Review coverage`.
|
|
78
|
+
- [ ] The decision queue and action plan items below.
|
|
79
|
+
|
|
80
|
+
## board-report
|
|
81
|
+
|
|
82
|
+
- [ ] No preamble fields are required.
|
|
83
|
+
- [ ] Sections: `Scope`, `Executive summary`, `Decision queue`, `Action plan`,
|
|
84
|
+
`Risks and dissent`, `Decision-changing gaps`, `Review coverage`, `Issues`.
|
|
85
|
+
- [ ] `Scope` has `Subject`, `Window`, `Requested decision` and `Custody`.
|
|
86
|
+
- [ ] `Executive summary` is not empty (`E_OPERATE_REVIEW_SUMMARY_MISSING`); a missing
|
|
87
|
+
`Executive summary` section is reported both as `E_OPERATE_REVIEW_SECTION_MISSING` and as
|
|
88
|
+
`E_OPERATE_REVIEW_SUMMARY_MISSING`.
|
|
89
|
+
- [ ] Exceptions to "a missing section yields no other code": with at least one decision, a
|
|
90
|
+
missing `Action plan` (chair or board-report) also yields
|
|
91
|
+
`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`; in a contract 1.0.0 note, a missing `Executive call`
|
|
92
|
+
also yields `E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING` and a missing `Human gate` also yields
|
|
93
|
+
`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`.
|
|
94
|
+
- [ ] The decision queue and action plan items below.
|
|
95
|
+
|
|
96
|
+
## Decision queue and action plan (chair and board-report)
|
|
97
|
+
|
|
98
|
+
- [ ] Items `D1`…`D5` under `Decision queue`, or `No decision-ready proposal was established.`
|
|
99
|
+
- [ ] Each heading carries a priority: `### D1 — [P0] <title>`, with `P0`, `P1`, `P2` or
|
|
100
|
+
`unranked` (`E_OPERATE_REVIEW_ITEM_HEADING_INVALID`).
|
|
101
|
+
- [ ] Each decision has `Recommendation`, `Why now`, `Suggested owner`, `Confidence`,
|
|
102
|
+
`Alternative`, `First step`, `Expected result`, `Check`, `Dependencies`, `Revisit when`,
|
|
103
|
+
`Sources` and `Dissent`.
|
|
104
|
+
- [ ] With at least one decision, `Action plan` has the table header
|
|
105
|
+
`| ID | Priority | Action | Suggested owner | First step | Success measure | Check | Depends on |`
|
|
106
|
+
and at least one `A<n>` row (`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`).
|
|
107
|
+
- [ ] The action plan has at most seven rows (`E_OPERATE_REVIEW_ACTION_LIMIT`), and every row
|
|
108
|
+
has exactly eight columns, none empty or a placeholder from the field list above (`...`,
|
|
109
|
+
`TBD`, `TODO`, `<placeholder>`); `—` is accepted, for example in `Depends on`
|
|
110
|
+
(`E_OPERATE_REVIEW_ACTION_ROW_INVALID`).
|
|
111
|
+
|
|
112
|
+
## Older notes (contract 1.0.0)
|
|
113
|
+
|
|
114
|
+
Only for reading a note that declares `operate-human-review-contract@1.0.0`; never write one.
|
|
115
|
+
Its sections and fields differ from the lists above. A 1.0.0 board report also needs:
|
|
116
|
+
|
|
117
|
+
- [ ] A non-empty `Executive call` section (`E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING`).
|
|
118
|
+
- [ ] A `Human gate` with one statement per decision naming adopt, reject, defer, the decision's
|
|
119
|
+
owner and a reason; with no decision, it offers close, supply evidence, and re-run for any
|
|
120
|
+
absent review seat (`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`), and never offers adopt,
|
|
121
|
+
reject or defer (`E_OPERATE_REVIEW_HUMAN_GATE_CONTRADICTORY`).
|
|
122
|
+
|
|
123
|
+
A caller that requires a conforming note fails it as a whole when any item above is unresolved
|
|
124
|
+
(`E_OPERATE_REVIEW_NOTE_INVALID`); that whole-note code is never listed on the `CODES:` line.
|
|
125
|
+
|
|
126
|
+
## Report format
|
|
127
|
+
|
|
128
|
+
End the reply with exactly one line: `CODES: ` followed by every distinct code from the items
|
|
129
|
+
above, each written in full, sorted alphabetically and comma-separated; write
|
|
130
|
+
`CODES: none` when every item passes. Each code appears once however many times the problem
|
|
131
|
+
occurs.
|
|
@@ -92,13 +92,8 @@ unknowns specific to the decisions they affect.
|
|
|
92
92
|
|
|
93
93
|
## Optional quality check and return
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
```sh
|
|
98
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-output-path>" --profile chair --contract-version 2.0.0 --json
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Use diagnostics to improve the note when useful and report any remaining structural issue.
|
|
95
|
+
Check the note against the chair profile in [the note checklist](planr-chair-review/references/note-checklist.md).
|
|
96
|
+
Use unchecked items to improve the note when useful and report any remaining structural issue.
|
|
102
97
|
|
|
103
98
|
## Return
|
|
104
99
|
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Operate note checklist
|
|
2
|
+
|
|
3
|
+
Check a written Operate note line by line before returning it. Each item names the diagnostic
|
|
4
|
+
code `openplanr operate validate-note` reports for the same problem. Fix what you can; report each
|
|
5
|
+
item that stays unresolved as a structural issue, with its code.
|
|
6
|
+
|
|
7
|
+
This checklist is the check. Never run `npx`, install or download anything, or search the
|
|
8
|
+
filesystem for a validator or the CLI. Run `openplanr operate validate-note <note> --profile
|
|
9
|
+
<profile> --contract-version 2.0.0` only if `command -v openplanr` succeeds, and treat its
|
|
10
|
+
diagnostics the same way.
|
|
11
|
+
|
|
12
|
+
Profiles: `advisor` (CEO, CTO, CPO, CMO and COO reviews), `challenger`, `chair` and
|
|
13
|
+
`board-report`. Notes written now use contract 2.0.0.
|
|
14
|
+
|
|
15
|
+
## Every profile
|
|
16
|
+
|
|
17
|
+
- [ ] The profile is one of the four above (`E_OPERATE_REVIEW_PROFILE_INVALID`).
|
|
18
|
+
- [ ] The preamble, before the first `##` heading, holds at most one contract line, written
|
|
19
|
+
`> **Contract:** …` or `- **Contract:** …`
|
|
20
|
+
(`E_OPERATE_REVIEW_CONTRACT_DECLARATION_DUPLICATE`). A note with no contract line passes.
|
|
21
|
+
Only a contract line that is present is checked: its value must be exactly
|
|
22
|
+
`operate-review-quality-contract@2.0.0` (`E_OPERATE_REVIEW_CONTRACT_DECLARATION_INVALID`
|
|
23
|
+
for an unsupported kind or version, `E_OPERATE_REVIEW_CONTRACT_VERSION_INVALID`,
|
|
24
|
+
`E_OPERATE_REVIEW_CONTRACT_VERSION_MISMATCH`).
|
|
25
|
+
- [ ] The note has exactly one level-one `#` title (`E_OPERATE_REVIEW_TITLE_MISSING`,
|
|
26
|
+
`E_OPERATE_REVIEW_TITLE_DUPLICATE`).
|
|
27
|
+
- [ ] The note fits its size limit in UTF-8 bytes: advisor 16 KiB, challenger 12 KiB, chair and
|
|
28
|
+
board-report 24 KiB (`E_OPERATE_REVIEW_SIZE_LIMIT`).
|
|
29
|
+
- [ ] Every required `##` section for the profile is present (`E_OPERATE_REVIEW_SECTION_MISSING`)
|
|
30
|
+
and appears once (`E_OPERATE_REVIEW_SECTION_DUPLICATE`); there is no other `##` section
|
|
31
|
+
(`E_OPERATE_REVIEW_SECTION_UNEXPECTED`); and the sections follow the order listed below
|
|
32
|
+
(`E_OPERATE_REVIEW_SECTION_ORDER`).
|
|
33
|
+
- [ ] Check section items, section fields and item fields only in sections that are present. A
|
|
34
|
+
missing section is reported once, as `E_OPERATE_REVIEW_SECTION_MISSING`, and yields no
|
|
35
|
+
field or item code for what it would have held. The preamble fields are always checked.
|
|
36
|
+
- [ ] Each required field is written as `- **Name:** value` or `> **Name:** value`, appears once
|
|
37
|
+
in its scope (`E_OPERATE_REVIEW_FIELD_DUPLICATE`), and holds a real value, not empty, `...`,
|
|
38
|
+
`TBD`, `TODO` or a `<placeholder>` (`E_OPERATE_REVIEW_FIELD_MISSING`).
|
|
39
|
+
- [ ] A field with a fixed value list uses one of the listed values exactly
|
|
40
|
+
(`E_OPERATE_REVIEW_FIELD_VALUE_INVALID`).
|
|
41
|
+
- [ ] The item section holds at least one item or its exact empty-state sentence
|
|
42
|
+
(`E_OPERATE_REVIEW_ITEM_OR_EMPTY_STATE_MISSING`), at most five items
|
|
43
|
+
(`E_OPERATE_REVIEW_ITEM_LIMIT`), headed `### <prefix><n> — <title>` and numbered 1, 2, 3
|
|
44
|
+
with no gaps or repeats (`E_OPERATE_REVIEW_ITEM_SEQUENCE`).
|
|
45
|
+
- [ ] `Decision-changing gaps` is `None.` or a list within its limit (advisor and challenger 3,
|
|
46
|
+
chair and board-report 5) counted as `- ` lines (`E_OPERATE_REVIEW_SECTION_ITEM_LIMIT`).
|
|
47
|
+
|
|
48
|
+
## advisor
|
|
49
|
+
|
|
50
|
+
- [ ] Preamble fields: `Signal` (`action`, `watch` or `insufficient context`) and `Bottom line`.
|
|
51
|
+
- [ ] Sections: `Findings`, `Recommended next move`, `Decision-changing gaps`,
|
|
52
|
+
`Sources consulted`.
|
|
53
|
+
- [ ] Items `F1`…`F5` under `Findings`, or `No decision-relevant finding was established.` Each
|
|
54
|
+
has `Priority` (`P0`, `P1`, `P2` or `unranked`), `Status` (`observed` or `inferred`),
|
|
55
|
+
`Why it matters`, `Sources`, `Confidence` and `Decision impact`.
|
|
56
|
+
- [ ] `Recommended next move` is exactly `No recommendation from current context.` or has
|
|
57
|
+
`Recommendation`, `Suggested owner`, `First step`, `Expected result`, `Check` and
|
|
58
|
+
`Revisit when`.
|
|
59
|
+
|
|
60
|
+
## challenger
|
|
61
|
+
|
|
62
|
+
- [ ] Preamble fields: `Verdict` (`holds`, `holds with exceptions` or `not decision-ready`) and
|
|
63
|
+
`Bottom line`.
|
|
64
|
+
- [ ] Sections: `Material exceptions`, `Decisions that still hold`, `Risks and dissent`,
|
|
65
|
+
`Decision-changing gaps`.
|
|
66
|
+
- [ ] Items `X1`…`X5` under `Material exceptions`, or `No material exception found.` Each has
|
|
67
|
+
`Target`, `Type` (`unsupported`, `contradicted`, `correlated reasoning`,
|
|
68
|
+
`missing alternative`, `unpriced downside` or `overconfident`), `Decision impact`,
|
|
69
|
+
`Challenge`, `Sources` and `Resolution`.
|
|
70
|
+
- [ ] `Risks and dissent` has `Dissent` and `Resolution condition`.
|
|
71
|
+
|
|
72
|
+
## chair
|
|
73
|
+
|
|
74
|
+
- [ ] Preamble fields: `Overall signal` (`act now`, `decide next`, `watch` or
|
|
75
|
+
`insufficient context`) and `Executive call`.
|
|
76
|
+
- [ ] Sections: `Decision queue`, `Action plan`, `Risks and dissent`, `Decision-changing gaps`,
|
|
77
|
+
`Review coverage`.
|
|
78
|
+
- [ ] The decision queue and action plan items below.
|
|
79
|
+
|
|
80
|
+
## board-report
|
|
81
|
+
|
|
82
|
+
- [ ] No preamble fields are required.
|
|
83
|
+
- [ ] Sections: `Scope`, `Executive summary`, `Decision queue`, `Action plan`,
|
|
84
|
+
`Risks and dissent`, `Decision-changing gaps`, `Review coverage`, `Issues`.
|
|
85
|
+
- [ ] `Scope` has `Subject`, `Window`, `Requested decision` and `Custody`.
|
|
86
|
+
- [ ] `Executive summary` is not empty (`E_OPERATE_REVIEW_SUMMARY_MISSING`); a missing
|
|
87
|
+
`Executive summary` section is reported both as `E_OPERATE_REVIEW_SECTION_MISSING` and as
|
|
88
|
+
`E_OPERATE_REVIEW_SUMMARY_MISSING`.
|
|
89
|
+
- [ ] Exceptions to "a missing section yields no other code": with at least one decision, a
|
|
90
|
+
missing `Action plan` (chair or board-report) also yields
|
|
91
|
+
`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`; in a contract 1.0.0 note, a missing `Executive call`
|
|
92
|
+
also yields `E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING` and a missing `Human gate` also yields
|
|
93
|
+
`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`.
|
|
94
|
+
- [ ] The decision queue and action plan items below.
|
|
95
|
+
|
|
96
|
+
## Decision queue and action plan (chair and board-report)
|
|
97
|
+
|
|
98
|
+
- [ ] Items `D1`…`D5` under `Decision queue`, or `No decision-ready proposal was established.`
|
|
99
|
+
- [ ] Each heading carries a priority: `### D1 — [P0] <title>`, with `P0`, `P1`, `P2` or
|
|
100
|
+
`unranked` (`E_OPERATE_REVIEW_ITEM_HEADING_INVALID`).
|
|
101
|
+
- [ ] Each decision has `Recommendation`, `Why now`, `Suggested owner`, `Confidence`,
|
|
102
|
+
`Alternative`, `First step`, `Expected result`, `Check`, `Dependencies`, `Revisit when`,
|
|
103
|
+
`Sources` and `Dissent`.
|
|
104
|
+
- [ ] With at least one decision, `Action plan` has the table header
|
|
105
|
+
`| ID | Priority | Action | Suggested owner | First step | Success measure | Check | Depends on |`
|
|
106
|
+
and at least one `A<n>` row (`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`).
|
|
107
|
+
- [ ] The action plan has at most seven rows (`E_OPERATE_REVIEW_ACTION_LIMIT`), and every row
|
|
108
|
+
has exactly eight columns, none empty or a placeholder from the field list above (`...`,
|
|
109
|
+
`TBD`, `TODO`, `<placeholder>`); `—` is accepted, for example in `Depends on`
|
|
110
|
+
(`E_OPERATE_REVIEW_ACTION_ROW_INVALID`).
|
|
111
|
+
|
|
112
|
+
## Older notes (contract 1.0.0)
|
|
113
|
+
|
|
114
|
+
Only for reading a note that declares `operate-human-review-contract@1.0.0`; never write one.
|
|
115
|
+
Its sections and fields differ from the lists above. A 1.0.0 board report also needs:
|
|
116
|
+
|
|
117
|
+
- [ ] A non-empty `Executive call` section (`E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING`).
|
|
118
|
+
- [ ] A `Human gate` with one statement per decision naming adopt, reject, defer, the decision's
|
|
119
|
+
owner and a reason; with no decision, it offers close, supply evidence, and re-run for any
|
|
120
|
+
absent review seat (`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`), and never offers adopt,
|
|
121
|
+
reject or defer (`E_OPERATE_REVIEW_HUMAN_GATE_CONTRADICTORY`).
|
|
122
|
+
|
|
123
|
+
A caller that requires a conforming note fails it as a whole when any item above is unresolved
|
|
124
|
+
(`E_OPERATE_REVIEW_NOTE_INVALID`); that whole-note code is never listed on the `CODES:` line.
|
|
125
|
+
|
|
126
|
+
## Report format
|
|
127
|
+
|
|
128
|
+
End the reply with exactly one line: `CODES: ` followed by every distinct code from the items
|
|
129
|
+
above, each written in full, sorted alphabetically and comma-separated; write
|
|
130
|
+
`CODES: none` when every item passes. Each code appears once however many times the problem
|
|
131
|
+
occurs.
|
|
@@ -77,13 +77,9 @@ review. The Chair needs exceptions, surviving decisions, dissent, and resolution
|
|
|
77
77
|
|
|
78
78
|
## Optional quality check and return
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-output-path>" --profile challenger --contract-version 2.0.0 --json
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Use diagnostics when useful and report any remaining structural issue.
|
|
80
|
+
Check the note against the challenger profile in
|
|
81
|
+
[the note checklist](planr-challenger-review/references/note-checklist.md). Use unchecked items when useful and report any
|
|
82
|
+
remaining structural issue.
|
|
87
83
|
|
|
88
84
|
## Return
|
|
89
85
|
|
package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/note-checklist.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Operate note checklist
|
|
2
|
+
|
|
3
|
+
Check a written Operate note line by line before returning it. Each item names the diagnostic
|
|
4
|
+
code `openplanr operate validate-note` reports for the same problem. Fix what you can; report each
|
|
5
|
+
item that stays unresolved as a structural issue, with its code.
|
|
6
|
+
|
|
7
|
+
This checklist is the check. Never run `npx`, install or download anything, or search the
|
|
8
|
+
filesystem for a validator or the CLI. Run `openplanr operate validate-note <note> --profile
|
|
9
|
+
<profile> --contract-version 2.0.0` only if `command -v openplanr` succeeds, and treat its
|
|
10
|
+
diagnostics the same way.
|
|
11
|
+
|
|
12
|
+
Profiles: `advisor` (CEO, CTO, CPO, CMO and COO reviews), `challenger`, `chair` and
|
|
13
|
+
`board-report`. Notes written now use contract 2.0.0.
|
|
14
|
+
|
|
15
|
+
## Every profile
|
|
16
|
+
|
|
17
|
+
- [ ] The profile is one of the four above (`E_OPERATE_REVIEW_PROFILE_INVALID`).
|
|
18
|
+
- [ ] The preamble, before the first `##` heading, holds at most one contract line, written
|
|
19
|
+
`> **Contract:** …` or `- **Contract:** …`
|
|
20
|
+
(`E_OPERATE_REVIEW_CONTRACT_DECLARATION_DUPLICATE`). A note with no contract line passes.
|
|
21
|
+
Only a contract line that is present is checked: its value must be exactly
|
|
22
|
+
`operate-review-quality-contract@2.0.0` (`E_OPERATE_REVIEW_CONTRACT_DECLARATION_INVALID`
|
|
23
|
+
for an unsupported kind or version, `E_OPERATE_REVIEW_CONTRACT_VERSION_INVALID`,
|
|
24
|
+
`E_OPERATE_REVIEW_CONTRACT_VERSION_MISMATCH`).
|
|
25
|
+
- [ ] The note has exactly one level-one `#` title (`E_OPERATE_REVIEW_TITLE_MISSING`,
|
|
26
|
+
`E_OPERATE_REVIEW_TITLE_DUPLICATE`).
|
|
27
|
+
- [ ] The note fits its size limit in UTF-8 bytes: advisor 16 KiB, challenger 12 KiB, chair and
|
|
28
|
+
board-report 24 KiB (`E_OPERATE_REVIEW_SIZE_LIMIT`).
|
|
29
|
+
- [ ] Every required `##` section for the profile is present (`E_OPERATE_REVIEW_SECTION_MISSING`)
|
|
30
|
+
and appears once (`E_OPERATE_REVIEW_SECTION_DUPLICATE`); there is no other `##` section
|
|
31
|
+
(`E_OPERATE_REVIEW_SECTION_UNEXPECTED`); and the sections follow the order listed below
|
|
32
|
+
(`E_OPERATE_REVIEW_SECTION_ORDER`).
|
|
33
|
+
- [ ] Check section items, section fields and item fields only in sections that are present. A
|
|
34
|
+
missing section is reported once, as `E_OPERATE_REVIEW_SECTION_MISSING`, and yields no
|
|
35
|
+
field or item code for what it would have held. The preamble fields are always checked.
|
|
36
|
+
- [ ] Each required field is written as `- **Name:** value` or `> **Name:** value`, appears once
|
|
37
|
+
in its scope (`E_OPERATE_REVIEW_FIELD_DUPLICATE`), and holds a real value, not empty, `...`,
|
|
38
|
+
`TBD`, `TODO` or a `<placeholder>` (`E_OPERATE_REVIEW_FIELD_MISSING`).
|
|
39
|
+
- [ ] A field with a fixed value list uses one of the listed values exactly
|
|
40
|
+
(`E_OPERATE_REVIEW_FIELD_VALUE_INVALID`).
|
|
41
|
+
- [ ] The item section holds at least one item or its exact empty-state sentence
|
|
42
|
+
(`E_OPERATE_REVIEW_ITEM_OR_EMPTY_STATE_MISSING`), at most five items
|
|
43
|
+
(`E_OPERATE_REVIEW_ITEM_LIMIT`), headed `### <prefix><n> — <title>` and numbered 1, 2, 3
|
|
44
|
+
with no gaps or repeats (`E_OPERATE_REVIEW_ITEM_SEQUENCE`).
|
|
45
|
+
- [ ] `Decision-changing gaps` is `None.` or a list within its limit (advisor and challenger 3,
|
|
46
|
+
chair and board-report 5) counted as `- ` lines (`E_OPERATE_REVIEW_SECTION_ITEM_LIMIT`).
|
|
47
|
+
|
|
48
|
+
## advisor
|
|
49
|
+
|
|
50
|
+
- [ ] Preamble fields: `Signal` (`action`, `watch` or `insufficient context`) and `Bottom line`.
|
|
51
|
+
- [ ] Sections: `Findings`, `Recommended next move`, `Decision-changing gaps`,
|
|
52
|
+
`Sources consulted`.
|
|
53
|
+
- [ ] Items `F1`…`F5` under `Findings`, or `No decision-relevant finding was established.` Each
|
|
54
|
+
has `Priority` (`P0`, `P1`, `P2` or `unranked`), `Status` (`observed` or `inferred`),
|
|
55
|
+
`Why it matters`, `Sources`, `Confidence` and `Decision impact`.
|
|
56
|
+
- [ ] `Recommended next move` is exactly `No recommendation from current context.` or has
|
|
57
|
+
`Recommendation`, `Suggested owner`, `First step`, `Expected result`, `Check` and
|
|
58
|
+
`Revisit when`.
|
|
59
|
+
|
|
60
|
+
## challenger
|
|
61
|
+
|
|
62
|
+
- [ ] Preamble fields: `Verdict` (`holds`, `holds with exceptions` or `not decision-ready`) and
|
|
63
|
+
`Bottom line`.
|
|
64
|
+
- [ ] Sections: `Material exceptions`, `Decisions that still hold`, `Risks and dissent`,
|
|
65
|
+
`Decision-changing gaps`.
|
|
66
|
+
- [ ] Items `X1`…`X5` under `Material exceptions`, or `No material exception found.` Each has
|
|
67
|
+
`Target`, `Type` (`unsupported`, `contradicted`, `correlated reasoning`,
|
|
68
|
+
`missing alternative`, `unpriced downside` or `overconfident`), `Decision impact`,
|
|
69
|
+
`Challenge`, `Sources` and `Resolution`.
|
|
70
|
+
- [ ] `Risks and dissent` has `Dissent` and `Resolution condition`.
|
|
71
|
+
|
|
72
|
+
## chair
|
|
73
|
+
|
|
74
|
+
- [ ] Preamble fields: `Overall signal` (`act now`, `decide next`, `watch` or
|
|
75
|
+
`insufficient context`) and `Executive call`.
|
|
76
|
+
- [ ] Sections: `Decision queue`, `Action plan`, `Risks and dissent`, `Decision-changing gaps`,
|
|
77
|
+
`Review coverage`.
|
|
78
|
+
- [ ] The decision queue and action plan items below.
|
|
79
|
+
|
|
80
|
+
## board-report
|
|
81
|
+
|
|
82
|
+
- [ ] No preamble fields are required.
|
|
83
|
+
- [ ] Sections: `Scope`, `Executive summary`, `Decision queue`, `Action plan`,
|
|
84
|
+
`Risks and dissent`, `Decision-changing gaps`, `Review coverage`, `Issues`.
|
|
85
|
+
- [ ] `Scope` has `Subject`, `Window`, `Requested decision` and `Custody`.
|
|
86
|
+
- [ ] `Executive summary` is not empty (`E_OPERATE_REVIEW_SUMMARY_MISSING`); a missing
|
|
87
|
+
`Executive summary` section is reported both as `E_OPERATE_REVIEW_SECTION_MISSING` and as
|
|
88
|
+
`E_OPERATE_REVIEW_SUMMARY_MISSING`.
|
|
89
|
+
- [ ] Exceptions to "a missing section yields no other code": with at least one decision, a
|
|
90
|
+
missing `Action plan` (chair or board-report) also yields
|
|
91
|
+
`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`; in a contract 1.0.0 note, a missing `Executive call`
|
|
92
|
+
also yields `E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING` and a missing `Human gate` also yields
|
|
93
|
+
`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`.
|
|
94
|
+
- [ ] The decision queue and action plan items below.
|
|
95
|
+
|
|
96
|
+
## Decision queue and action plan (chair and board-report)
|
|
97
|
+
|
|
98
|
+
- [ ] Items `D1`…`D5` under `Decision queue`, or `No decision-ready proposal was established.`
|
|
99
|
+
- [ ] Each heading carries a priority: `### D1 — [P0] <title>`, with `P0`, `P1`, `P2` or
|
|
100
|
+
`unranked` (`E_OPERATE_REVIEW_ITEM_HEADING_INVALID`).
|
|
101
|
+
- [ ] Each decision has `Recommendation`, `Why now`, `Suggested owner`, `Confidence`,
|
|
102
|
+
`Alternative`, `First step`, `Expected result`, `Check`, `Dependencies`, `Revisit when`,
|
|
103
|
+
`Sources` and `Dissent`.
|
|
104
|
+
- [ ] With at least one decision, `Action plan` has the table header
|
|
105
|
+
`| ID | Priority | Action | Suggested owner | First step | Success measure | Check | Depends on |`
|
|
106
|
+
and at least one `A<n>` row (`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`).
|
|
107
|
+
- [ ] The action plan has at most seven rows (`E_OPERATE_REVIEW_ACTION_LIMIT`), and every row
|
|
108
|
+
has exactly eight columns, none empty or a placeholder from the field list above (`...`,
|
|
109
|
+
`TBD`, `TODO`, `<placeholder>`); `—` is accepted, for example in `Depends on`
|
|
110
|
+
(`E_OPERATE_REVIEW_ACTION_ROW_INVALID`).
|
|
111
|
+
|
|
112
|
+
## Older notes (contract 1.0.0)
|
|
113
|
+
|
|
114
|
+
Only for reading a note that declares `operate-human-review-contract@1.0.0`; never write one.
|
|
115
|
+
Its sections and fields differ from the lists above. A 1.0.0 board report also needs:
|
|
116
|
+
|
|
117
|
+
- [ ] A non-empty `Executive call` section (`E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING`).
|
|
118
|
+
- [ ] A `Human gate` with one statement per decision naming adopt, reject, defer, the decision's
|
|
119
|
+
owner and a reason; with no decision, it offers close, supply evidence, and re-run for any
|
|
120
|
+
absent review seat (`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`), and never offers adopt,
|
|
121
|
+
reject or defer (`E_OPERATE_REVIEW_HUMAN_GATE_CONTRADICTORY`).
|
|
122
|
+
|
|
123
|
+
A caller that requires a conforming note fails it as a whole when any item above is unresolved
|
|
124
|
+
(`E_OPERATE_REVIEW_NOTE_INVALID`); that whole-note code is never listed on the `CODES:` line.
|
|
125
|
+
|
|
126
|
+
## Report format
|
|
127
|
+
|
|
128
|
+
End the reply with exactly one line: `CODES: ` followed by every distinct code from the items
|
|
129
|
+
above, each written in full, sorted alphabetically and comma-separated; write
|
|
130
|
+
`CODES: none` when every item passes. Each code appears once however many times the problem
|
|
131
|
+
occurs.
|
|
@@ -122,13 +122,8 @@ findings, use `No recommendation from current context.`, and list only decision-
|
|
|
122
122
|
|
|
123
123
|
## Optional quality check and return
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
```sh
|
|
128
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-output-path>" --profile advisor --contract-version 2.0.0
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Treat its diagnostics as editing guidance and report any unresolved structural issue.
|
|
125
|
+
Check the note against the advisor profile in [the note checklist](note-checklist.md). Treat
|
|
126
|
+
unchecked items as editing guidance and report any unresolved structural issue.
|
|
132
127
|
|
|
133
128
|
Lead the chat return with the grounded signal and principal recommendation. Link
|
|
134
129
|
the output note, summarize the finding count, and state the evidence reviewed and
|