@pareto4/pp-core 1.5.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 (618) hide show
  1. package/.claude-plugin/plugin.json +23 -0
  2. package/GEMINI.md +53 -0
  3. package/LICENSE +22 -0
  4. package/README.md +100 -0
  5. package/agents/pp-advisor-researcher.md +108 -0
  6. package/agents/pp-ai-researcher.md +114 -0
  7. package/agents/pp-assumptions-analyzer.md +105 -0
  8. package/agents/pp-code-fixer.md +669 -0
  9. package/agents/pp-code-reviewer.md +387 -0
  10. package/agents/pp-codebase-mapper.md +853 -0
  11. package/agents/pp-debug-session-manager.md +315 -0
  12. package/agents/pp-debugger.md +1453 -0
  13. package/agents/pp-doc-classifier.md +168 -0
  14. package/agents/pp-doc-synthesizer.md +204 -0
  15. package/agents/pp-doc-verifier.md +217 -0
  16. package/agents/pp-doc-writer.md +616 -0
  17. package/agents/pp-domain-researcher.md +147 -0
  18. package/agents/pp-eval-auditor.md +191 -0
  19. package/agents/pp-eval-planner.md +154 -0
  20. package/agents/pp-executor.md +808 -0
  21. package/agents/pp-framework-selector.md +160 -0
  22. package/agents/pp-integration-checker.md +470 -0
  23. package/agents/pp-intel-updater.md +339 -0
  24. package/agents/pp-mempalace-curator.md +47 -0
  25. package/agents/pp-nyquist-auditor.md +204 -0
  26. package/agents/pp-pattern-mapper.md +335 -0
  27. package/agents/pp-phase-researcher.md +867 -0
  28. package/agents/pp-plan-checker.md +988 -0
  29. package/agents/pp-planner.md +1052 -0
  30. package/agents/pp-project-researcher.md +612 -0
  31. package/agents/pp-research-synthesizer.md +260 -0
  32. package/agents/pp-roadmapper.md +741 -0
  33. package/agents/pp-security-auditor.md +156 -0
  34. package/agents/pp-ui-auditor.md +495 -0
  35. package/agents/pp-ui-checker.md +309 -0
  36. package/agents/pp-ui-researcher.md +375 -0
  37. package/agents/pp-user-profiler.md +171 -0
  38. package/agents/pp-verifier.md +967 -0
  39. package/assets/gsd-logo-2000-transparent.png +0 -0
  40. package/assets/gsd-logo-2000-transparent.svg +17 -0
  41. package/assets/gsd-logo-2000.png +0 -0
  42. package/assets/gsd-logo-2000.svg +21 -0
  43. package/assets/terminal.svg +68 -0
  44. package/bin/install.js +12370 -0
  45. package/bin/lib/ui-safety-gate.cjs +107 -0
  46. package/commands/pp-add-tests.md +42 -0
  47. package/commands/pp-ai-integration-phase.md +37 -0
  48. package/commands/pp-audit-fix.md +34 -0
  49. package/commands/pp-audit-milestone.md +37 -0
  50. package/commands/pp-audit-uat.md +24 -0
  51. package/commands/pp-autonomous.md +51 -0
  52. package/commands/pp-capture.md +62 -0
  53. package/commands/pp-cleanup.md +24 -0
  54. package/commands/pp-code-review.md +59 -0
  55. package/commands/pp-complete-milestone.md +143 -0
  56. package/commands/pp-config.md +56 -0
  57. package/commands/pp-debug.md +52 -0
  58. package/commands/pp-discovery.md +34 -0
  59. package/commands/pp-discuss-phase.md +77 -0
  60. package/commands/pp-docs-update.md +49 -0
  61. package/commands/pp-eval-review.md +33 -0
  62. package/commands/pp-execute-phase.md +65 -0
  63. package/commands/pp-explore.md +27 -0
  64. package/commands/pp-extract-learnings.md +23 -0
  65. package/commands/pp-fast.md +31 -0
  66. package/commands/pp-forensics.md +57 -0
  67. package/commands/pp-graphify.md +204 -0
  68. package/commands/pp-health.md +31 -0
  69. package/commands/pp-help.md +28 -0
  70. package/commands/pp-import.md +45 -0
  71. package/commands/pp-inbox.md +39 -0
  72. package/commands/pp-ingest-docs.md +42 -0
  73. package/commands/pp-manager.md +45 -0
  74. package/commands/pp-map-codebase.md +83 -0
  75. package/commands/pp-mempalace-capture.md +71 -0
  76. package/commands/pp-mempalace-recall.md +102 -0
  77. package/commands/pp-milestone-summary.md +51 -0
  78. package/commands/pp-mvp-phase.md +45 -0
  79. package/commands/pp-new-milestone.md +45 -0
  80. package/commands/pp-new-project.md +47 -0
  81. package/commands/pp-ns-context.md +25 -0
  82. package/commands/pp-ns-ideate.md +24 -0
  83. package/commands/pp-ns-manage.md +36 -0
  84. package/commands/pp-ns-project.md +27 -0
  85. package/commands/pp-ns-review.md +29 -0
  86. package/commands/pp-ns-workflow.md +35 -0
  87. package/commands/pp-pause-work.md +43 -0
  88. package/commands/pp-phase.md +56 -0
  89. package/commands/pp-plan-phase.md +63 -0
  90. package/commands/pp-plan-review-convergence.md +60 -0
  91. package/commands/pp-pr-branch.md +26 -0
  92. package/commands/pp-profile-user.md +46 -0
  93. package/commands/pp-progress.md +49 -0
  94. package/commands/pp-quick.md +174 -0
  95. package/commands/pp-resume-work.md +30 -0
  96. package/commands/pp-review-backlog.md +63 -0
  97. package/commands/pp-review.md +42 -0
  98. package/commands/pp-secure-phase.md +36 -0
  99. package/commands/pp-settings.md +29 -0
  100. package/commands/pp-ship.md +24 -0
  101. package/commands/pp-sketch.md +60 -0
  102. package/commands/pp-spec-phase.md +63 -0
  103. package/commands/pp-spike.md +57 -0
  104. package/commands/pp-stats.md +20 -0
  105. package/commands/pp-surface.md +162 -0
  106. package/commands/pp-thread.md +24 -0
  107. package/commands/pp-ui-phase.md +35 -0
  108. package/commands/pp-ui-review.md +33 -0
  109. package/commands/pp-ultraplan-phase.md +34 -0
  110. package/commands/pp-undo.md +35 -0
  111. package/commands/pp-update.md +49 -0
  112. package/commands/pp-validate-phase.md +36 -0
  113. package/commands/pp-verify-work.md +39 -0
  114. package/commands/pp-workspace.md +52 -0
  115. package/commands/pp-workstreams.md +70 -0
  116. package/gemini-extension.json +6 -0
  117. package/hooks/dist/lib/git-cmd.js +150 -0
  118. package/hooks/dist/lib/pp-graphify-rebuild.sh +65 -0
  119. package/hooks/dist/managed-hooks-registry.cjs +39 -0
  120. package/hooks/dist/pp-check-update-worker.js +108 -0
  121. package/hooks/dist/pp-check-update.js +66 -0
  122. package/hooks/dist/pp-config-reload.js +133 -0
  123. package/hooks/dist/pp-context-monitor.js +196 -0
  124. package/hooks/dist/pp-cursor-post-tool.js +75 -0
  125. package/hooks/dist/pp-cursor-session-start.js +52 -0
  126. package/hooks/dist/pp-ensure-canonical-path.js +305 -0
  127. package/hooks/dist/pp-graphify-update.sh +158 -0
  128. package/hooks/dist/pp-phase-boundary.sh +47 -0
  129. package/hooks/dist/pp-prompt-guard.js +97 -0
  130. package/hooks/dist/pp-read-guard.js +101 -0
  131. package/hooks/dist/pp-read-injection-scanner.js +203 -0
  132. package/hooks/dist/pp-session-state.sh +59 -0
  133. package/hooks/dist/pp-statusline.js +566 -0
  134. package/hooks/dist/pp-update-banner.js +138 -0
  135. package/hooks/dist/pp-validate-commit.sh +57 -0
  136. package/hooks/dist/pp-workflow-guard.js +167 -0
  137. package/hooks/dist/pp-worktree-path-guard.js +185 -0
  138. package/hooks/hooks.json +70 -0
  139. package/hooks/lib/git-cmd.js +150 -0
  140. package/hooks/lib/pp-graphify-rebuild.sh +65 -0
  141. package/hooks/managed-hooks-registry.cjs +39 -0
  142. package/hooks/pp-check-update-worker.js +108 -0
  143. package/hooks/pp-check-update.js +66 -0
  144. package/hooks/pp-config-reload.js +133 -0
  145. package/hooks/pp-context-monitor.js +196 -0
  146. package/hooks/pp-cursor-post-tool.js +75 -0
  147. package/hooks/pp-cursor-session-start.js +52 -0
  148. package/hooks/pp-ensure-canonical-path.js +305 -0
  149. package/hooks/pp-graphify-update.sh +158 -0
  150. package/hooks/pp-phase-boundary.sh +47 -0
  151. package/hooks/pp-prompt-guard.js +97 -0
  152. package/hooks/pp-read-guard.js +101 -0
  153. package/hooks/pp-read-injection-scanner.js +203 -0
  154. package/hooks/pp-session-state.sh +59 -0
  155. package/hooks/pp-statusline.js +566 -0
  156. package/hooks/pp-update-banner.js +138 -0
  157. package/hooks/pp-validate-commit.sh +57 -0
  158. package/hooks/pp-workflow-guard.js +167 -0
  159. package/hooks/pp-worktree-path-guard.js +185 -0
  160. package/package.json +125 -0
  161. package/pp-core/bin/check-latest-version.cjs +161 -0
  162. package/pp-core/bin/lib/active-workstream-store.cjs +297 -0
  163. package/pp-core/bin/lib/adr-parser.cjs +399 -0
  164. package/pp-core/bin/lib/agent-command-router.cjs +68 -0
  165. package/pp-core/bin/lib/agent-install-check.cjs +143 -0
  166. package/pp-core/bin/lib/artifacts.cjs +51 -0
  167. package/pp-core/bin/lib/audit-command-router.cjs +61 -0
  168. package/pp-core/bin/lib/audit.cjs +743 -0
  169. package/pp-core/bin/lib/capability-activation.cjs +113 -0
  170. package/pp-core/bin/lib/capability-registry.cjs +3727 -0
  171. package/pp-core/bin/lib/capability-state.cjs +497 -0
  172. package/pp-core/bin/lib/capability-writer.cjs +355 -0
  173. package/pp-core/bin/lib/check-command-router.cjs +800 -0
  174. package/pp-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
  175. package/pp-core/bin/lib/cli-exit.cjs +61 -0
  176. package/pp-core/bin/lib/clock.cjs +95 -0
  177. package/pp-core/bin/lib/clusters.cjs +131 -0
  178. package/pp-core/bin/lib/code-review-flags.cjs +59 -0
  179. package/pp-core/bin/lib/command-aliases.cjs +809 -0
  180. package/pp-core/bin/lib/command-arg-projection.cjs +55 -0
  181. package/pp-core/bin/lib/command-roster.cjs +19 -0
  182. package/pp-core/bin/lib/command-routing-hub.cjs +300 -0
  183. package/pp-core/bin/lib/commands.cjs +1244 -0
  184. package/pp-core/bin/lib/config-loader.cjs +714 -0
  185. package/pp-core/bin/lib/config-schema.cjs +58 -0
  186. package/pp-core/bin/lib/config-types.cjs +20 -0
  187. package/pp-core/bin/lib/config.cjs +796 -0
  188. package/pp-core/bin/lib/configuration.cjs +209 -0
  189. package/pp-core/bin/lib/context-utilization.cjs +48 -0
  190. package/pp-core/bin/lib/core-utils.cjs +198 -0
  191. package/pp-core/bin/lib/decisions.cjs +136 -0
  192. package/pp-core/bin/lib/docs.cjs +264 -0
  193. package/pp-core/bin/lib/drift.cjs +364 -0
  194. package/pp-core/bin/lib/edge-probe.cjs +196 -0
  195. package/pp-core/bin/lib/fallow-runner.cjs +153 -0
  196. package/pp-core/bin/lib/federated-config.cjs +182 -0
  197. package/pp-core/bin/lib/frontmatter.cjs +494 -0
  198. package/pp-core/bin/lib/gap-checker.cjs +260 -0
  199. package/pp-core/bin/lib/git-base-branch.cjs +220 -0
  200. package/pp-core/bin/lib/graphify-command-router.cjs +72 -0
  201. package/pp-core/bin/lib/graphify.cjs +472 -0
  202. package/pp-core/bin/lib/gsd2-import.cjs +456 -0
  203. package/pp-core/bin/lib/init-command-router.cjs +62 -0
  204. package/pp-core/bin/lib/init.cjs +1912 -0
  205. package/pp-core/bin/lib/install-profiles.cjs +814 -0
  206. package/pp-core/bin/lib/installer-migration-authoring.cjs +122 -0
  207. package/pp-core/bin/lib/installer-migration-report.cjs +351 -0
  208. package/pp-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +225 -0
  209. package/pp-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
  210. package/pp-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
  211. package/pp-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
  212. package/pp-core/bin/lib/installer-migrations/004-prune-stale-pristine-snapshots.cjs +123 -0
  213. package/pp-core/bin/lib/installer-migrations/005-rename-gsd-core-to-pp-core.cjs +109 -0
  214. package/pp-core/bin/lib/installer-migrations/006-rename-gsd-command-namespace.cjs +135 -0
  215. package/pp-core/bin/lib/installer-migrations.cjs +823 -0
  216. package/pp-core/bin/lib/intel-command-router.cjs +119 -0
  217. package/pp-core/bin/lib/intel.cjs +584 -0
  218. package/pp-core/bin/lib/io.cjs +220 -0
  219. package/pp-core/bin/lib/learnings.cjs +270 -0
  220. package/pp-core/bin/lib/legacy-cleanup.cjs +253 -0
  221. package/pp-core/bin/lib/loop-host-contract.cjs +105 -0
  222. package/pp-core/bin/lib/loop-resolver.cjs +479 -0
  223. package/pp-core/bin/lib/milestone.cjs +381 -0
  224. package/pp-core/bin/lib/model-catalog.cjs +154 -0
  225. package/pp-core/bin/lib/model-profiles.cjs +24 -0
  226. package/pp-core/bin/lib/model-resolver.cjs +467 -0
  227. package/pp-core/bin/lib/observability/event.cjs +51 -0
  228. package/pp-core/bin/lib/observability/logger.cjs +146 -0
  229. package/pp-core/bin/lib/observability/redaction.cjs +48 -0
  230. package/pp-core/bin/lib/package-identity.cjs +35 -0
  231. package/pp-core/bin/lib/package-legitimacy.cjs +368 -0
  232. package/pp-core/bin/lib/phase-command-router.cjs +209 -0
  233. package/pp-core/bin/lib/phase-id.cjs +213 -0
  234. package/pp-core/bin/lib/phase-lifecycle.cjs +74 -0
  235. package/pp-core/bin/lib/phase-locator.cjs +145 -0
  236. package/pp-core/bin/lib/phase.cjs +1446 -0
  237. package/pp-core/bin/lib/phases-command-router.cjs +43 -0
  238. package/pp-core/bin/lib/plan-drift-guard.cjs +117 -0
  239. package/pp-core/bin/lib/plan-scan.cjs +91 -0
  240. package/pp-core/bin/lib/planning-workspace.cjs +245 -0
  241. package/pp-core/bin/lib/probe-core.cjs +402 -0
  242. package/pp-core/bin/lib/profile-output.cjs +1164 -0
  243. package/pp-core/bin/lib/profile-pipeline-command-router.cjs +138 -0
  244. package/pp-core/bin/lib/profile-pipeline.cjs +519 -0
  245. package/pp-core/bin/lib/prohibition-enforcement.cjs +660 -0
  246. package/pp-core/bin/lib/project-root.cjs +119 -0
  247. package/pp-core/bin/lib/prompt-budget.cjs +305 -0
  248. package/pp-core/bin/lib/research-provider.cjs +137 -0
  249. package/pp-core/bin/lib/research-store.cjs +167 -0
  250. package/pp-core/bin/lib/review-reviewer-selection.cjs +121 -0
  251. package/pp-core/bin/lib/roadmap-command-router.cjs +166 -0
  252. package/pp-core/bin/lib/roadmap-parser.cjs +456 -0
  253. package/pp-core/bin/lib/roadmap-upgrade.cjs +476 -0
  254. package/pp-core/bin/lib/roadmap.cjs +738 -0
  255. package/pp-core/bin/lib/runtime-artifact-conversion.cjs +1966 -0
  256. package/pp-core/bin/lib/runtime-artifact-layout.cjs +342 -0
  257. package/pp-core/bin/lib/runtime-config-adapter-registry.cjs +103 -0
  258. package/pp-core/bin/lib/runtime-homes.cjs +272 -0
  259. package/pp-core/bin/lib/runtime-hooks-surface.cjs +1460 -0
  260. package/pp-core/bin/lib/runtime-name-policy.cjs +97 -0
  261. package/pp-core/bin/lib/runtime-slash.cjs +137 -0
  262. package/pp-core/bin/lib/schema-detect.cjs +159 -0
  263. package/pp-core/bin/lib/secrets.cjs +34 -0
  264. package/pp-core/bin/lib/security.cjs +480 -0
  265. package/pp-core/bin/lib/semver-compare.cjs +42 -0
  266. package/pp-core/bin/lib/shell-command-projection.cjs +550 -0
  267. package/pp-core/bin/lib/state-command-router.cjs +172 -0
  268. package/pp-core/bin/lib/state-document.cjs +312 -0
  269. package/pp-core/bin/lib/state.cjs +2587 -0
  270. package/pp-core/bin/lib/surface.cjs +505 -0
  271. package/pp-core/bin/lib/task-command-router.cjs +85 -0
  272. package/pp-core/bin/lib/teams-status.cjs +74 -0
  273. package/pp-core/bin/lib/template.cjs +246 -0
  274. package/pp-core/bin/lib/uat-predicate.cjs +329 -0
  275. package/pp-core/bin/lib/uat.cjs +359 -0
  276. package/pp-core/bin/lib/ui-safety-gate.cjs +98 -0
  277. package/pp-core/bin/lib/update-context.cjs +221 -0
  278. package/pp-core/bin/lib/validate-command-router.cjs +91 -0
  279. package/pp-core/bin/lib/validate.cjs +122 -0
  280. package/pp-core/bin/lib/verification-command-router.cjs +31 -0
  281. package/pp-core/bin/lib/verification.cjs +196 -0
  282. package/pp-core/bin/lib/verify-command-router.cjs +44 -0
  283. package/pp-core/bin/lib/verify.cjs +1932 -0
  284. package/pp-core/bin/lib/workstream-inventory-builder.cjs +81 -0
  285. package/pp-core/bin/lib/workstream-inventory.cjs +147 -0
  286. package/pp-core/bin/lib/workstream-name-policy.cjs +91 -0
  287. package/pp-core/bin/lib/workstream.cjs +386 -0
  288. package/pp-core/bin/lib/worktree-base-ref.cjs +350 -0
  289. package/pp-core/bin/lib/worktree-safety.cjs +985 -0
  290. package/pp-core/bin/pp-tools.cjs +2239 -0
  291. package/pp-core/bin/pp_run +20 -0
  292. package/pp-core/bin/shared/config-defaults.manifest.json +97 -0
  293. package/pp-core/bin/shared/config-schema.manifest.json +176 -0
  294. package/pp-core/bin/shared/model-catalog.json +160 -0
  295. package/pp-core/bin/shared/runtime-aliases.manifest.json +79 -0
  296. package/pp-core/bin/verify-reapply-patches.cjs +400 -0
  297. package/pp-core/contexts/dev.md +21 -0
  298. package/pp-core/contexts/research.md +22 -0
  299. package/pp-core/contexts/review.md +23 -0
  300. package/pp-core/references/agent-contracts.md +79 -0
  301. package/pp-core/references/ai-evals.md +156 -0
  302. package/pp-core/references/ai-frameworks.md +186 -0
  303. package/pp-core/references/artifact-types.md +131 -0
  304. package/pp-core/references/autonomous-smart-discuss.md +277 -0
  305. package/pp-core/references/checkpoints.md +814 -0
  306. package/pp-core/references/common-bug-patterns.md +114 -0
  307. package/pp-core/references/context-budget.md +85 -0
  308. package/pp-core/references/continuation-format.md +253 -0
  309. package/pp-core/references/debugger-philosophy.md +76 -0
  310. package/pp-core/references/decimal-phase-calculation.md +64 -0
  311. package/pp-core/references/doc-conflict-engine.md +91 -0
  312. package/pp-core/references/domain-probes.md +125 -0
  313. package/pp-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json +7 -0
  314. package/pp-core/references/edge-probe-fixtures/01-round-half-even/requirements.json +1 -0
  315. package/pp-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json +8 -0
  316. package/pp-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json +1 -0
  317. package/pp-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json +7 -0
  318. package/pp-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json +1 -0
  319. package/pp-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json +7 -0
  320. package/pp-core/references/edge-probe-fixtures/04-money-rounding/requirements.json +1 -0
  321. package/pp-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json +8 -0
  322. package/pp-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json +1 -0
  323. package/pp-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json +8 -0
  324. package/pp-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json +1 -0
  325. package/pp-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json +4 -0
  326. package/pp-core/references/edge-probe.md +272 -0
  327. package/pp-core/references/execute-mvp-tdd.md +81 -0
  328. package/pp-core/references/executor-examples.md +110 -0
  329. package/pp-core/references/few-shot-examples/plan-checker.md +73 -0
  330. package/pp-core/references/few-shot-examples/verifier.md +109 -0
  331. package/pp-core/references/gate-prompts.md +100 -0
  332. package/pp-core/references/gates.md +70 -0
  333. package/pp-core/references/git-integration.md +298 -0
  334. package/pp-core/references/git-planning-commit.md +40 -0
  335. package/pp-core/references/ios-scaffold.md +123 -0
  336. package/pp-core/references/loop-hook-dispatch.md +61 -0
  337. package/pp-core/references/mandatory-initial-read.md +2 -0
  338. package/pp-core/references/model-profile-resolution.md +38 -0
  339. package/pp-core/references/model-profiles.md +245 -0
  340. package/pp-core/references/mvp-concepts.md +49 -0
  341. package/pp-core/references/phase-argument-parsing.md +61 -0
  342. package/pp-core/references/planner-antipatterns.md +176 -0
  343. package/pp-core/references/planner-chunked.md +49 -0
  344. package/pp-core/references/planner-gap-closure.md +62 -0
  345. package/pp-core/references/planner-graphify-auto-update.md +67 -0
  346. package/pp-core/references/planner-guidance.md +186 -0
  347. package/pp-core/references/planner-human-verify-mode.md +57 -0
  348. package/pp-core/references/planner-interface-context.md +62 -0
  349. package/pp-core/references/planner-load-graph-context.md +36 -0
  350. package/pp-core/references/planner-mvp-mode.md +53 -0
  351. package/pp-core/references/planner-reviews.md +42 -0
  352. package/pp-core/references/planner-revision.md +87 -0
  353. package/pp-core/references/planner-source-audit.md +73 -0
  354. package/pp-core/references/planning-config.md +477 -0
  355. package/pp-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json +14 -0
  356. package/pp-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json +4 -0
  357. package/pp-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json +32 -0
  358. package/pp-core/references/prohibition-probe.md +326 -0
  359. package/pp-core/references/project-skills-discovery.md +19 -0
  360. package/pp-core/references/questioning.md +162 -0
  361. package/pp-core/references/research-documentation-lookup.md +29 -0
  362. package/pp-core/references/research-philosophy.md +29 -0
  363. package/pp-core/references/research-verification-protocol.md +27 -0
  364. package/pp-core/references/revision-loop.md +97 -0
  365. package/pp-core/references/scout-codebase.md +51 -0
  366. package/pp-core/references/skeleton-template.md +48 -0
  367. package/pp-core/references/sketch-interactivity.md +41 -0
  368. package/pp-core/references/sketch-theme-system.md +94 -0
  369. package/pp-core/references/sketch-tooling.md +45 -0
  370. package/pp-core/references/sketch-variant-patterns.md +81 -0
  371. package/pp-core/references/spidr-splitting.md +69 -0
  372. package/pp-core/references/tdd.md +330 -0
  373. package/pp-core/references/thinking-models-debug.md +44 -0
  374. package/pp-core/references/thinking-models-execution.md +50 -0
  375. package/pp-core/references/thinking-models-planning.md +62 -0
  376. package/pp-core/references/thinking-models-research.md +50 -0
  377. package/pp-core/references/thinking-models-verification.md +55 -0
  378. package/pp-core/references/thinking-partner.md +96 -0
  379. package/pp-core/references/ui-brand.md +162 -0
  380. package/pp-core/references/universal-anti-patterns.md +63 -0
  381. package/pp-core/references/user-profiling.md +681 -0
  382. package/pp-core/references/user-story-template.md +58 -0
  383. package/pp-core/references/verification-overrides.md +227 -0
  384. package/pp-core/references/verification-patterns.md +612 -0
  385. package/pp-core/references/verify-mvp-mode.md +85 -0
  386. package/pp-core/references/workstream-flag.md +111 -0
  387. package/pp-core/references/worktree-branch-check.md +44 -0
  388. package/pp-core/references/worktree-path-safety.md +67 -0
  389. package/pp-core/templates/AI-SPEC.md +246 -0
  390. package/pp-core/templates/DEBUG.md +169 -0
  391. package/pp-core/templates/README.md +77 -0
  392. package/pp-core/templates/SECURITY.md +61 -0
  393. package/pp-core/templates/UAT.md +265 -0
  394. package/pp-core/templates/UI-SPEC.md +100 -0
  395. package/pp-core/templates/VALIDATION.md +76 -0
  396. package/pp-core/templates/claude-md.md +145 -0
  397. package/pp-core/templates/codebase/architecture.md +255 -0
  398. package/pp-core/templates/codebase/concerns.md +310 -0
  399. package/pp-core/templates/codebase/conventions.md +307 -0
  400. package/pp-core/templates/codebase/integrations.md +280 -0
  401. package/pp-core/templates/codebase/stack.md +186 -0
  402. package/pp-core/templates/codebase/structure.md +285 -0
  403. package/pp-core/templates/codebase/testing.md +480 -0
  404. package/pp-core/templates/config.json +62 -0
  405. package/pp-core/templates/context.md +352 -0
  406. package/pp-core/templates/continue-here.md +78 -0
  407. package/pp-core/templates/copilot-instructions.md +7 -0
  408. package/pp-core/templates/debug-subagent-prompt.md +91 -0
  409. package/pp-core/templates/dev-preferences.md +21 -0
  410. package/pp-core/templates/discovery.md +146 -0
  411. package/pp-core/templates/discussion-log.md +63 -0
  412. package/pp-core/templates/milestone-archive.md +123 -0
  413. package/pp-core/templates/milestone.md +115 -0
  414. package/pp-core/templates/phase-prompt.md +610 -0
  415. package/pp-core/templates/planner-subagent-prompt.md +117 -0
  416. package/pp-core/templates/project.md +203 -0
  417. package/pp-core/templates/requirements.md +231 -0
  418. package/pp-core/templates/research-project/ARCHITECTURE.md +204 -0
  419. package/pp-core/templates/research-project/FEATURES.md +147 -0
  420. package/pp-core/templates/research-project/PITFALLS.md +200 -0
  421. package/pp-core/templates/research-project/STACK.md +120 -0
  422. package/pp-core/templates/research-project/SUMMARY.md +170 -0
  423. package/pp-core/templates/research.md +592 -0
  424. package/pp-core/templates/retrospective.md +54 -0
  425. package/pp-core/templates/roadmap.md +202 -0
  426. package/pp-core/templates/spec.md +333 -0
  427. package/pp-core/templates/state.md +195 -0
  428. package/pp-core/templates/summary-complex.md +60 -0
  429. package/pp-core/templates/summary-minimal.md +42 -0
  430. package/pp-core/templates/summary-standard.md +49 -0
  431. package/pp-core/templates/summary.md +249 -0
  432. package/pp-core/templates/user-profile.md +146 -0
  433. package/pp-core/templates/user-setup.md +311 -0
  434. package/pp-core/templates/verification-report.md +335 -0
  435. package/pp-core/workflows/_runtime-launcher.snippet.sh +1 -0
  436. package/pp-core/workflows/add-backlog.md +91 -0
  437. package/pp-core/workflows/add-phase.md +113 -0
  438. package/pp-core/workflows/add-tests.md +355 -0
  439. package/pp-core/workflows/add-todo.md +161 -0
  440. package/pp-core/workflows/ai-integration-phase.md +295 -0
  441. package/pp-core/workflows/analyze-dependencies.md +96 -0
  442. package/pp-core/workflows/audit-fix.md +178 -0
  443. package/pp-core/workflows/audit-milestone.md +362 -0
  444. package/pp-core/workflows/audit-uat.md +110 -0
  445. package/pp-core/workflows/autonomous.md +886 -0
  446. package/pp-core/workflows/check-todos.md +180 -0
  447. package/pp-core/workflows/cleanup.md +195 -0
  448. package/pp-core/workflows/code-review-fix.md +506 -0
  449. package/pp-core/workflows/code-review.md +696 -0
  450. package/pp-core/workflows/complete-milestone.md +857 -0
  451. package/pp-core/workflows/debug.md +237 -0
  452. package/pp-core/workflows/diagnose-issues.md +245 -0
  453. package/pp-core/workflows/discovery-phase.md +291 -0
  454. package/pp-core/workflows/discovery-sprint.md +1546 -0
  455. package/pp-core/workflows/discuss-phase/modes/advisor.md +176 -0
  456. package/pp-core/workflows/discuss-phase/modes/all.md +28 -0
  457. package/pp-core/workflows/discuss-phase/modes/analyze.md +44 -0
  458. package/pp-core/workflows/discuss-phase/modes/auto.md +57 -0
  459. package/pp-core/workflows/discuss-phase/modes/batch.md +52 -0
  460. package/pp-core/workflows/discuss-phase/modes/chain.md +98 -0
  461. package/pp-core/workflows/discuss-phase/modes/default.md +141 -0
  462. package/pp-core/workflows/discuss-phase/modes/power.md +44 -0
  463. package/pp-core/workflows/discuss-phase/modes/text.md +55 -0
  464. package/pp-core/workflows/discuss-phase/templates/checkpoint.json +18 -0
  465. package/pp-core/workflows/discuss-phase/templates/context.md +136 -0
  466. package/pp-core/workflows/discuss-phase/templates/discussion-log.md +50 -0
  467. package/pp-core/workflows/discuss-phase-assumptions.md +675 -0
  468. package/pp-core/workflows/discuss-phase-power.md +291 -0
  469. package/pp-core/workflows/discuss-phase.md +520 -0
  470. package/pp-core/workflows/do.md +111 -0
  471. package/pp-core/workflows/docs-update.md +1168 -0
  472. package/pp-core/workflows/edit-phase.md +295 -0
  473. package/pp-core/workflows/eval-review.md +159 -0
  474. package/pp-core/workflows/execute-phase/steps/codebase-drift-gate.md +95 -0
  475. package/pp-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
  476. package/pp-core/workflows/execute-phase/steps/post-merge-gate.md +117 -0
  477. package/pp-core/workflows/execute-phase/steps/worktree-recovery-policy.md +9 -0
  478. package/pp-core/workflows/execute-phase.md +1707 -0
  479. package/pp-core/workflows/execute-plan.md +541 -0
  480. package/pp-core/workflows/explore.md +146 -0
  481. package/pp-core/workflows/extract-learnings.md +243 -0
  482. package/pp-core/workflows/fast.md +124 -0
  483. package/pp-core/workflows/forensics.md +279 -0
  484. package/pp-core/workflows/graduation.md +196 -0
  485. package/pp-core/workflows/health.md +224 -0
  486. package/pp-core/workflows/help/modes/brief.md +22 -0
  487. package/pp-core/workflows/help/modes/default.md +50 -0
  488. package/pp-core/workflows/help/modes/full.md +791 -0
  489. package/pp-core/workflows/help/modes/topic.md +74 -0
  490. package/pp-core/workflows/help.md +24 -0
  491. package/pp-core/workflows/import.md +256 -0
  492. package/pp-core/workflows/inbox.md +387 -0
  493. package/pp-core/workflows/ingest-docs.md +340 -0
  494. package/pp-core/workflows/insert-phase.md +152 -0
  495. package/pp-core/workflows/list-phase-assumptions.md +178 -0
  496. package/pp-core/workflows/list-workspaces.md +57 -0
  497. package/pp-core/workflows/manager.md +435 -0
  498. package/pp-core/workflows/map-codebase.md +444 -0
  499. package/pp-core/workflows/milestone-summary.md +224 -0
  500. package/pp-core/workflows/mvp-phase.md +222 -0
  501. package/pp-core/workflows/new-milestone.md +643 -0
  502. package/pp-core/workflows/new-project.md +1563 -0
  503. package/pp-core/workflows/new-workspace.md +240 -0
  504. package/pp-core/workflows/next.md +347 -0
  505. package/pp-core/workflows/node-repair.md +92 -0
  506. package/pp-core/workflows/note.md +158 -0
  507. package/pp-core/workflows/pause-work.md +250 -0
  508. package/pp-core/workflows/plan-milestone-gaps.md +281 -0
  509. package/pp-core/workflows/plan-phase.md +1755 -0
  510. package/pp-core/workflows/plan-review-convergence.md +369 -0
  511. package/pp-core/workflows/plant-seed.md +230 -0
  512. package/pp-core/workflows/pr-branch.md +159 -0
  513. package/pp-core/workflows/profile-user.md +455 -0
  514. package/pp-core/workflows/progress.md +756 -0
  515. package/pp-core/workflows/quick.md +1045 -0
  516. package/pp-core/workflows/reapply-patches.md +443 -0
  517. package/pp-core/workflows/remove-phase.md +156 -0
  518. package/pp-core/workflows/remove-workspace.md +108 -0
  519. package/pp-core/workflows/resume-project.md +348 -0
  520. package/pp-core/workflows/review.md +765 -0
  521. package/pp-core/workflows/scan.md +107 -0
  522. package/pp-core/workflows/secure-phase.md +184 -0
  523. package/pp-core/workflows/session-report.md +146 -0
  524. package/pp-core/workflows/settings-advanced.md +816 -0
  525. package/pp-core/workflows/settings-integrations.md +312 -0
  526. package/pp-core/workflows/settings.md +592 -0
  527. package/pp-core/workflows/ship.md +465 -0
  528. package/pp-core/workflows/sketch-wrap-up.md +286 -0
  529. package/pp-core/workflows/sketch.md +361 -0
  530. package/pp-core/workflows/spec-phase.md +495 -0
  531. package/pp-core/workflows/spike-wrap-up.md +307 -0
  532. package/pp-core/workflows/spike.md +453 -0
  533. package/pp-core/workflows/stats.md +80 -0
  534. package/pp-core/workflows/sync-skills.md +182 -0
  535. package/pp-core/workflows/thread.md +222 -0
  536. package/pp-core/workflows/transition.md +694 -0
  537. package/pp-core/workflows/ui-phase.md +328 -0
  538. package/pp-core/workflows/ui-review.md +193 -0
  539. package/pp-core/workflows/ultraplan-phase.md +199 -0
  540. package/pp-core/workflows/undo.md +314 -0
  541. package/pp-core/workflows/update.md +501 -0
  542. package/pp-core/workflows/validate-phase.md +183 -0
  543. package/pp-core/workflows/verify-phase.md +569 -0
  544. package/pp-core/workflows/verify-work.md +804 -0
  545. package/scripts/affected-tests-lib.cjs +554 -0
  546. package/scripts/audit-workflow-script-paths.cjs +73 -0
  547. package/scripts/base64-scan.sh +351 -0
  548. package/scripts/build-hooks.js +254 -0
  549. package/scripts/changeset/README.md +129 -0
  550. package/scripts/changeset/cli.cjs +597 -0
  551. package/scripts/changeset/github-release-notes.cjs +199 -0
  552. package/scripts/changeset/lint.cjs +147 -0
  553. package/scripts/changeset/new.cjs +151 -0
  554. package/scripts/changeset/parse.cjs +114 -0
  555. package/scripts/changeset/render.cjs +34 -0
  556. package/scripts/changeset/serialize.cjs +130 -0
  557. package/scripts/check-alias-drift.cjs +114 -0
  558. package/scripts/check-env.cjs +312 -0
  559. package/scripts/check-npm-integrity.cjs +215 -0
  560. package/scripts/ci-guard-runner.cjs +22 -0
  561. package/scripts/ci-prepare-test-scope.cjs +93 -0
  562. package/scripts/ci-rebase-check.cjs +86 -0
  563. package/scripts/ci-test-scope.cjs +441 -0
  564. package/scripts/command-contract-helpers.cjs +64 -0
  565. package/scripts/diff-touches-shipped-paths.cjs +149 -0
  566. package/scripts/fix-slash-commands.cjs +161 -0
  567. package/scripts/gen-capability-registry.cjs +2646 -0
  568. package/scripts/gen-commands-reference.cjs +139 -0
  569. package/scripts/gen-inventory-manifest.cjs +114 -0
  570. package/scripts/gen-loop-host-contract.cjs +526 -0
  571. package/scripts/gen-research-agents.cjs +276 -0
  572. package/scripts/generate-package-identity.cjs +134 -0
  573. package/scripts/issue-dedupe.cjs +278 -0
  574. package/scripts/issue-version-gate.cjs +140 -0
  575. package/scripts/lib/allowlist-ratchet.cjs +236 -0
  576. package/scripts/lib/cli-exit.cjs +56 -0
  577. package/scripts/lint-allow-test-rule-refs.allowlist.json +328 -0
  578. package/scripts/lint-allow-test-rule-refs.cjs +162 -0
  579. package/scripts/lint-command-contract.cjs +118 -0
  580. package/scripts/lint-descriptions.cjs +87 -0
  581. package/scripts/lint-docs-required.cjs +222 -0
  582. package/scripts/lint-legacy-dir-name.cjs +166 -0
  583. package/scripts/lint-package-identity-drift.cjs +141 -0
  584. package/scripts/lint-pr-check-project-dir.cjs +99 -0
  585. package/scripts/lint-regression-test-names.allowlist.json +269 -0
  586. package/scripts/lint-regression-test-names.cjs +117 -0
  587. package/scripts/lint-shell-command-projection-drift.cjs +62 -0
  588. package/scripts/lint-skill-deps.cjs +185 -0
  589. package/scripts/lint-test-file-count.allowlist.json +181 -0
  590. package/scripts/lint-test-file-count.cjs +246 -0
  591. package/scripts/lint-windows-test-portability.cjs +178 -0
  592. package/scripts/mutation-matrix.cjs +323 -0
  593. package/scripts/pr-target-policy.cjs +63 -0
  594. package/scripts/pr-template-policy.cjs +268 -0
  595. package/scripts/prompt-injection-scan.sh +207 -0
  596. package/scripts/registry-smoke.cjs +337 -0
  597. package/scripts/release-notes/discord-release-summary.cjs +373 -0
  598. package/scripts/release-notes/format-github-release-notes.cjs +261 -0
  599. package/scripts/release-tarball-smoke.cjs +763 -0
  600. package/scripts/research-profiles.cjs +149 -0
  601. package/scripts/run-affected-tests.cjs +7 -0
  602. package/scripts/run-tests.cjs +589 -0
  603. package/scripts/secret-scan-lint.sh +231 -0
  604. package/scripts/secret-scan.sh +358 -0
  605. package/scripts/setup-branch-protection.sh +234 -0
  606. package/scripts/strip-prose-atrefs.cjs +106 -0
  607. package/scripts/sync-manifest-versions.cjs +119 -0
  608. package/scripts/sync-next-version.cjs +133 -0
  609. package/scripts/sync-rulesets.sh +34 -0
  610. package/scripts/sync-runtime-launcher.cjs +425 -0
  611. package/scripts/test-failure-reasons.cjs +34 -0
  612. package/scripts/update-size-baseline.cjs +68 -0
  613. package/scripts/verify-npm-publish.cjs +240 -0
  614. package/scripts/verify-opengsd-sweep.cjs +288 -0
  615. package/scripts/verify-phase-02-rename.sh +258 -0
  616. package/scripts/verify-phase-03-rename.sh +376 -0
  617. package/scripts/workflow-policy.cjs +483 -0
  618. package/scripts/workflow-size.cjs +90 -0
@@ -0,0 +1,202 @@
1
+ # Roadmap Template
2
+
3
+ Template for `.planning/ROADMAP.md`.
4
+
5
+ ## Initial Roadmap (v1.0 Greenfield)
6
+
7
+ ```markdown
8
+ # Roadmap: [Project Name]
9
+
10
+ ## Overview
11
+
12
+ [One paragraph describing the journey from start to finish]
13
+
14
+ ## Phases
15
+
16
+ **Phase Numbering:**
17
+ - Integer phases (1, 2, 3): Planned milestone work
18
+ - Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
19
+
20
+ Decimal phases appear between their surrounding integers in numeric order.
21
+
22
+ - [ ] **Phase 1: [Name]** - [One-line description]
23
+ - [ ] **Phase 2: [Name]** - [One-line description]
24
+ - [ ] **Phase 3: [Name]** - [One-line description]
25
+ - [ ] **Phase 4: [Name]** - [One-line description]
26
+
27
+ ## Phase Details
28
+
29
+ ### Phase 1: [Name]
30
+ **Goal**: [What this phase delivers]
31
+ **Depends on**: Nothing (first phase)
32
+ **Requirements**: [REQ-01, REQ-02, REQ-03] <!-- brackets optional, parser handles both formats -->
33
+ **Success Criteria** (what must be TRUE):
34
+ 1. [Observable behavior from user perspective]
35
+ 2. [Observable behavior from user perspective]
36
+ 3. [Observable behavior from user perspective]
37
+ **Plans**: [Number of plans, e.g., "3 plans" or "TBD"]
38
+
39
+ Plans:
40
+ - [ ] 01-01: [Brief description of first plan]
41
+ - [ ] 01-02: [Brief description of second plan]
42
+ - [ ] 01-03: [Brief description of third plan]
43
+
44
+ ### Phase 2: [Name]
45
+ **Goal**: [What this phase delivers]
46
+ **Depends on**: Phase 1
47
+ **Requirements**: [REQ-04, REQ-05]
48
+ **Success Criteria** (what must be TRUE):
49
+ 1. [Observable behavior from user perspective]
50
+ 2. [Observable behavior from user perspective]
51
+ **Plans**: [Number of plans]
52
+
53
+ Plans:
54
+ - [ ] 02-01: [Brief description]
55
+ - [ ] 02-02: [Brief description]
56
+
57
+ ### Phase 2.1: Critical Fix (INSERTED)
58
+ **Goal**: [Urgent work inserted between phases]
59
+ **Depends on**: Phase 2
60
+ **Success Criteria** (what must be TRUE):
61
+ 1. [What the fix achieves]
62
+ **Plans**: 1 plan
63
+
64
+ Plans:
65
+ - [ ] 02.1-01: [Description]
66
+
67
+ ### Phase 3: [Name]
68
+ **Goal**: [What this phase delivers]
69
+ **Depends on**: Phase 2
70
+ **Requirements**: [REQ-06, REQ-07, REQ-08]
71
+ **Success Criteria** (what must be TRUE):
72
+ 1. [Observable behavior from user perspective]
73
+ 2. [Observable behavior from user perspective]
74
+ 3. [Observable behavior from user perspective]
75
+ **Plans**: [Number of plans]
76
+
77
+ Plans:
78
+ - [ ] 03-01: [Brief description]
79
+ - [ ] 03-02: [Brief description]
80
+
81
+ ### Phase 4: [Name]
82
+ **Goal**: [What this phase delivers]
83
+ **Depends on**: Phase 3
84
+ **Requirements**: [REQ-09, REQ-10]
85
+ **Success Criteria** (what must be TRUE):
86
+ 1. [Observable behavior from user perspective]
87
+ 2. [Observable behavior from user perspective]
88
+ **Plans**: [Number of plans]
89
+
90
+ Plans:
91
+ - [ ] 04-01: [Brief description]
92
+
93
+ ## Progress
94
+
95
+ **Execution Order:**
96
+ Phases execute in numeric order: 2 → 2.1 → 2.2 → 3 → 3.1 → 4
97
+
98
+ | Phase | Plans Complete | Status | Completed |
99
+ |-------|----------------|--------|-----------|
100
+ | 1. [Name] | 0/3 | Not started | - |
101
+ | 2. [Name] | 0/2 | Not started | - |
102
+ | 3. [Name] | 0/2 | Not started | - |
103
+ | 4. [Name] | 0/1 | Not started | - |
104
+ ```
105
+
106
+ <guidelines>
107
+ **Initial planning (v1.0):**
108
+ - Phase count depends on granularity setting (coarse: 3-5, standard: 5-8, fine: 8-12)
109
+ - Each phase delivers something coherent
110
+ - Phases can have 1+ plans (split if >3 tasks or multiple subsystems)
111
+ - Plans use naming: {phase}-{plan}-PLAN.md (e.g., 01-02-PLAN.md)
112
+ - No time estimates (this isn't enterprise PM)
113
+ - Progress table updated by execute workflow
114
+ - Plan count can be "TBD" initially, refined during planning
115
+
116
+ **Success criteria:**
117
+ - 2-5 observable behaviors per phase (from user's perspective)
118
+ - Cross-checked against requirements during roadmap creation
119
+ - Flow downstream to `must_haves` in plan-phase
120
+ - Verified by verify-phase after execution
121
+ - Format: "User can [action]" or "[Thing] works/exists"
122
+
123
+ **After milestones ship:**
124
+ - Collapse completed milestones in `<details>` tags
125
+ - Add new milestone sections for upcoming work
126
+ - Keep continuous phase numbering (never restart at 01)
127
+ </guidelines>
128
+
129
+ <status_values>
130
+ - `Not started` - Haven't begun
131
+ - `In progress` - Currently working
132
+ - `Complete` - Done (add completion date)
133
+ - `Deferred` - Pushed to later (with reason)
134
+ </status_values>
135
+
136
+ ## Milestone-Grouped Roadmap (After v1.0 Ships)
137
+
138
+ After completing first milestone, reorganize with milestone groupings:
139
+
140
+ ```markdown
141
+ # Roadmap: [Project Name]
142
+
143
+ ## Milestones
144
+
145
+ - ✅ **v1.0 MVP** - Phases 1-4 (shipped YYYY-MM-DD)
146
+ - 🚧 **v1.1 [Name]** - Phases 5-6 (in progress)
147
+ - 📋 **v2.0 [Name]** - Phases 7-10 (planned)
148
+
149
+ ## Phases
150
+
151
+ <details>
152
+ <summary>✅ v1.0 MVP (Phases 1-4) - SHIPPED YYYY-MM-DD</summary>
153
+
154
+ ### Phase 1: [Name]
155
+ **Goal**: [What this phase delivers]
156
+ **Plans**: 3 plans
157
+
158
+ Plans:
159
+ - [x] 01-01: [Brief description]
160
+ - [x] 01-02: [Brief description]
161
+ - [x] 01-03: [Brief description]
162
+
163
+ [... remaining v1.0 phases ...]
164
+
165
+ </details>
166
+
167
+ ### 🚧 v1.1 [Name] (In Progress)
168
+
169
+ **Milestone Goal:** [What v1.1 delivers]
170
+
171
+ #### Phase 5: [Name]
172
+ **Goal**: [What this phase delivers]
173
+ **Depends on**: Phase 4
174
+ **Plans**: 2 plans
175
+
176
+ Plans:
177
+ - [ ] 05-01: [Brief description]
178
+ - [ ] 05-02: [Brief description]
179
+
180
+ [... remaining v1.1 phases ...]
181
+
182
+ ### 📋 v2.0 [Name] (Planned)
183
+
184
+ **Milestone Goal:** [What v2.0 delivers]
185
+
186
+ [... v2.0 phases ...]
187
+
188
+ ## Progress
189
+
190
+ | Phase | Milestone | Plans Complete | Status | Completed |
191
+ |-------|-----------|----------------|--------|-----------|
192
+ | 1. Foundation | v1.0 | 3/3 | Complete | YYYY-MM-DD |
193
+ | 2. Features | v1.0 | 2/2 | Complete | YYYY-MM-DD |
194
+ | 5. Security | v1.1 | 0/2 | Not started | - |
195
+ ```
196
+
197
+ **Notes:**
198
+ - Milestone emoji: ✅ shipped, 🚧 in progress, 📋 planned
199
+ - Completed milestones collapsed in `<details>` for readability
200
+ - Current/future milestones expanded
201
+ - Continuous phase numbering (01-99)
202
+ - Progress table includes milestone column
@@ -0,0 +1,333 @@
1
+ # Phase Spec Template
2
+
3
+ Template for `.planning/phases/XX-name/{phase_num}-SPEC.md` — locks requirements before discuss-phase.
4
+
5
+ **Purpose:** Capture WHAT a phase delivers and WHY, with enough precision that requirements are falsifiable. discuss-phase reads this file and focuses on HOW to implement (skipping "what/why" questions already answered here).
6
+
7
+ **Key principle:** Every requirement must be falsifiable — you can write a test or check that proves it was met or not. Vague requirements like "improve performance" are not allowed.
8
+
9
+ **Downstream consumers:**
10
+ - `discuss-phase` — reads SPEC.md at startup; treats Requirements, Boundaries, and Acceptance Criteria as locked; skips "what/why" questions
11
+ - `pp-planner` — reads locked requirements to constrain plan scope
12
+ - `pp-verifier` — uses acceptance criteria as explicit pass/fail checks
13
+
14
+ ---
15
+
16
+ ## File Template
17
+
18
+ ```markdown
19
+ # Phase [X]: [Name] — Specification
20
+
21
+ **Created:** [date]
22
+ **Ambiguity score:** [score] (gate: ≤ 0.20)
23
+ **Requirements:** [N] locked
24
+
25
+ ## Goal
26
+
27
+ [One precise sentence — specific and measurable. NOT "improve X" — instead "X changes from A to B".]
28
+
29
+ ## Background
30
+
31
+ [Current state from codebase — what exists today, what's broken or missing, what triggers this work. Grounded in code reality, not abstract description.]
32
+
33
+ ## Requirements
34
+
35
+ 1. **[Short label]**: [Specific, testable statement.]
36
+ - Current: [what exists or does NOT exist today]
37
+ - Target: [what it should become after this phase]
38
+ - Acceptance: [concrete pass/fail check — how a verifier confirms this was met]
39
+
40
+ 2. **[Short label]**: [Specific, testable statement.]
41
+ - Current: [what exists or does NOT exist today]
42
+ - Target: [what it should become after this phase]
43
+ - Acceptance: [concrete pass/fail check]
44
+
45
+ [Continue for all requirements. Each must have Current/Target/Acceptance.]
46
+
47
+ ## Boundaries
48
+
49
+ **In scope:**
50
+ - [Explicit list of what this phase produces]
51
+ - [Each item is a concrete deliverable or behavior]
52
+
53
+ **Out of scope:**
54
+ - [Explicit list of what this phase does NOT do] — [brief reason why it's excluded]
55
+ - [Adjacent problems excluded from this phase] — [brief reason]
56
+
57
+ ## Constraints
58
+
59
+ [Performance, compatibility, data volume, dependency, or platform constraints.
60
+ If none: "No additional constraints beyond standard project conventions."]
61
+
62
+ ## Acceptance Criteria
63
+
64
+ - [ ] [Pass/fail criterion — unambiguous, verifiable]
65
+ - [ ] [Pass/fail criterion]
66
+ - [ ] [Pass/fail criterion]
67
+
68
+ [Every acceptance criterion must be a checkbox that resolves to PASS or FAIL.
69
+ No "should feel good", "looks reasonable", or "generally works" — those are not checkboxes.]
70
+
71
+ ## Edge Coverage
72
+
73
+ **Coverage:** [resolved]/[applicable] applicable edges resolved · [unresolved] unresolved
74
+
75
+ | Category | Requirement | Status | Resolution / Reason |
76
+ |----------|-------------|--------|---------------------|
77
+ | [category] | [Rn] | [✅ covered / ⛔ dismissed / 🧪 backstop / ⚠ UNRESOLVED] | [acceptance criterion ref, dismissal reason, or backstop test note] |
78
+
79
+ [Generated by the edge-completeness probe (Step 5.5). `covered` rows correspond to
80
+ Acceptance Criteria above; `backstop` rows must be carried into plan-phase `must_haves`.
81
+ `⚠ UNRESOLVED` rows are flagged: planner must treat as assumption.]
82
+
83
+ ## Prohibitions (must-NOT)
84
+
85
+ **Coverage:** [resolved]/[applicable] applicable prohibitions resolved · [unresolved] unresolved
86
+
87
+ | Prohibition (must-NOT statement) | Requirement | Status | Verification / Reason |
88
+ |----------------------------------|-------------|--------|------------------------|
89
+ | [MUST NOT … must-NOT statement] | [Rn] | [resolved / dismissed / ⚠ UNRESOLVED] | [verification: test \| judgment, or dismissal reason] |
90
+
91
+ [Generated by the prohibition probe (Step 5.6). `resolved` prohibitions become NEGATIVE
92
+ acceptance criteria; a `resolved`/`test` row is a checkable negative the verifier iterates
93
+ over, a `resolved`/`judgment` row routes to judgment review. Resolved prohibitions are lifted
94
+ into `must_haves.prohibitions` by plan-phase. `dismissed` rows carry a required non-empty
95
+ reason. `⚠ UNRESOLVED` rows are flagged: planner must treat as assumption.]
96
+
97
+ ## Ambiguity Report
98
+
99
+ | Dimension | Score | Min | Status | Notes |
100
+ |--------------------|-------|------|--------|------------------------------------|
101
+ | Goal Clarity | | 0.75 | | |
102
+ | Boundary Clarity | | 0.70 | | |
103
+ | Constraint Clarity | | 0.65 | | |
104
+ | Acceptance Criteria| | 0.70 | | |
105
+ | **Ambiguity** | | ≤0.20| | |
106
+
107
+ Status: ✓ = met minimum, ⚠ = below minimum (planner treats as assumption)
108
+
109
+ ## Interview Log
110
+
111
+ [Key decisions made during the Socratic interview. Format: round → question → answer → decision locked.]
112
+
113
+ | Round | Perspective | Question summary | Decision locked |
114
+ |-------|----------------|-------------------------|------------------------------------|
115
+ | 1 | Researcher | [what was asked] | [what was decided] |
116
+ | 2 | Simplifier | [what was asked] | [what was decided] |
117
+ | 3 | Boundary Keeper| [what was asked] | [what was decided] |
118
+
119
+ [If --auto mode: note "auto-selected" decisions with the reasoning Claude used.]
120
+
121
+ ---
122
+
123
+ *Phase: [XX-name]*
124
+ *Spec created: [date]*
125
+ *Next step: /pp:discuss-phase [X] — implementation decisions (how to build what's specified above)*
126
+ ```
127
+
128
+ <good_examples>
129
+
130
+ **Example 1: Feature addition (Post Feed)**
131
+
132
+ ```markdown
133
+ # Phase 3: Post Feed — Specification
134
+
135
+ **Created:** 2025-01-20
136
+ **Ambiguity score:** 0.12
137
+ **Requirements:** 4 locked
138
+
139
+ ## Goal
140
+
141
+ Users can scroll through posts from accounts they follow, with new posts available after pull-to-refresh.
142
+
143
+ ## Background
144
+
145
+ The database has a `posts` table and `follows` table. No feed query or feed UI exists today. The home screen shows a placeholder "Your feed will appear here." This phase builds the feed query, API endpoint, and the feed list component.
146
+
147
+ ## Requirements
148
+
149
+ 1. **Feed query**: Returns posts from followed accounts ordered by creation time, descending.
150
+ - Current: No feed query exists — `posts` table is queried directly only from profile pages
151
+ - Target: `GET /api/feed` returns paginated posts from followed accounts, newest first, max 20 per page
152
+ - Acceptance: Query returns correct posts for a user who follows 3 accounts with known post counts; cursor-based pagination advances correctly
153
+
154
+ 2. **Feed display**: Posts display in a scrollable card list.
155
+ - Current: Home screen shows static placeholder text
156
+ - Target: Home screen renders feed cards with author, timestamp, post content, and reaction count
157
+ - Acceptance: Feed renders without error for 0 posts (empty state shown), 1 post, and 20+ posts
158
+
159
+ 3. **Pull-to-refresh**: User can refresh the feed manually.
160
+ - Current: No refresh mechanism exists
161
+ - Target: Pull-down gesture triggers refetch; new posts appear at top of list
162
+ - Acceptance: After a new post is created in test, pull-to-refresh shows the new post without full app restart
163
+
164
+ 4. **New posts indicator**: When new posts arrive, a banner appears instead of auto-scrolling.
165
+ - Current: No such mechanism
166
+ - Target: "3 new posts" banner appears when refetch returns posts newer than the oldest visible post; tapping banner scrolls to top and shows new posts
167
+ - Acceptance: Banner appears for ≥1 new post, does not appear when no new posts, tap navigates to top
168
+
169
+ ## Boundaries
170
+
171
+ **In scope:**
172
+ - Feed query (backend) — posts from followed accounts, paginated
173
+ - Feed list UI (frontend) — post cards with author, timestamp, content, reaction counts
174
+ - Pull-to-refresh gesture
175
+ - New posts indicator banner
176
+ - Empty state when user follows no one or no posts exist
177
+
178
+ **Out of scope:**
179
+ - Creating posts — that is Phase 4
180
+ - Reacting to posts — that is Phase 5
181
+ - Following/unfollowing accounts — that is Phase 2 (already done)
182
+ - Push notifications for new posts — separate backlog item
183
+
184
+ ## Constraints
185
+
186
+ - Feed query must use cursor-based pagination (not offset) — the database has 500K+ posts and offset pagination is unacceptably slow beyond page 3
187
+ - The feed card component must reuse the existing `<AvatarImage>` component from Phase 2
188
+
189
+ ## Acceptance Criteria
190
+
191
+ - [ ] `GET /api/feed` returns posts only from followed accounts (not all posts)
192
+ - [ ] `GET /api/feed` supports `cursor` parameter for pagination
193
+ - [ ] Feed renders correctly at 0, 1, and 20+ posts
194
+ - [ ] Pull-to-refresh triggers refetch
195
+ - [ ] New posts indicator appears when posts newer than current view exist
196
+ - [ ] Empty state renders when user follows no one
197
+
198
+ ## Ambiguity Report
199
+
200
+ | Dimension | Score | Min | Status | Notes |
201
+ |--------------------|-------|------|--------|----------------------------------|
202
+ | Goal Clarity | 0.92 | 0.75 | ✓ | |
203
+ | Boundary Clarity | 0.95 | 0.70 | ✓ | Explicit out-of-scope list |
204
+ | Constraint Clarity | 0.80 | 0.65 | ✓ | Cursor pagination required |
205
+ | Acceptance Criteria| 0.85 | 0.70 | ✓ | 6 pass/fail criteria |
206
+ | **Ambiguity** | 0.12 | ≤0.20| ✓ | |
207
+
208
+ ## Interview Log
209
+
210
+ | Round | Perspective | Question summary | Decision locked |
211
+ |-------|-----------------|------------------------------|-----------------------------------------|
212
+ | 1 | Researcher | What exists in posts today? | posts + follows tables exist, no feed |
213
+ | 2 | Simplifier | Minimum viable feed? | Cards + pull-refresh, no auto-scroll |
214
+ | 3 | Boundary Keeper | What's NOT this phase? | Creating posts, reactions out of scope |
215
+ | 3 | Boundary Keeper | What does done look like? | Scrollable feed with 4 card fields |
216
+
217
+ ---
218
+
219
+ *Phase: 03-post-feed*
220
+ *Spec created: 2025-01-20*
221
+ *Next step: /pp:discuss-phase 3 — implementation decisions (card layout, loading skeleton, etc.)*
222
+ ```
223
+
224
+ **Example 2: CLI tool (Database backup)**
225
+
226
+ ```markdown
227
+ # Phase 2: Backup Command — Specification
228
+
229
+ **Created:** 2025-01-20
230
+ **Ambiguity score:** 0.15
231
+ **Requirements:** 3 locked
232
+
233
+ ## Goal
234
+
235
+ A `gsd backup` CLI command creates a reproducible database snapshot that can be restored by `gsd restore` (a separate phase).
236
+
237
+ ## Background
238
+
239
+ No backup tooling exists. The project uses PostgreSQL. Developers currently use `pg_dump` manually — there is no standardized process, no output naming convention, and no CI integration. Three incidents in the last quarter involved restoring from wrong or corrupt dumps.
240
+
241
+ ## Requirements
242
+
243
+ 1. **Backup creation**: CLI command executes a full database backup.
244
+ - Current: No `backup` subcommand exists in the CLI
245
+ - Target: `gsd backup` connects to the database (via `DATABASE_URL` env or `--db` flag), runs pg_dump, writes output to `./backups/YYYY-MM-DD_HH-MM-SS.dump`
246
+ - Acceptance: Running `gsd backup` on a test database creates a `.dump` file; running `pg_restore` on that file recreates the database without error
247
+
248
+ 2. **Network retry**: Transient network failures are retried automatically.
249
+ - Current: pg_dump fails immediately on network error
250
+ - Target: Backup retries up to 3 times with 5-second delay; 4th failure exits with code 1 and a message to stderr
251
+ - Acceptance: Simulating 2 sequential network failures causes 2 retries then success; simulating 4 failures causes exit code 1 and stderr message
252
+
253
+ 3. **Partial cleanup**: Failed backups do not leave corrupt files.
254
+ - Current: Manual pg_dump leaves partial files on failure
255
+ - Target: If backup fails after starting, the partial `.dump` file is deleted before exit
256
+ - Acceptance: After a simulated failure mid-dump, no `.dump` file exists in `./backups/`
257
+
258
+ ## Boundaries
259
+
260
+ **In scope:**
261
+ - `gsd backup` subcommand (full dump only)
262
+ - Output to `./backups/` directory (created if missing)
263
+ - Network retry (3 attempts)
264
+ - Partial file cleanup on failure
265
+
266
+ **Out of scope:**
267
+ - `gsd restore` — that is Phase 3
268
+ - Incremental backups — separate backlog item (full dump only for now)
269
+ - S3 or remote storage — separate backlog item
270
+ - Encryption — separate backlog item
271
+ - Scheduled/cron backups — separate backlog item
272
+
273
+ ## Constraints
274
+
275
+ - Must use `pg_dump` (not a custom query) — ensures compatibility with standard `pg_restore`
276
+ - `--no-retry` flag must be available for CI use (fail fast, no retries)
277
+
278
+ ## Acceptance Criteria
279
+
280
+ - [ ] `gsd backup` creates a `.dump` file in `./backups/YYYY-MM-DD_HH-MM-SS.dump` format
281
+ - [ ] `gsd backup` uses `DATABASE_URL` env var or `--db` flag for connection
282
+ - [ ] 3 retries on network failure, then exit code 1 with stderr message
283
+ - [ ] `--no-retry` flag skips retries and fails immediately on first error
284
+ - [ ] No partial `.dump` file left after a failed backup
285
+
286
+ ## Ambiguity Report
287
+
288
+ | Dimension | Score | Min | Status | Notes |
289
+ |--------------------|-------|------|--------|--------------------------------|
290
+ | Goal Clarity | 0.90 | 0.75 | ✓ | |
291
+ | Boundary Clarity | 0.95 | 0.70 | ✓ | Explicit out-of-scope list |
292
+ | Constraint Clarity | 0.75 | 0.65 | ✓ | pg_dump required |
293
+ | Acceptance Criteria| 0.80 | 0.70 | ✓ | 5 pass/fail criteria |
294
+ | **Ambiguity** | 0.15 | ≤0.20| ✓ | |
295
+
296
+ ## Interview Log
297
+
298
+ | Round | Perspective | Question summary | Decision locked |
299
+ |-------|-----------------|------------------------------|-----------------------------------------|
300
+ | 1 | Researcher | What backup tooling exists? | None — pg_dump manual only |
301
+ | 2 | Simplifier | Minimum viable backup? | Full dump only, local only |
302
+ | 3 | Boundary Keeper | What's NOT this phase? | Restore, S3, encryption excluded |
303
+ | 4 | Failure Analyst | What goes wrong on failure? | Partial files, CI fail-fast needed |
304
+
305
+ ---
306
+
307
+ *Phase: 02-backup-command*
308
+ *Spec created: 2025-01-20*
309
+ *Next step: /pp:discuss-phase 2 — implementation decisions (progress reporting, flag design, etc.)*
310
+ ```
311
+
312
+ </good_examples>
313
+
314
+ <guidelines>
315
+ **Every requirement needs all three fields:**
316
+ - Current: grounds the requirement in reality — what exists today?
317
+ - Target: the concrete change — not "improve X" but "X becomes Y"
318
+ - Acceptance: the falsifiable check — how does a verifier confirm this?
319
+
320
+ **Ambiguity Report must reflect the actual interview.** If a dimension is below minimum, mark it ⚠ — the planner knows to treat it as an assumption rather than a locked requirement.
321
+
322
+ **Interview Log is evidence of rigor.** Don't skip it. It shows that requirements came from discovery, not assumption.
323
+
324
+ **Boundaries protect the phase from scope creep.** The out-of-scope list with reasoning is as important as the in-scope list. Future phases that touch adjacent areas can point to this SPEC.md to understand what was intentionally excluded.
325
+
326
+ **SPEC.md is a one-way door for requirements.** discuss-phase will treat these as locked. If requirements change after SPEC.md is written, the user should update SPEC.md first, then re-run discuss-phase.
327
+
328
+ **SPEC.md does NOT replace CONTEXT.md.** They serve different purposes:
329
+ - SPEC.md: what the phase delivers (requirements, boundaries, acceptance criteria)
330
+ - CONTEXT.md: how the phase will be implemented (decisions, patterns, tradeoffs)
331
+
332
+ discuss-phase generates CONTEXT.md after reading SPEC.md.
333
+ </guidelines>