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.
Files changed (217) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/cli/commands/backlog-commands.d.ts +3 -0
  3. package/dist/cli/commands/backlog-commands.d.ts.map +1 -0
  4. package/dist/cli/commands/backlog-commands.js +60 -0
  5. package/dist/cli/commands/backlog-commands.js.map +1 -0
  6. package/dist/cli/commands/company.d.ts.map +1 -1
  7. package/dist/cli/commands/company.js +17 -0
  8. package/dist/cli/commands/company.js.map +1 -1
  9. package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
  10. package/dist/cli/commands/planning-artifacts.js +13 -5
  11. package/dist/cli/commands/planning-artifacts.js.map +1 -1
  12. package/dist/dashboard/.vite/manifest.json +1 -1
  13. package/dist/dashboard/assets/{index-B-l_941W.js → index-C_OquZVk.js} +2 -2
  14. package/dist/dashboard/assets/{index-B-l_941W.js.map → index-C_OquZVk.js.map} +1 -1
  15. package/dist/dashboard/dashboard-manifest.json +8 -8
  16. package/dist/dashboard/index.html +1 -1
  17. package/dist/services/artifact-service.d.ts.map +1 -1
  18. package/dist/services/artifact-service.js +13 -6
  19. package/dist/services/artifact-service.js.map +1 -1
  20. package/dist/services/company-export-service.d.ts +41 -0
  21. package/dist/services/company-export-service.d.ts.map +1 -0
  22. package/dist/services/company-export-service.js +429 -0
  23. package/dist/services/company-export-service.js.map +1 -0
  24. package/dist/services/company-sync-service.d.ts +24 -1
  25. package/dist/services/company-sync-service.d.ts.map +1 -1
  26. package/dist/services/company-sync-service.js +36 -19
  27. package/dist/services/company-sync-service.js.map +1 -1
  28. package/docs/CLI.md +97 -1
  29. package/lib/backlog-item.d.mts +45 -1
  30. package/lib/backlog-item.mjs +302 -34
  31. package/lib/host-packages/adapter-registry.json +4 -4
  32. package/lib/host-packages/capability-map.json +1 -1
  33. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  34. package/lib/host-packages/claude/openplanr/.claude-plugin/icon.png +0 -0
  35. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  36. package/lib/host-packages/claude/openplanr/.openplanr-content.json +77 -77
  37. package/lib/host-packages/claude/openplanr/README.md +1 -1
  38. package/lib/host-packages/claude/openplanr/skills/ceo-review/references/note-checklist.md +131 -0
  39. package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +2 -7
  40. package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +2 -7
  41. package/lib/host-packages/claude/openplanr/skills/chair-review/references/note-checklist.md +131 -0
  42. package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +3 -7
  43. package/lib/host-packages/claude/openplanr/skills/challenger-review/references/note-checklist.md +131 -0
  44. package/lib/host-packages/claude/openplanr/skills/cmo-review/references/note-checklist.md +131 -0
  45. package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +2 -7
  46. package/lib/host-packages/claude/openplanr/skills/coo-review/references/note-checklist.md +131 -0
  47. package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +2 -7
  48. package/lib/host-packages/claude/openplanr/skills/cpo-review/references/note-checklist.md +131 -0
  49. package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +2 -7
  50. package/lib/host-packages/claude/openplanr/skills/cto-review/references/note-checklist.md +131 -0
  51. package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +2 -7
  52. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +2 -3
  53. package/lib/host-packages/claude/openplanr/skills/investigate/references/backlog-filing.md +102 -0
  54. package/lib/host-packages/claude/openplanr/skills/investigate/references/findings.md +8 -16
  55. package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +73 -84
  56. package/lib/host-packages/claude/openplanr/skills/operate/references/note-checklist.md +131 -0
  57. package/lib/host-packages/claude/openplanr/skills/operate/references/return-contract.md +10 -0
  58. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +16 -17
  59. package/lib/host-packages/claude/openplanr/skills/plan/references/planning-ids.md +53 -0
  60. package/lib/host-packages/claude/openplanr/skills/plan/references/return-contract.md +10 -0
  61. package/lib/host-packages/claude/openplanr/skills/plan-review/SKILL.md +6 -6
  62. package/lib/host-packages/claude/openplanr/skills/plan-review/references/return-contract.md +10 -0
  63. package/lib/host-packages/claude/openplanr/skills/release/SKILL.md +40 -139
  64. package/lib/host-packages/claude/openplanr/skills/release/references/cadence.md +10 -0
  65. package/lib/host-packages/claude/openplanr/skills/release/references/release-notes.md +1 -1
  66. package/lib/host-packages/claude/openplanr/skills/release/references/return-contract.md +10 -0
  67. package/lib/host-packages/claude/openplanr/skills/release/references/schemes.md +4 -2
  68. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +37 -24
  69. package/lib/host-packages/claude/openplanr/skills/ship/references/backlog-filing.md +102 -0
  70. package/lib/host-packages/claude/openplanr/skills/ship/references/findings.md +8 -16
  71. package/lib/host-packages/claude/openplanr/skills/ship/references/return-contract.md +10 -0
  72. package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +9 -9
  73. package/lib/host-packages/claude/openplanr/skills/spec/references/return-contract.md +10 -0
  74. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +74 -74
  75. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  76. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/note-checklist.md +131 -0
  77. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +2 -7
  78. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/references/note-checklist.md +131 -0
  79. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +2 -7
  80. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/references/note-checklist.md +131 -0
  81. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +3 -7
  82. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/note-checklist.md +131 -0
  83. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +2 -7
  84. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/note-checklist.md +131 -0
  85. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +2 -7
  86. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/note-checklist.md +131 -0
  87. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +2 -7
  88. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/note-checklist.md +131 -0
  89. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +2 -7
  90. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/backlog-filing.md +102 -0
  91. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/findings.md +8 -16
  92. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +2 -3
  93. package/lib/host-packages/cursor/openplanr/rules/planr-operate/references/note-checklist.md +131 -0
  94. package/lib/host-packages/cursor/openplanr/rules/planr-operate/references/return-contract.md +10 -0
  95. package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +73 -84
  96. package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/planning-ids.md +53 -0
  97. package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/return-contract.md +10 -0
  98. package/lib/host-packages/cursor/openplanr/rules/planr-plan-review/references/return-contract.md +10 -0
  99. package/lib/host-packages/cursor/openplanr/rules/planr-plan-review.mdc +6 -6
  100. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +16 -17
  101. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/cadence.md +10 -0
  102. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/release-notes.md +1 -1
  103. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/return-contract.md +10 -0
  104. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/schemes.md +4 -2
  105. package/lib/host-packages/cursor/openplanr/rules/planr-release.mdc +40 -139
  106. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/backlog-filing.md +102 -0
  107. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/findings.md +8 -16
  108. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/return-contract.md +10 -0
  109. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +37 -24
  110. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/return-contract.md +10 -0
  111. package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +9 -9
  112. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  113. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  114. package/lib/host-packages/openai/openplanr/.openplanr-content.json +89 -89
  115. package/lib/host-packages/openai/openplanr/skills/ceo-review/openplanr.skill.json +4 -4
  116. package/lib/host-packages/openai/openplanr/skills/ceo-review/references/note-checklist.md +131 -0
  117. package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +2 -7
  118. package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +2 -7
  119. package/lib/host-packages/openai/openplanr/skills/chair-review/openplanr.skill.json +4 -4
  120. package/lib/host-packages/openai/openplanr/skills/chair-review/references/note-checklist.md +131 -0
  121. package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +3 -7
  122. package/lib/host-packages/openai/openplanr/skills/challenger-review/openplanr.skill.json +4 -4
  123. package/lib/host-packages/openai/openplanr/skills/challenger-review/references/note-checklist.md +131 -0
  124. package/lib/host-packages/openai/openplanr/skills/cmo-review/openplanr.skill.json +4 -4
  125. package/lib/host-packages/openai/openplanr/skills/cmo-review/references/note-checklist.md +131 -0
  126. package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +2 -7
  127. package/lib/host-packages/openai/openplanr/skills/coo-review/openplanr.skill.json +4 -4
  128. package/lib/host-packages/openai/openplanr/skills/coo-review/references/note-checklist.md +131 -0
  129. package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +2 -7
  130. package/lib/host-packages/openai/openplanr/skills/cpo-review/openplanr.skill.json +4 -4
  131. package/lib/host-packages/openai/openplanr/skills/cpo-review/references/note-checklist.md +131 -0
  132. package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +2 -7
  133. package/lib/host-packages/openai/openplanr/skills/cto-review/openplanr.skill.json +4 -4
  134. package/lib/host-packages/openai/openplanr/skills/cto-review/references/note-checklist.md +131 -0
  135. package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +2 -7
  136. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +2 -3
  137. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +4 -4
  138. package/lib/host-packages/openai/openplanr/skills/investigate/references/backlog-filing.md +102 -0
  139. package/lib/host-packages/openai/openplanr/skills/investigate/references/findings.md +8 -16
  140. package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +73 -84
  141. package/lib/host-packages/openai/openplanr/skills/operate/openplanr.skill.json +15 -4
  142. package/lib/host-packages/openai/openplanr/skills/operate/references/note-checklist.md +131 -0
  143. package/lib/host-packages/openai/openplanr/skills/operate/references/return-contract.md +10 -0
  144. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +16 -17
  145. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +15 -4
  146. package/lib/host-packages/openai/openplanr/skills/plan/references/planning-ids.md +53 -0
  147. package/lib/host-packages/openai/openplanr/skills/plan/references/return-contract.md +10 -0
  148. package/lib/host-packages/openai/openplanr/skills/plan-review/SKILL.md +6 -6
  149. package/lib/host-packages/openai/openplanr/skills/plan-review/openplanr.skill.json +12 -1
  150. package/lib/host-packages/openai/openplanr/skills/plan-review/references/return-contract.md +10 -0
  151. package/lib/host-packages/openai/openplanr/skills/release/SKILL.md +40 -139
  152. package/lib/host-packages/openai/openplanr/skills/release/openplanr.skill.json +4 -4
  153. package/lib/host-packages/openai/openplanr/skills/release/references/cadence.md +10 -0
  154. package/lib/host-packages/openai/openplanr/skills/release/references/release-notes.md +1 -1
  155. package/lib/host-packages/openai/openplanr/skills/release/references/return-contract.md +10 -0
  156. package/lib/host-packages/openai/openplanr/skills/release/references/schemes.md +4 -2
  157. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +37 -24
  158. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +9 -9
  159. package/lib/host-packages/openai/openplanr/skills/ship/references/backlog-filing.md +102 -0
  160. package/lib/host-packages/openai/openplanr/skills/ship/references/findings.md +8 -16
  161. package/lib/host-packages/openai/openplanr/skills/ship/references/return-contract.md +10 -0
  162. package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +9 -9
  163. package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +12 -1
  164. package/lib/host-packages/openai/openplanr/skills/spec/references/return-contract.md +10 -0
  165. package/package.json +1 -1
  166. package/lib/host-packages/claude/openplanr/.claude-plugin/icon.svg +0 -11
  167. package/lib/host-packages/claude/openplanr/runtime/operate/scripts/errors.mjs +0 -8
  168. package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
  169. package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
  170. package/lib/host-packages/claude/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
  171. package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/validate-note.mjs +0 -12
  172. package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/validate-note.mjs +0 -12
  173. package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/validate-note.mjs +0 -12
  174. package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/validate-note.mjs +0 -12
  175. package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/validate-note.mjs +0 -12
  176. package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/validate-note.mjs +0 -12
  177. package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/validate-note.mjs +0 -12
  178. package/lib/host-packages/claude/openplanr/skills/investigate/scripts/backlog-item.mjs +0 -339
  179. package/lib/host-packages/claude/openplanr/skills/operate/scripts/validate-note.mjs +0 -12
  180. package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +0 -166
  181. package/lib/host-packages/claude/openplanr/skills/release/scripts/collect_changes.sh +0 -85
  182. package/lib/host-packages/claude/openplanr/skills/ship/scripts/backlog-item.mjs +0 -339
  183. package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +0 -108
  184. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/validate-note.mjs +0 -12
  185. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/validate-note.mjs +0 -12
  186. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/validate-note.mjs +0 -12
  187. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/validate-note.mjs +0 -12
  188. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/validate-note.mjs +0 -12
  189. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/validate-note.mjs +0 -12
  190. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/validate-note.mjs +0 -12
  191. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/scripts/backlog-item.mjs +0 -339
  192. package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/validate-note.mjs +0 -12
  193. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +0 -166
  194. package/lib/host-packages/cursor/openplanr/rules/planr-release/scripts/collect_changes.sh +0 -85
  195. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/backlog-item.mjs +0 -339
  196. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +0 -108
  197. package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/errors.mjs +0 -8
  198. package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
  199. package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
  200. package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
  201. package/lib/host-packages/openai/openplanr/runtime/operate/scripts/errors.mjs +0 -8
  202. package/lib/host-packages/openai/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
  203. package/lib/host-packages/openai/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
  204. package/lib/host-packages/openai/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
  205. package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/validate-note.mjs +0 -12
  206. package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/validate-note.mjs +0 -12
  207. package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/validate-note.mjs +0 -12
  208. package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/validate-note.mjs +0 -12
  209. package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/validate-note.mjs +0 -12
  210. package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/validate-note.mjs +0 -12
  211. package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/validate-note.mjs +0 -12
  212. package/lib/host-packages/openai/openplanr/skills/investigate/scripts/backlog-item.mjs +0 -339
  213. package/lib/host-packages/openai/openplanr/skills/operate/scripts/validate-note.mjs +0 -12
  214. package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +0 -166
  215. package/lib/host-packages/openai/openplanr/skills/release/scripts/collect_changes.sh +0 -85
  216. package/lib/host-packages/openai/openplanr/skills/ship/scripts/backlog-item.mjs +0 -339
  217. package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +0 -108
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { existsSync, realpathSync } from 'node:fs';
4
- import { readFile } from 'node:fs/promises';
5
- import { resolve } from 'node:path';
6
- import { fileURLToPath } from 'node:url';
7
-
8
- import { inspectOperateReviewNote } from './operate-review-note.mjs';
9
-
10
- function option(argv, name, fallback) {
11
- const index = argv.indexOf(name);
12
- return index >= 0 ? argv[index + 1] : fallback;
13
- }
14
-
15
- export async function runOperateReviewNoteValidator(argv = process.argv.slice(2)) {
16
- const file = argv[0];
17
- if (!file)
18
- throw new Error(
19
- 'Usage: validate-note.mjs <markdown> --profile <profile> [--contract-version <version>]',
20
- );
21
- const result = inspectOperateReviewNote(await readFile(resolve(file), 'utf8'), {
22
- profile: option(argv, '--profile', 'board-report'),
23
- contractVersion: option(argv, '--contract-version', 'auto'),
24
- });
25
- process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
26
- if (!result.ok) process.exitCode = 1;
27
- return result;
28
- }
29
-
30
- if (
31
- process.argv[1] &&
32
- existsSync(resolve(process.argv[1])) &&
33
- realpathSync(resolve(process.argv[1])) === realpathSync(fileURLToPath(import.meta.url))
34
- ) {
35
- runOperateReviewNoteValidator().catch((error) => {
36
- process.stderr.write(`${error.code ?? 'E_OPERATE_NOTE'}: ${error.message}\n`);
37
- process.exitCode = 1;
38
- });
39
- }
@@ -1,8 +0,0 @@
1
- export class SkillRuntimeError extends Error {
2
- constructor(code, message, details = {}) {
3
- super(message);
4
- this.name = 'SkillRuntimeError';
5
- this.code = code;
6
- this.details = details;
7
- }
8
- }
@@ -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;