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
|
@@ -31,9 +31,8 @@ Merge duplicates within the run. Sort by severity, highest first, and number fro
|
|
|
31
31
|
|
|
32
32
|
## Check what is already tracked
|
|
33
33
|
|
|
34
|
-
Before showing findings, list open backlog items
|
|
35
|
-
|
|
36
|
-
--project <repository-root> --open`. A finding about the same problem as an open item,
|
|
34
|
+
Before showing findings, list open backlog items as
|
|
35
|
+
[backlog filing](backlog-filing.md) describes. A finding about the same problem as an open item,
|
|
37
36
|
normally the same evidence file and an equivalent title, is `tracked`. Never file
|
|
38
37
|
it again and never edit the existing item.
|
|
39
38
|
|
|
@@ -52,26 +51,19 @@ rule that applies. File only what it allows.
|
|
|
52
51
|
example a print or exec mode), another skill or a delegate runner started this
|
|
53
52
|
run, or the user said not to ask. Read `findings.unattended` in
|
|
54
53
|
`.planr/config.json`. Only `file` files every untracked finding. With
|
|
55
|
-
`report`, or no setting, do not
|
|
54
|
+
`report`, or no setting, do not file at all: mark the findings `reported`.
|
|
56
55
|
|
|
57
56
|
Never ask per finding, never ask mid-run, and never file or drop a finding
|
|
58
57
|
silently.
|
|
59
58
|
|
|
60
59
|
## File
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
File each item from its `title`, `priority`, `tags` and `description` as
|
|
62
|
+
[backlog filing](backlog-filing.md) describes. Never add acceptance criteria.
|
|
63
|
+
When the `openplanr` command files it and the result says
|
|
64
|
+
`templateOverrideIgnored`, say the default format was used.
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
`PATH`; never `npx`): `openplanr --project-dir <repository-root> backlog add
|
|
67
|
-
--data - --json`.
|
|
68
|
-
- Otherwise: `node <helper> add --project <repository-root> --data -`. Its
|
|
69
|
-
result can carry `cliHint`; end the result with that line, word for word,
|
|
70
|
-
once. Install only if the user says yes then, by running exactly the command in
|
|
71
|
-
the line. If the result says `templateOverrideIgnored`, say the default format
|
|
72
|
-
was used.
|
|
73
|
-
|
|
74
|
-
If filing fails, report the command and its error, and leave the finding
|
|
66
|
+
If filing fails, report the step and its error, and leave the finding
|
|
75
67
|
`reported`.
|
|
76
68
|
|
|
77
69
|
## Report
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Return rules
|
|
2
|
+
|
|
3
|
+
Shared by Spec, Plan, Plan Review, Ship, Operate and Release. Each skill lists its own fields.
|
|
4
|
+
|
|
5
|
+
- Lead with the outcome: what is ready, prepared or released, then what is partial or blocked.
|
|
6
|
+
- Link durable artifacts by purpose. Keep inventories, command output and transcripts in their files.
|
|
7
|
+
- Report only checks you ran, with their result. Name each check you could not run and what stays unverified.
|
|
8
|
+
- Omit empty fields. Give each open issue its impact and the smallest recovery action.
|
|
9
|
+
- The summary is a human view, not a schema. Different wording never calls for a rerun or a correction pass.
|
|
10
|
+
- Keep any machine-readable field a skill defines unchanged.
|
|
@@ -12,10 +12,10 @@ another model process.
|
|
|
12
12
|
|
|
13
13
|
## Ground the specification
|
|
14
14
|
|
|
15
|
-
Read the request,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
Read the files the request names, plus `AGENTS.md` and `CLAUDE.md` when tracked,
|
|
16
|
+
in one batch. Expand only for a missing contract, a dependency or a contradiction,
|
|
17
|
+
and stop when each claim has evidence or a named gap. Infer facts the repository
|
|
18
|
+
already answers.
|
|
19
19
|
|
|
20
20
|
When a missing decision materially changes scope or observable behavior, use
|
|
21
21
|
the host's structured question interface. Ask no more than three short,
|
|
@@ -45,9 +45,10 @@ out-of-scope boundaries. Record concrete repository paths and verification
|
|
|
45
45
|
signals when they are known. Keep unresolved questions out of the saved
|
|
46
46
|
contract when a repository-backed default exists.
|
|
47
47
|
|
|
48
|
-
Validate the completed artifact before returning
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
Validate the completed artifact before returning: run `openplanr spec validate <SPEC-ID>`
|
|
49
|
+
when `command -v openplanr` succeeds, otherwise check the path, frontmatter,
|
|
50
|
+
headings and acceptance IDs against the specification contract directly. Never
|
|
51
|
+
fall back to a model-backed CLI.
|
|
51
52
|
|
|
52
53
|
## Return
|
|
53
54
|
|
|
@@ -62,5 +63,4 @@ If the specification is partial or blocked, name the missing decision and its im
|
|
|
62
63
|
none remains.
|
|
63
64
|
- **Next:** a copy-ready host-native `planr-plan` invocation for the saved spec.
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
to rerun a completed operation for different wording.
|
|
66
|
+
Follow [the shared return rules](references/return-contract.md).
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"protocolVersion": "1.8.0",
|
|
5
5
|
"skillId": "planr-spec",
|
|
6
|
-
"skillVersion": "1.0
|
|
6
|
+
"skillVersion": "1.1.0",
|
|
7
7
|
"entrypoint": "SKILL.md",
|
|
8
8
|
"hosts": [
|
|
9
9
|
"claude-code",
|
|
@@ -32,6 +32,17 @@
|
|
|
32
32
|
"cursor"
|
|
33
33
|
],
|
|
34
34
|
"executable": false
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"path": "references/return-contract.md",
|
|
38
|
+
"kind": "reference",
|
|
39
|
+
"hosts": [
|
|
40
|
+
"claude-code",
|
|
41
|
+
"codex",
|
|
42
|
+
"chatgpt",
|
|
43
|
+
"cursor"
|
|
44
|
+
],
|
|
45
|
+
"executable": false
|
|
35
46
|
}
|
|
36
47
|
]
|
|
37
48
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Return rules
|
|
2
|
+
|
|
3
|
+
Shared by Spec, Plan, Plan Review, Ship, Operate and Release. Each skill lists its own fields.
|
|
4
|
+
|
|
5
|
+
- Lead with the outcome: what is ready, prepared or released, then what is partial or blocked.
|
|
6
|
+
- Link durable artifacts by purpose. Keep inventories, command output and transcripts in their files.
|
|
7
|
+
- Report only checks you ran, with their result. Name each check you could not run and what stays unverified.
|
|
8
|
+
- Omit empty fields. Give each open issue its impact and the smallest recovery action.
|
|
9
|
+
- The summary is a human view, not a schema. Different wording never calls for a rerun or a correction pass.
|
|
10
|
+
- Keep any machine-readable field a skill defines unchanged.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openplanr",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "The openplanr CLI: validates plans in your repo, lists the checks a change needs, renders diagrams, installs 25+ skills into Claude Code, Codex and Cursor, and syncs GitHub Issues and Linear. No model calls.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli/index.js",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" role="img" aria-labelledby="title desc">
|
|
2
|
-
<title id="title">OpenPlanr application icon</title>
|
|
3
|
-
<desc id="desc">The Open Decision mark on a rounded near-black tile.</desc>
|
|
4
|
-
<rect width="160" height="160" rx="35" fill="#08080C"/>
|
|
5
|
-
<g transform="translate(24 24) scale(.7)">
|
|
6
|
-
<g transform="rotate(-45 80 80)">
|
|
7
|
-
<path d="M125 50A52 52 0 1 0 125 110" fill="none" stroke="#5EEAD4" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
|
8
|
-
<rect x="127" y="71" width="18" height="18" rx="3" fill="#5EEAD4"/>
|
|
9
|
-
</g>
|
|
10
|
-
</g>
|
|
11
|
-
</svg>
|
package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-contract.mjs
DELETED
|
@@ -1,428 +0,0 @@
|
|
|
1
|
-
const deepFreeze = (value) => {
|
|
2
|
-
if (value && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
3
|
-
for (const child of Object.values(value)) deepFreeze(child);
|
|
4
|
-
Object.freeze(value);
|
|
5
|
-
}
|
|
6
|
-
return value;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Historical Operate Markdown contract.
|
|
11
|
-
*
|
|
12
|
-
* This remains available only so notes written by released 1.x guidance can be
|
|
13
|
-
* identified and read. Canonical skills must use the current v2 contract below.
|
|
14
|
-
*/
|
|
15
|
-
export const OPERATE_REVIEW_NOTE_PROFILES_V1 = deepFreeze({
|
|
16
|
-
advisor: {
|
|
17
|
-
maxBytes: 16 * 1024,
|
|
18
|
-
sections: [
|
|
19
|
-
'Findings',
|
|
20
|
-
'Recommended next move',
|
|
21
|
-
'Decision-changing gaps',
|
|
22
|
-
'Evidence index',
|
|
23
|
-
'Review coverage',
|
|
24
|
-
'Audit note',
|
|
25
|
-
],
|
|
26
|
-
summaryFields: ['Signal', 'Bottom line'],
|
|
27
|
-
summaryValues: {
|
|
28
|
-
Signal: ['action', 'watch', 'insufficient evidence'],
|
|
29
|
-
},
|
|
30
|
-
item: {
|
|
31
|
-
section: 'Findings',
|
|
32
|
-
idPrefix: 'F',
|
|
33
|
-
maxItems: 5,
|
|
34
|
-
emptyText: 'No decision-relevant finding was established.',
|
|
35
|
-
fields: [
|
|
36
|
-
'Priority',
|
|
37
|
-
'Status',
|
|
38
|
-
'Why it matters',
|
|
39
|
-
'Evidence',
|
|
40
|
-
'Confidence',
|
|
41
|
-
'Decision implication',
|
|
42
|
-
],
|
|
43
|
-
fieldValues: {
|
|
44
|
-
Priority: ['P0', 'P1', 'P2', 'unranked'],
|
|
45
|
-
Status: ['observed', 'inferred'],
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
sectionFields: {
|
|
49
|
-
'Recommended next move': [
|
|
50
|
-
'Recommendation',
|
|
51
|
-
'Proposed owner',
|
|
52
|
-
'First step',
|
|
53
|
-
'Expected result',
|
|
54
|
-
'Verification',
|
|
55
|
-
'Reversible / revisit when',
|
|
56
|
-
'Evidence',
|
|
57
|
-
],
|
|
58
|
-
'Review coverage': ['Questions answered', 'Questions not established', 'Evidence boundary'],
|
|
59
|
-
},
|
|
60
|
-
sectionEmptyStates: {
|
|
61
|
-
'Recommended next move': 'No recommendation from current evidence.',
|
|
62
|
-
},
|
|
63
|
-
sectionItemLimits: {
|
|
64
|
-
'Decision-changing gaps': 3,
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
challenger: {
|
|
68
|
-
maxBytes: 12 * 1024,
|
|
69
|
-
sections: [
|
|
70
|
-
'Material exceptions',
|
|
71
|
-
'Decisions that still hold',
|
|
72
|
-
'Material dissent',
|
|
73
|
-
'Decision-changing gaps',
|
|
74
|
-
'Audit note',
|
|
75
|
-
],
|
|
76
|
-
summaryFields: ['Verdict', 'Bottom line'],
|
|
77
|
-
summaryValues: {
|
|
78
|
-
Verdict: ['holds', 'holds with exceptions', 'not decision-ready'],
|
|
79
|
-
},
|
|
80
|
-
item: {
|
|
81
|
-
section: 'Material exceptions',
|
|
82
|
-
idPrefix: 'X',
|
|
83
|
-
maxItems: 5,
|
|
84
|
-
emptyText: 'No material exception found.',
|
|
85
|
-
fields: ['Target', 'Type', 'Decision impact', 'Challenge', 'Evidence', 'Resolution'],
|
|
86
|
-
fieldValues: {
|
|
87
|
-
Type: [
|
|
88
|
-
'unsupported',
|
|
89
|
-
'contradicted',
|
|
90
|
-
'correlated reasoning',
|
|
91
|
-
'missing alternative',
|
|
92
|
-
'unpriced downside',
|
|
93
|
-
'overconfident',
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
sectionFields: {
|
|
98
|
-
'Material dissent': ['Dissent', 'Resolution condition'],
|
|
99
|
-
},
|
|
100
|
-
sectionItemLimits: {
|
|
101
|
-
'Decision-changing gaps': 3,
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
chair: {
|
|
105
|
-
maxBytes: 24 * 1024,
|
|
106
|
-
sections: [
|
|
107
|
-
'Decision queue',
|
|
108
|
-
'Action plan',
|
|
109
|
-
'Material risks and dissent',
|
|
110
|
-
'Decision-changing gaps',
|
|
111
|
-
'Review trail',
|
|
112
|
-
'Evidence index',
|
|
113
|
-
'Human gate',
|
|
114
|
-
],
|
|
115
|
-
summaryFields: ['Overall signal', 'Executive call'],
|
|
116
|
-
summaryValues: {
|
|
117
|
-
'Overall signal': ['act now', 'decide next', 'watch', 'insufficient evidence'],
|
|
118
|
-
},
|
|
119
|
-
item: {
|
|
120
|
-
section: 'Decision queue',
|
|
121
|
-
idPrefix: 'D',
|
|
122
|
-
maxItems: 5,
|
|
123
|
-
emptyText: 'No decision-ready proposal was established.',
|
|
124
|
-
headingSuffixPattern: /^\[(?:P0|P1|P2|unranked)\]\s+\S/u,
|
|
125
|
-
fields: [
|
|
126
|
-
'Recommendation',
|
|
127
|
-
'Why now',
|
|
128
|
-
'Owner',
|
|
129
|
-
'Confidence',
|
|
130
|
-
'Alternative',
|
|
131
|
-
'First step',
|
|
132
|
-
'Expected result',
|
|
133
|
-
'Verification',
|
|
134
|
-
'Dependencies',
|
|
135
|
-
'Reversible / revisit when',
|
|
136
|
-
'Evidence',
|
|
137
|
-
'Dissent',
|
|
138
|
-
],
|
|
139
|
-
},
|
|
140
|
-
sectionFields: {},
|
|
141
|
-
sectionItemLimits: {
|
|
142
|
-
'Decision-changing gaps': 5,
|
|
143
|
-
},
|
|
144
|
-
},
|
|
145
|
-
'board-report': {
|
|
146
|
-
maxBytes: 24 * 1024,
|
|
147
|
-
sections: [
|
|
148
|
-
'Scope and custody',
|
|
149
|
-
'Executive call',
|
|
150
|
-
'Decision queue',
|
|
151
|
-
'Action plan',
|
|
152
|
-
'Material risks and dissent',
|
|
153
|
-
'Decision-changing gaps',
|
|
154
|
-
'Review trail',
|
|
155
|
-
'Human gate',
|
|
156
|
-
],
|
|
157
|
-
summaryFields: [],
|
|
158
|
-
item: {
|
|
159
|
-
section: 'Decision queue',
|
|
160
|
-
idPrefix: 'D',
|
|
161
|
-
maxItems: 5,
|
|
162
|
-
emptyText: 'No decision-ready proposal was established.',
|
|
163
|
-
headingSuffixPattern: /^\[(?:P0|P1|P2|unranked)\]\s+\S/u,
|
|
164
|
-
fields: [
|
|
165
|
-
'Recommendation',
|
|
166
|
-
'Why now',
|
|
167
|
-
'Owner',
|
|
168
|
-
'Confidence',
|
|
169
|
-
'Alternative',
|
|
170
|
-
'First step',
|
|
171
|
-
'Expected result',
|
|
172
|
-
'Verification',
|
|
173
|
-
'Dependencies',
|
|
174
|
-
'Reversible / revisit when',
|
|
175
|
-
'Evidence',
|
|
176
|
-
'Dissent',
|
|
177
|
-
],
|
|
178
|
-
},
|
|
179
|
-
sectionFields: {
|
|
180
|
-
'Scope and custody': [
|
|
181
|
-
'Subject',
|
|
182
|
-
'Evidence window',
|
|
183
|
-
'Pending decision',
|
|
184
|
-
'Cycle owner',
|
|
185
|
-
'Custody',
|
|
186
|
-
],
|
|
187
|
-
},
|
|
188
|
-
sectionItemLimits: {
|
|
189
|
-
'Decision-changing gaps': 5,
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
export const OPERATE_REVIEW_NOTE_PROFILES = deepFreeze({
|
|
195
|
-
advisor: {
|
|
196
|
-
maxBytes: 16 * 1024,
|
|
197
|
-
sections: ['Findings', 'Recommended next move', 'Decision-changing gaps', 'Sources consulted'],
|
|
198
|
-
summaryFields: ['Signal', 'Bottom line'],
|
|
199
|
-
summaryValues: {
|
|
200
|
-
Signal: ['action', 'watch', 'insufficient context'],
|
|
201
|
-
},
|
|
202
|
-
item: {
|
|
203
|
-
section: 'Findings',
|
|
204
|
-
idPrefix: 'F',
|
|
205
|
-
maxItems: 5,
|
|
206
|
-
emptyText: 'No decision-relevant finding was established.',
|
|
207
|
-
fields: ['Priority', 'Status', 'Why it matters', 'Sources', 'Confidence', 'Decision impact'],
|
|
208
|
-
fieldValues: {
|
|
209
|
-
Priority: ['P0', 'P1', 'P2', 'unranked'],
|
|
210
|
-
Status: ['observed', 'inferred'],
|
|
211
|
-
},
|
|
212
|
-
},
|
|
213
|
-
sectionFields: {
|
|
214
|
-
'Recommended next move': [
|
|
215
|
-
'Recommendation',
|
|
216
|
-
'Suggested owner',
|
|
217
|
-
'First step',
|
|
218
|
-
'Expected result',
|
|
219
|
-
'Check',
|
|
220
|
-
'Revisit when',
|
|
221
|
-
],
|
|
222
|
-
},
|
|
223
|
-
sectionEmptyStates: {
|
|
224
|
-
'Recommended next move': 'No recommendation from current context.',
|
|
225
|
-
},
|
|
226
|
-
sectionItemLimits: {
|
|
227
|
-
'Decision-changing gaps': 3,
|
|
228
|
-
},
|
|
229
|
-
},
|
|
230
|
-
challenger: {
|
|
231
|
-
maxBytes: 12 * 1024,
|
|
232
|
-
sections: [
|
|
233
|
-
'Material exceptions',
|
|
234
|
-
'Decisions that still hold',
|
|
235
|
-
'Risks and dissent',
|
|
236
|
-
'Decision-changing gaps',
|
|
237
|
-
],
|
|
238
|
-
summaryFields: ['Verdict', 'Bottom line'],
|
|
239
|
-
summaryValues: {
|
|
240
|
-
Verdict: ['holds', 'holds with exceptions', 'not decision-ready'],
|
|
241
|
-
},
|
|
242
|
-
item: {
|
|
243
|
-
section: 'Material exceptions',
|
|
244
|
-
idPrefix: 'X',
|
|
245
|
-
maxItems: 5,
|
|
246
|
-
emptyText: 'No material exception found.',
|
|
247
|
-
fields: ['Target', 'Type', 'Decision impact', 'Challenge', 'Sources', 'Resolution'],
|
|
248
|
-
fieldValues: {
|
|
249
|
-
Type: [
|
|
250
|
-
'unsupported',
|
|
251
|
-
'contradicted',
|
|
252
|
-
'correlated reasoning',
|
|
253
|
-
'missing alternative',
|
|
254
|
-
'unpriced downside',
|
|
255
|
-
'overconfident',
|
|
256
|
-
],
|
|
257
|
-
},
|
|
258
|
-
},
|
|
259
|
-
sectionFields: {
|
|
260
|
-
'Risks and dissent': ['Dissent', 'Resolution condition'],
|
|
261
|
-
},
|
|
262
|
-
sectionItemLimits: {
|
|
263
|
-
'Decision-changing gaps': 3,
|
|
264
|
-
},
|
|
265
|
-
},
|
|
266
|
-
chair: {
|
|
267
|
-
maxBytes: 24 * 1024,
|
|
268
|
-
sections: [
|
|
269
|
-
'Decision queue',
|
|
270
|
-
'Action plan',
|
|
271
|
-
'Risks and dissent',
|
|
272
|
-
'Decision-changing gaps',
|
|
273
|
-
'Review coverage',
|
|
274
|
-
],
|
|
275
|
-
summaryFields: ['Overall signal', 'Executive call'],
|
|
276
|
-
summaryValues: {
|
|
277
|
-
'Overall signal': ['act now', 'decide next', 'watch', 'insufficient context'],
|
|
278
|
-
},
|
|
279
|
-
item: {
|
|
280
|
-
section: 'Decision queue',
|
|
281
|
-
idPrefix: 'D',
|
|
282
|
-
maxItems: 5,
|
|
283
|
-
emptyText: 'No decision-ready proposal was established.',
|
|
284
|
-
headingSuffixPattern: /^\[(?:P0|P1|P2|unranked)\]\s+\S/u,
|
|
285
|
-
fields: [
|
|
286
|
-
'Recommendation',
|
|
287
|
-
'Why now',
|
|
288
|
-
'Suggested owner',
|
|
289
|
-
'Confidence',
|
|
290
|
-
'Alternative',
|
|
291
|
-
'First step',
|
|
292
|
-
'Expected result',
|
|
293
|
-
'Check',
|
|
294
|
-
'Dependencies',
|
|
295
|
-
'Revisit when',
|
|
296
|
-
'Sources',
|
|
297
|
-
'Dissent',
|
|
298
|
-
],
|
|
299
|
-
},
|
|
300
|
-
sectionFields: {},
|
|
301
|
-
sectionItemLimits: {
|
|
302
|
-
'Decision-changing gaps': 5,
|
|
303
|
-
},
|
|
304
|
-
},
|
|
305
|
-
'board-report': {
|
|
306
|
-
maxBytes: 24 * 1024,
|
|
307
|
-
sections: [
|
|
308
|
-
'Scope',
|
|
309
|
-
'Executive summary',
|
|
310
|
-
'Decision queue',
|
|
311
|
-
'Action plan',
|
|
312
|
-
'Risks and dissent',
|
|
313
|
-
'Decision-changing gaps',
|
|
314
|
-
'Review coverage',
|
|
315
|
-
'Issues',
|
|
316
|
-
],
|
|
317
|
-
summaryFields: [],
|
|
318
|
-
item: {
|
|
319
|
-
section: 'Decision queue',
|
|
320
|
-
idPrefix: 'D',
|
|
321
|
-
maxItems: 5,
|
|
322
|
-
emptyText: 'No decision-ready proposal was established.',
|
|
323
|
-
headingSuffixPattern: /^\[(?:P0|P1|P2|unranked)\]\s+\S/u,
|
|
324
|
-
fields: [
|
|
325
|
-
'Recommendation',
|
|
326
|
-
'Why now',
|
|
327
|
-
'Suggested owner',
|
|
328
|
-
'Confidence',
|
|
329
|
-
'Alternative',
|
|
330
|
-
'First step',
|
|
331
|
-
'Expected result',
|
|
332
|
-
'Check',
|
|
333
|
-
'Dependencies',
|
|
334
|
-
'Revisit when',
|
|
335
|
-
'Sources',
|
|
336
|
-
'Dissent',
|
|
337
|
-
],
|
|
338
|
-
},
|
|
339
|
-
sectionFields: {
|
|
340
|
-
Scope: ['Subject', 'Window', 'Requested decision', 'Custody'],
|
|
341
|
-
},
|
|
342
|
-
sectionItemLimits: {
|
|
343
|
-
'Decision-changing gaps': 5,
|
|
344
|
-
},
|
|
345
|
-
},
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
export const OPERATE_REVIEW_NOTE_PROFILES_V2 = OPERATE_REVIEW_NOTE_PROFILES;
|
|
349
|
-
export const OPERATE_REVIEW_CONTRACT_VERSION = '2.0.0';
|
|
350
|
-
export const OPERATE_REVIEW_CONTRACT_VERSIONS = Object.freeze(['1.0.0', '2.0.0']);
|
|
351
|
-
|
|
352
|
-
/**
|
|
353
|
-
* Additive human-note rubric overlay for Operate's five executive advisors.
|
|
354
|
-
*
|
|
355
|
-
* The closed Operate 2.0 machine registry remains the runtime contract. These
|
|
356
|
-
* questions govern concise Markdown projections produced by canonical skills.
|
|
357
|
-
*/
|
|
358
|
-
export const OPERATE_ADVISOR_REVIEW_RUBRICS = deepFreeze({
|
|
359
|
-
'strategy-finance': {
|
|
360
|
-
skillId: 'planr-ceo-review',
|
|
361
|
-
requiredQuestions: [
|
|
362
|
-
'What current evidence changes or constrains company direction?',
|
|
363
|
-
'Which objectives appear mis-resourced relative to evidenced expected value?',
|
|
364
|
-
'What runway, margin, or cost consequence is established, and what remains unknown?',
|
|
365
|
-
'Which decisions carry an evidenced cost of delay, and which remain unranked?',
|
|
366
|
-
],
|
|
367
|
-
},
|
|
368
|
-
'technology-risk': {
|
|
369
|
-
skillId: 'planr-cto-review',
|
|
370
|
-
requiredQuestions: [
|
|
371
|
-
'Which technical constraints now block a stated objective?',
|
|
372
|
-
'Which technical risks are decision-relevant, and which remain unranked?',
|
|
373
|
-
'Which architectural decision, if any, is being made implicitly by in-flight work?',
|
|
374
|
-
'How reversible are the evidenced high-impact changes?',
|
|
375
|
-
],
|
|
376
|
-
},
|
|
377
|
-
'product-activation': {
|
|
378
|
-
skillId: 'planr-cpo-review',
|
|
379
|
-
requiredQuestions: [
|
|
380
|
-
'Where does current evidence show users failing to reach value?',
|
|
381
|
-
'Which product bets remain unvalidated, and what bounded next test is supported?',
|
|
382
|
-
'Is committed scope ordered by evidenced value and risk?',
|
|
383
|
-
'Which committed scope, if any, should be cut to protect the activation path?',
|
|
384
|
-
'Are acceptance criteria testable and tied to a customer or product outcome?',
|
|
385
|
-
],
|
|
386
|
-
},
|
|
387
|
-
'growth-market': {
|
|
388
|
-
skillId: 'planr-cmo-review',
|
|
389
|
-
requiredQuestions: [
|
|
390
|
-
'What current evidence changes or constrains demand and positioning?',
|
|
391
|
-
'Which acquisition-channel evidence is strong, weak, or absent?',
|
|
392
|
-
'Which explicit market or positioning claim, if any, is unsupported?',
|
|
393
|
-
'Which growth loop is evidenced as repeatable rather than merely proposed?',
|
|
394
|
-
],
|
|
395
|
-
},
|
|
396
|
-
'operations-customer': {
|
|
397
|
-
skillId: 'planr-coo-review',
|
|
398
|
-
requiredQuestions: [
|
|
399
|
-
'Can the organization deliver current commitments at evidenced capacity?',
|
|
400
|
-
'Where, if anywhere, is customer health degrading, and what operational cause is evidenced?',
|
|
401
|
-
'Which process, if any, is a single point of failure or single-person dependency?',
|
|
402
|
-
'Which operational commitment, if any, should be renegotiated before it is missed?',
|
|
403
|
-
],
|
|
404
|
-
},
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
export const OPERATE_REVIEW_CONTRACT_V1 = deepFreeze({
|
|
408
|
-
kind: 'operate-human-review-contract',
|
|
409
|
-
schemaVersion: '1.0.0',
|
|
410
|
-
protocolBaseline: { id: 'operate', version: '2.0.0' },
|
|
411
|
-
profiles: OPERATE_REVIEW_NOTE_PROFILES_V1,
|
|
412
|
-
advisorRubrics: OPERATE_ADVISOR_REVIEW_RUBRICS,
|
|
413
|
-
});
|
|
414
|
-
|
|
415
|
-
export const OPERATE_REVIEW_CONTRACT_V2 = deepFreeze({
|
|
416
|
-
kind: 'operate-review-quality-contract',
|
|
417
|
-
schemaVersion: '2.0.0',
|
|
418
|
-
protocolBaseline: { id: 'operate', version: '2.0.0' },
|
|
419
|
-
profiles: OPERATE_REVIEW_NOTE_PROFILES,
|
|
420
|
-
advisorRubrics: OPERATE_ADVISOR_REVIEW_RUBRICS,
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
export const OPERATE_REVIEW_CONTRACTS = deepFreeze({
|
|
424
|
-
'1.0.0': OPERATE_REVIEW_CONTRACT_V1,
|
|
425
|
-
'2.0.0': OPERATE_REVIEW_CONTRACT_V2,
|
|
426
|
-
});
|
|
427
|
-
|
|
428
|
-
export const OPERATE_REVIEW_CONTRACT = OPERATE_REVIEW_CONTRACT_V2;
|