savepoint 1.0.4 → 1.0.6

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 (425) hide show
  1. package/package.json +10 -3
  2. package/savepoint.exe +0 -0
  3. package/.claude/settings.local.json +0 -38
  4. package/.github/workflows/ci.yml +0 -20
  5. package/.golangci.yml +0 -11
  6. package/.prettierignore +0 -4
  7. package/.savepoint/Design.md +0 -207
  8. package/.savepoint/PRD.md +0 -58
  9. package/.savepoint/config.yml +0 -27
  10. package/.savepoint/releases/v1/epics/E01-go-setup/E01-Detail.md +0 -39
  11. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +0 -42
  12. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +0 -23
  13. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +0 -24
  14. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +0 -23
  15. package/.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md +0 -61
  16. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +0 -29
  17. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +0 -30
  18. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +0 -29
  19. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +0 -29
  20. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +0 -30
  21. package/.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md +0 -38
  22. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +0 -29
  23. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +0 -30
  24. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +0 -34
  25. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +0 -29
  26. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +0 -42
  27. package/.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md +0 -44
  28. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +0 -34
  29. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +0 -33
  30. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +0 -49
  31. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +0 -40
  32. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +0 -33
  33. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +0 -34
  34. package/.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md +0 -38
  35. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +0 -29
  36. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +0 -31
  37. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +0 -31
  38. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +0 -31
  39. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md +0 -62
  40. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +0 -39
  41. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +0 -52
  42. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +0 -52
  43. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +0 -53
  44. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +0 -39
  45. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +0 -36
  46. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +0 -40
  47. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +0 -48
  48. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +0 -66
  49. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +0 -39
  50. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +0 -20
  51. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +0 -22
  52. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +0 -24
  53. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +0 -22
  54. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +0 -118
  55. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +0 -9
  56. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +0 -45
  57. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +0 -48
  58. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +0 -43
  59. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +0 -45
  60. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +0 -40
  61. package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +0 -142
  62. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +0 -27
  63. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +0 -28
  64. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +0 -29
  65. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +0 -30
  66. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +0 -29
  67. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +0 -29
  68. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +0 -31
  69. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +0 -40
  70. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +0 -27
  71. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +0 -25
  72. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +0 -26
  73. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +0 -24
  74. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +0 -122
  75. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +0 -28
  76. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +0 -28
  77. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +0 -27
  78. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +0 -29
  79. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +0 -34
  80. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +0 -32
  81. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +0 -43
  82. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +0 -26
  83. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +0 -23
  84. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +0 -23
  85. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +0 -24
  86. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +0 -22
  87. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +0 -48
  88. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +0 -26
  89. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +0 -28
  90. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +0 -27
  91. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +0 -42
  92. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +0 -24
  93. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +0 -24
  94. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +0 -27
  95. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +0 -25
  96. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +0 -85
  97. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +0 -17
  98. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +0 -20
  99. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +0 -22
  100. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +0 -17
  101. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +0 -16
  102. package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +0 -88
  103. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +0 -22
  104. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +0 -23
  105. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +0 -24
  106. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +0 -23
  107. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +0 -24
  108. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +0 -28
  109. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +0 -53
  110. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +0 -23
  111. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +0 -26
  112. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +0 -25
  113. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +0 -28
  114. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +0 -28
  115. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +0 -23
  116. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +0 -25
  117. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +0 -104
  118. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +0 -23
  119. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +0 -24
  120. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +0 -25
  121. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +0 -23
  122. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +0 -26
  123. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +0 -24
  124. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +0 -88
  125. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +0 -23
  126. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +0 -23
  127. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +0 -23
  128. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +0 -27
  129. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +0 -25
  130. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +0 -24
  131. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +0 -26
  132. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +0 -24
  133. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +0 -103
  134. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +0 -30
  135. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +0 -33
  136. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +0 -34
  137. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +0 -33
  138. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +0 -37
  139. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +0 -36
  140. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +0 -34
  141. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +0 -41
  142. package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +0 -70
  143. package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +0 -68
  144. package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +0 -68
  145. package/.savepoint/releases/v1/v1-PRD.md +0 -66
  146. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md +0 -40
  147. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-next-activity-header.md +0 -56
  148. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +0 -38
  149. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +0 -28
  150. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +0 -51
  151. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +0 -45
  152. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +0 -68
  153. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md +0 -57
  154. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md +0 -124
  155. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md +0 -49
  156. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +0 -37
  157. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +0 -38
  158. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +0 -36
  159. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +0 -59
  160. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +0 -195
  161. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +0 -45
  162. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T001-border-resize-fix.md +0 -40
  163. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T002-next-activity-below-header.md +0 -64
  164. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T003-checkbox-rendering-fix.md +0 -56
  165. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T005-unify-status-glyphs.md +0 -65
  166. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +0 -36
  167. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Audit.md +0 -167
  168. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Detail.md +0 -51
  169. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T001-sidebar-focusable-navigation.md +0 -65
  170. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T002-epic-detail-overlay.md +0 -73
  171. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T003-epic-status-glyphs.md +0 -73
  172. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +0 -237
  173. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +0 -54
  174. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +0 -45
  175. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +0 -40
  176. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +0 -47
  177. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +0 -98
  178. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +0 -33
  179. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +0 -62
  180. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +0 -56
  181. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +0 -63
  182. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +0 -44
  183. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +0 -35
  184. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +0 -40
  185. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +0 -45
  186. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +0 -26
  187. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +0 -33
  188. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +0 -34
  189. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +0 -33
  190. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +0 -336
  191. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +0 -61
  192. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +0 -37
  193. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +0 -28
  194. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +0 -46
  195. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +0 -27
  196. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +0 -25
  197. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +0 -26
  198. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +0 -26
  199. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +0 -333
  200. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +0 -68
  201. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +0 -26
  202. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +0 -27
  203. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +0 -28
  204. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +0 -29
  205. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +0 -27
  206. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +0 -29
  207. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +0 -29
  208. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +0 -27
  209. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +0 -207
  210. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +0 -65
  211. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +0 -24
  212. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +0 -28
  213. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +0 -29
  214. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +0 -27
  215. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +0 -28
  216. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +0 -31
  217. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +0 -36
  218. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +0 -25
  219. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +0 -21
  220. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +0 -22
  221. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +0 -29
  222. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +0 -444
  223. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +0 -45
  224. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +0 -35
  225. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +0 -19
  226. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +0 -29
  227. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +0 -25
  228. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +0 -37
  229. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +0 -118
  230. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +0 -73
  231. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +0 -66
  232. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +0 -35
  233. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +0 -60
  234. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +0 -33
  235. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +0 -37
  236. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +0 -40
  237. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +0 -37
  238. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +0 -267
  239. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +0 -54
  240. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +0 -39
  241. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +0 -42
  242. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +0 -33
  243. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +0 -35
  244. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +0 -27
  245. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +0 -29
  246. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +0 -28
  247. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Audit.md +0 -272
  248. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +0 -60
  249. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +0 -31
  250. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +0 -34
  251. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +0 -30
  252. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +0 -27
  253. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +0 -28
  254. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +0 -26
  255. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +0 -33
  256. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T008-ci-and-release-automation.md +0 -46
  257. package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +0 -25
  258. package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +0 -27
  259. package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +0 -27
  260. package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +0 -29
  261. package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +0 -31
  262. package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +0 -34
  263. package/.savepoint/releases/v1.1/v1.1-PRD.md +0 -139
  264. package/.savepoint/router.md +0 -57
  265. package/.savepoint/visual-identity.md +0 -125
  266. package/AGENTS.md +0 -99
  267. package/CLAUDE.md +0 -1
  268. package/GEMINI.md +0 -1
  269. package/Makefile +0 -31
  270. package/agent-skills/ink-tui-design/SKILL.md +0 -309
  271. package/agent-skills/ink-tui-design/references/component-patterns.md +0 -371
  272. package/agent-skills/ink-tui-design/references/hooks-guide.md +0 -436
  273. package/agent-skills/ink-tui-design/references/ink-gotchas.md +0 -330
  274. package/agent-skills/ink-tui-design/references/testing-patterns.md +0 -384
  275. package/agent-skills/savepoint-audit/SKILL.md +0 -87
  276. package/agent-skills/savepoint-build-task/SKILL.md +0 -44
  277. package/agent-skills/savepoint-create-plan/SKILL.md +0 -33
  278. package/agent-skills/savepoint-create-task/SKILL.md +0 -44
  279. package/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
  280. package/agent-skills/savepoint-system-design/SKILL.md +0 -38
  281. package/agent-skills/superpowers/brainstorming/SKILL.md +0 -165
  282. package/agent-skills/superpowers/brainstorming/visual-companion.md +0 -304
  283. package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +0 -193
  284. package/agent-skills/superpowers/executing-plans/SKILL.md +0 -77
  285. package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +0 -213
  286. package/agent-skills/superpowers/receiving-code-review/SKILL.md +0 -226
  287. package/agent-skills/superpowers/requesting-code-review/SKILL.md +0 -115
  288. package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +0 -160
  289. package/agent-skills/superpowers/subagent-driven-development/SKILL.md +0 -292
  290. package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +0 -27
  291. package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +0 -113
  292. package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +0 -61
  293. package/agent-skills/superpowers/systematic-debugging/SKILL.md +0 -305
  294. package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +0 -122
  295. package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +0 -130
  296. package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +0 -183
  297. package/agent-skills/superpowers/test-driven-development/SKILL.md +0 -389
  298. package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +0 -317
  299. package/agent-skills/superpowers/verification-before-completion/SKILL.md +0 -147
  300. package/agent-skills/superpowers/writing-plans/SKILL.md +0 -159
  301. package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +0 -49
  302. package/agent_skills_test.go +0 -91
  303. package/assets/banner.png +0 -0
  304. package/assets/logo.png +0 -0
  305. package/assets/strawman.png +0 -0
  306. package/cmd/board.go +0 -59
  307. package/cmd/board_test.go +0 -137
  308. package/cmd/doctor.go +0 -53
  309. package/cmd/doctor_test.go +0 -146
  310. package/cmd/init.go +0 -63
  311. package/cmd/init_test.go +0 -104
  312. package/go.mod +0 -36
  313. package/go.sum +0 -75
  314. package/internal/board/board.go +0 -181
  315. package/internal/board/board_test.go +0 -168
  316. package/internal/board/card.go +0 -129
  317. package/internal/board/card_test.go +0 -287
  318. package/internal/board/column.go +0 -156
  319. package/internal/board/column_test.go +0 -210
  320. package/internal/board/debug.go +0 -26
  321. package/internal/board/debug_test.go +0 -108
  322. package/internal/board/detail.go +0 -218
  323. package/internal/board/detail_test.go +0 -388
  324. package/internal/board/epic_panel.go +0 -264
  325. package/internal/board/epic_panel_test.go +0 -869
  326. package/internal/board/help.go +0 -41
  327. package/internal/board/help_test.go +0 -86
  328. package/internal/board/integration_test.go +0 -266
  329. package/internal/board/interfaces.go +0 -65
  330. package/internal/board/interfaces_test.go +0 -114
  331. package/internal/board/io.go +0 -93
  332. package/internal/board/layout.go +0 -68
  333. package/internal/board/layout_test.go +0 -106
  334. package/internal/board/model.go +0 -235
  335. package/internal/board/model_test.go +0 -67
  336. package/internal/board/plain.go +0 -88
  337. package/internal/board/plain_test.go +0 -117
  338. package/internal/board/release.go +0 -34
  339. package/internal/board/release_test.go +0 -177
  340. package/internal/board/render_policy_test.go +0 -77
  341. package/internal/board/status.go +0 -23
  342. package/internal/board/theme.go +0 -24
  343. package/internal/board/theme_test.go +0 -31
  344. package/internal/board/transitions.go +0 -113
  345. package/internal/board/transitions_test.go +0 -164
  346. package/internal/board/tui.go +0 -32
  347. package/internal/board/update.go +0 -575
  348. package/internal/board/update_test.go +0 -602
  349. package/internal/board/util.go +0 -76
  350. package/internal/board/view.go +0 -317
  351. package/internal/board/view_test.go +0 -377
  352. package/internal/board/watch.go +0 -136
  353. package/internal/buildtool/main.go +0 -249
  354. package/internal/buildtool/main_test.go +0 -224
  355. package/internal/data/config.go +0 -101
  356. package/internal/data/config_test.go +0 -122
  357. package/internal/data/discover.go +0 -178
  358. package/internal/data/discover_test.go +0 -130
  359. package/internal/data/errors.go +0 -13
  360. package/internal/data/fuzz_test.go +0 -75
  361. package/internal/data/lifecycle.go +0 -44
  362. package/internal/data/lifecycle_test.go +0 -41
  363. package/internal/data/parser.go +0 -243
  364. package/internal/data/parser_test.go +0 -281
  365. package/internal/data/router.go +0 -52
  366. package/internal/data/router_test.go +0 -35
  367. package/internal/data/task.go +0 -57
  368. package/internal/data/task_test.go +0 -51
  369. package/internal/data/testdata/fuzz/FuzzSplitFrontmatterBody/68eb66b0fe91e7e3 +0 -2
  370. package/internal/data/write.go +0 -221
  371. package/internal/data/write_test.go +0 -623
  372. package/internal/doctor/checks.go +0 -567
  373. package/internal/doctor/checks_test.go +0 -716
  374. package/internal/doctor/gates.go +0 -193
  375. package/internal/doctor/gates_test.go +0 -166
  376. package/internal/doctor/interfaces.go +0 -64
  377. package/internal/doctor/interfaces_test.go +0 -104
  378. package/internal/doctor/repairs.go +0 -80
  379. package/internal/doctor/repairs_test.go +0 -81
  380. package/internal/doctor/report.go +0 -157
  381. package/internal/doctor/report_test.go +0 -89
  382. package/internal/init/clipboard.go +0 -146
  383. package/internal/init/clipboard_test.go +0 -74
  384. package/internal/init/install.go +0 -16
  385. package/internal/init/integration_test.go +0 -197
  386. package/internal/init/prompt.go +0 -14
  387. package/internal/init/prompt_test.go +0 -77
  388. package/internal/init/scaffold.go +0 -59
  389. package/internal/init/scaffold_test.go +0 -179
  390. package/internal/init/template_freshness_test.go +0 -56
  391. package/internal/init/validate.go +0 -85
  392. package/internal/init/validate_test.go +0 -141
  393. package/internal/init/write.go +0 -73
  394. package/internal/init/write_test.go +0 -91
  395. package/internal/styles/palette.go +0 -49
  396. package/internal/styles/styles.go +0 -139
  397. package/internal/styles/styles_test.go +0 -133
  398. package/internal/testutil/fixture.go +0 -113
  399. package/internal/testutil/fs.go +0 -26
  400. package/main.go +0 -136
  401. package/project-audit/audit_report_glm_5.1.md +0 -411
  402. package/project-audit/audit_report_opus_4.6.md +0 -406
  403. package/project-audit/consolidated-audit-report.md +0 -456
  404. package/scripts/vitest-preload.cjs +0 -95
  405. package/templates/project/.savepoint/Design.md +0 -47
  406. package/templates/project/.savepoint/PRD.md +0 -34
  407. package/templates/project/.savepoint/config.yml +0 -27
  408. package/templates/project/.savepoint/router.md +0 -153
  409. package/templates/project/.savepoint/visual-identity.md +0 -122
  410. package/templates/project/AGENTS.md +0 -88
  411. package/templates/project/agent-skills/savepoint-audit/SKILL.md +0 -87
  412. package/templates/project/agent-skills/savepoint-build-task/SKILL.md +0 -44
  413. package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +0 -33
  414. package/templates/project/agent-skills/savepoint-create-task/SKILL.md +0 -44
  415. package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
  416. package/templates/project/agent-skills/savepoint-system-design/SKILL.md +0 -38
  417. package/templates/prompts/audit-reconciliation.prompt.md +0 -72
  418. package/templates/prompts/design.prompt.md +0 -45
  419. package/templates/prompts/epic-design.prompt.md +0 -43
  420. package/templates/prompts/magic-prompt.prompt.md +0 -7
  421. package/templates/prompts/prd.prompt.md +0 -42
  422. package/templates/prompts/task-breakdown.prompt.md +0 -54
  423. package/templates/prompts/task-building.prompt.md +0 -38
  424. package/templates/prompts/task-planning.prompt.md +0 -53
  425. package/templates/release/v1/PRD.md +0 -37
@@ -1,142 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: audited
4
- audited: 2026-04-27
5
- ---
6
-
7
- # Epic E02: data-model
8
-
9
- ## Context Budget
10
-
11
- For implementation tasks in this epic, read only:
12
-
13
- - `.savepoint/router.md`
14
- - this epic `Design.md`
15
- - the active task file
16
- - directly touched source/test files
17
-
18
- Read `.savepoint/Design.md` only if the task changes architecture. Read `.savepoint/releases/v1/PRD.md`, prior epic docs, audit proposals, or `.savepoint/visual-identity.md` only when the active task explicitly requires them.
19
-
20
- ## Purpose
21
-
22
- Build the core file-backed model for releases, epics, tasks, statuses, dependencies, and project configuration. This epic gives later CLI and TUI work a typed domain layer instead of each command parsing markdown independently.
23
-
24
- ## What this epic adds
25
-
26
- - Typed models for releases, epics, tasks, task statuses, dependency IDs, config, and router state.
27
- - Markdown frontmatter parsing for task and planning files.
28
- - Readers for `.savepoint/releases/{release}/PRD.md`, epic `Design.md`, and task files.
29
- - Status transition validation for `planned`, `in_progress`, and `done`, with legacy `backlog` and `review` normalized on read.
30
- - Dependency resolution, missing dependency detection, and cycle detection.
31
- - Shared filesystem helpers for scoped `.savepoint` reads.
32
- - Unit tests for parsing, validation, dependency logic, and state transitions.
33
-
34
- ## Implementation strategy
35
-
36
- - Use structured parsers for YAML/frontmatter and Markdown boundaries.
37
- - Keep domain types and validation pure; filesystem reads belong in `src/fs/*` and `src/readers/*`.
38
- - Keep writes out of scope except temporary test fixtures.
39
- - Make ID parsing understand prefixed epic and task IDs such as `E02-data-model/T001-readers`.
40
- - Return boundary errors that include the path and reason without forcing callers to parse error text.
41
-
42
- ## Components and files
43
-
44
- Expected files introduced or extended by this epic:
45
-
46
- | Path | Purpose |
47
- | ----------------------- | --------------------------------------------------- |
48
- | `src/domain/status.ts` | Status values and transition rules. |
49
- | `src/domain/ids.ts` | Release, epic, and task ID parsing/formatting. |
50
- | `src/domain/task.ts` | Task frontmatter and task document types. |
51
- | `src/domain/release.ts` | Release PRD metadata types. |
52
- | `src/domain/config.ts` | `config.yml` type and defaults. |
53
- | `src/fs/markdown.ts` | Markdown/frontmatter read helpers. |
54
- | `src/fs/project.ts` | Project root and `.savepoint` path helpers. |
55
- | `src/readers/*.ts` | Release, epic, task, router, and config readers. |
56
- | `src/validation/*.ts` | Status, dependency, duplicate ID, and cycle checks. |
57
- | `test/**/*.test.ts` | Unit tests for the model and validation behavior. |
58
-
59
- ## Architectural delta
60
-
61
- Before this epic, Savepoint has only a package scaffold. After this epic, it has a reusable domain and read-only persistence layer for the file-based state machine.
62
-
63
- This epic intentionally avoids write operations except where tests create fixtures. Writes belong to later command/TUI/audit work once behavior exists.
64
-
65
- ## Boundaries
66
-
67
- In scope:
68
-
69
- - Parse markdown frontmatter with clear boundary errors.
70
- - Model task dependencies using repo-relative task IDs.
71
- - Detect cycles and broken dependencies.
72
- - Expose pure validation functions usable by CLI, TUI, audit, and doctor.
73
-
74
- Out of scope:
75
-
76
- - Creating or editing tasks.
77
- - Rendering any TUI.
78
- - Implementing command dispatch.
79
- - Running quality gates.
80
- - Writing audit proposals.
81
-
82
- ## Quality gates
83
-
84
- - Branching parser and validator logic must have unit tests.
85
- - Fixture files should be small and local to tests.
86
- - Errors should identify the file path and failure reason.
87
-
88
- ## Design constraints
89
-
90
- - Prefer structured parsers over ad hoc string splitting.
91
- - Keep filesystem access at boundaries; domain validation should be pure.
92
- - Use one source of truth for status transitions and dependency rules.
93
-
94
- ## Implemented as
95
-
96
- Implemented on 2026-04-27 across tasks T001-T007. The read-only data model landed with focused unit tests and passing mechanical gates after formatting the E02 task markdown.
97
-
98
- **Implemented components:**
99
-
100
- | Path | Result |
101
- | -------------------------------- | ----------------------------------------------------------------------- |
102
- | `src/domain/ids.ts` | Release, epic, and full task ID parsing plus formatting helpers. |
103
- | `src/domain/status.ts` | Canonical task status values and transition validation. |
104
- | `src/domain/task.ts` | Task frontmatter and task document validation. |
105
- | `src/domain/release.ts` | Release PRD frontmatter validation. |
106
- | `src/domain/epic.ts` | Epic Design frontmatter validation. |
107
- | `src/domain/router.ts` | Router state value and Current state validation. |
108
- | `src/domain/config.ts` | Config defaults and merge behavior. |
109
- | `src/fs/markdown.ts` | Structured YAML frontmatter parsing with path-aware boundary errors. |
110
- | `src/fs/project.ts` | `.savepoint` root discovery and scoped path construction. |
111
- | `src/readers/*.ts` | Read-only release, epic, router, config, and task-set readers. |
112
- | `src/validation/dependencies.ts` | Duplicate task ID, missing dependency, and cycle detection. |
113
- | `test/**/*.test.ts` | Branch coverage for parser, reader, status, config, and graph behavior. |
114
-
115
- **Deviations from original design:**
116
-
117
- | Item | Deviation | Reason / follow-up |
118
- | ----------------------------- | -------------------- | --------------------------------------------------------------------------------------- |
119
- | `done` status transitions | Fixed during audit | `done -> review` is allowed so completed work can be reopened for audit-stale rechecks. |
120
- | Config accent validation | Fixed during audit | Non-string custom accent values are ignored before merging defaults. |
121
- | Audit snapshot/router flip | Manual | Expected until E07 implements the audit CLI pipeline. |
122
- | `.claude/settings.local.json` | Local untracked file | Decide whether to add `.claude/` to `.gitignore` before commit. |
123
-
124
- **Quality gates:**
125
-
126
- | Gate | Result |
127
- | ---------------------- | ---------------------------------------------------------------------------------------- |
128
- | `npm run build` | Passed. |
129
- | `npm run typecheck` | Passed. |
130
- | `npm run lint` | Passed. |
131
- | `npm run format:check` | Passed after formatting E02 task markdown. |
132
- | `npm test` | Passed outside sandbox: 16 test files, 176 tests. Sandbox run hit esbuild `spawn EPERM`. |
133
-
134
- ## Close Criteria
135
-
136
- - All `E02-data-model` tasks are `done`.
137
- - `npm run build`, `npm run typecheck`, `npm run lint`, `npm run format:check`, and `npm test` pass.
138
- - Tests cover parser errors, valid documents, invalid statuses, allowed and disallowed status transitions, missing dependencies, duplicate IDs, and dependency cycles.
139
- - Audit snapshot exists at `.savepoint/audit/E02-data-model/snapshot.md`.
140
- - Audit proposals are accepted, rejected, or explicitly carried forward.
141
- - This epic `Design.md` has `status: audited`.
142
- - Router points to the next epic state.
@@ -1,27 +0,0 @@
1
- ---
2
- id: E02-data-model/T001-domain-ids-status
3
- status: done
4
- objective: "Define pure domain primitives for release, epic, task IDs, task statuses, and allowed status transitions."
5
- depends_on: []
6
- ---
7
-
8
- # T001: Domain IDs and Statuses
9
-
10
- ## Scope
11
-
12
- Introduce the core domain types and validation helpers that later readers and validators can share.
13
-
14
- ## Acceptance Criteria
15
-
16
- - Release, epic, and task ID parsing accepts the E02 design's expected ID shapes.
17
- - Task status values are represented from one source of truth.
18
- - Status transition validation covers allowed and disallowed transitions.
19
- - Branching validation behavior has focused unit tests.
20
-
21
- ## Implementation Plan
22
-
23
- - [x] Inspect existing package/test conventions needed to place domain modules and focused unit tests.
24
- - [x] Add pure ID parsing and formatting helpers for release IDs, epic IDs, task numbers, and full task IDs.
25
- - [x] Add task status constants/types and one transition rule table for `backlog`, `planned`, `in_progress`, `review`, and `done`.
26
- - [x] Add validation helpers that return typed success/failure results without filesystem access.
27
- - [x] Add unit tests for valid and invalid ID shapes plus allowed and disallowed status transitions.
@@ -1,28 +0,0 @@
1
- ---
2
- id: E02-data-model/T002-markdown-frontmatter-boundary
3
- status: done
4
- objective: "Add scoped markdown/frontmatter read helpers that return typed boundary errors with file path and reason."
5
- depends_on:
6
- - E02-data-model/T001-domain-ids-status
7
- ---
8
-
9
- # T002: Markdown Frontmatter Boundary
10
-
11
- ## Scope
12
-
13
- Create the filesystem boundary for reading markdown documents with structured frontmatter parsing.
14
-
15
- ## Acceptance Criteria
16
-
17
- - Markdown documents can be read from scoped project paths.
18
- - Frontmatter is parsed with a structured YAML/frontmatter parser.
19
- - Missing, malformed, or invalid frontmatter returns errors that include path and reason.
20
- - Parser success and failure branches have focused unit tests.
21
-
22
- ## Implementation Plan
23
-
24
- - [x] Review the T001 domain result/error style and existing test fixture conventions.
25
- - [x] Add a scoped project path helper for locating `.savepoint` documents without exposing arbitrary filesystem reads.
26
- - [x] Add a markdown/frontmatter reader that uses a structured parser and preserves markdown body content.
27
- - [x] Define path-aware boundary errors for missing files, missing frontmatter, malformed frontmatter, and schema rejection.
28
- - [x] Add focused unit tests for successful reads and each parser/boundary failure branch using small temporary fixtures.
@@ -1,29 +0,0 @@
1
- ---
2
- id: E02-data-model/T003-task-documents
3
- status: done
4
- objective: "Parse task markdown files into typed task documents with validated IDs, statuses, objectives, and dependency IDs."
5
- depends_on:
6
- - E02-data-model/T001-domain-ids-status
7
- - E02-data-model/T002-markdown-frontmatter-boundary
8
- ---
9
-
10
- # T003: Task Documents
11
-
12
- ## Scope
13
-
14
- Build the task reader and task document model on top of the markdown/frontmatter boundary.
15
-
16
- ## Acceptance Criteria
17
-
18
- - Task frontmatter maps into a typed task document.
19
- - Invalid task IDs, statuses, objectives, or dependency IDs are rejected with path-aware errors.
20
- - Markdown body content remains available to callers.
21
- - Valid and invalid task document cases have focused unit tests.
22
-
23
- ## Implementation Plan
24
-
25
- - [x] Reuse the T001 ID/status validators and the T002 markdown/frontmatter boundary as the only parsing inputs.
26
- - [x] Define the typed task frontmatter and task document model, including validated dependency IDs and markdown body.
27
- - [x] Implement task document parsing that rejects invalid IDs, statuses, missing objectives, and malformed `depends_on` values with path-aware errors.
28
- - [x] Keep task parsing read-only and separate pure frontmatter validation from filesystem access.
29
- - [x] Add focused unit tests for valid task files and each invalid frontmatter branch.
@@ -1,30 +0,0 @@
1
- ---
2
- id: E02-data-model/T004-release-epic-router-config-readers
3
- status: done
4
- objective: "Add read-only models and readers for release PRDs, epic designs, router state, and project configuration."
5
- depends_on:
6
- - E02-data-model/T001-domain-ids-status
7
- - E02-data-model/T002-markdown-frontmatter-boundary
8
- ---
9
-
10
- # T004: Release, Epic, Router, and Config Readers
11
-
12
- ## Scope
13
-
14
- Expose typed read-only access for the remaining Savepoint planning documents and config state.
15
-
16
- ## Acceptance Criteria
17
-
18
- - Release PRD, epic Design, router state, and config data have typed models.
19
- - Readers keep filesystem access at the boundary.
20
- - Config defaults are applied from one place.
21
- - Missing or malformed input returns path-aware boundary errors.
22
- - Reader branches and config default behavior have focused unit tests.
23
-
24
- ## Implementation Plan
25
-
26
- - [x] Reuse the T001 domain primitives and T002 markdown/frontmatter boundary for all document reads.
27
- - [x] Define typed models for release PRD metadata, epic Design metadata, router state, and project config defaults.
28
- - [x] Implement read-only readers that keep path resolution and file IO at the boundary.
29
- - [x] Apply config defaults from one exported source of truth before returning typed config data.
30
- - [x] Add focused unit tests for valid reads, malformed or missing input, router-state validation, and config default behavior.
@@ -1,29 +0,0 @@
1
- ---
2
- id: E02-data-model/T005-dependency-validation
3
- status: done
4
- objective: "Validate task dependency graphs for missing dependencies, duplicate IDs, and cycles using pure domain functions."
5
- depends_on:
6
- - E02-data-model/T003-task-documents
7
- ---
8
-
9
- # T005: Dependency Validation
10
-
11
- ## Scope
12
-
13
- Implement dependency resolution and graph validation over parsed task documents.
14
-
15
- ## Acceptance Criteria
16
-
17
- - Missing dependency IDs are reported with the dependent task ID.
18
- - Duplicate task IDs are detected.
19
- - Dependency cycles are detected and reported with enough IDs to explain the cycle.
20
- - Validation functions are pure and do not read files.
21
- - Missing dependency, duplicate ID, and cycle branches have focused unit tests.
22
-
23
- ## Implementation Plan
24
-
25
- - [x] Build on the T003 task document model and keep validation functions independent of filesystem access.
26
- - [x] Implement duplicate task ID detection over a task document collection.
27
- - [x] Implement missing dependency detection that reports the dependent task ID and unresolved dependency ID.
28
- - [x] Implement dependency cycle detection that returns enough task IDs to explain the cycle.
29
- - [x] Add focused unit tests for valid graphs, missing dependencies, duplicate IDs, simple cycles, and longer cycles.
@@ -1,29 +0,0 @@
1
- ---
2
- id: E02-data-model/T006-epic-task-set-reader
3
- status: done
4
- objective: "Read an epic task directory into a validated task set using the task reader and dependency validation."
5
- depends_on:
6
- - E02-data-model/T003-task-documents
7
- - E02-data-model/T005-dependency-validation
8
- ---
9
-
10
- # T006: Epic Task Set Reader
11
-
12
- ## Scope
13
-
14
- Connect the file-backed task reader to dependency validation for an entire epic's task directory.
15
-
16
- ## Acceptance Criteria
17
-
18
- - An epic task directory is read into a typed task set.
19
- - Dependency validation runs after all task files are parsed.
20
- - File boundary errors and graph validation errors remain distinguishable.
21
- - Valid task sets and invalid graph cases have focused unit tests with small fixtures.
22
-
23
- ## Implementation Plan
24
-
25
- - [x] Reuse the T003 task reader and T005 dependency validation without duplicating parsing or graph logic.
26
- - [x] Add an epic task directory reader that discovers task markdown files and parses each into typed task documents.
27
- - [x] Run dependency validation only after all readable task files have been parsed.
28
- - [x] Return distinguishable results for file boundary failures versus dependency graph validation failures.
29
- - [x] Add focused fixture tests for a valid task set, parse failures, missing dependencies, duplicate IDs, and cycles.
@@ -1,31 +0,0 @@
1
- ---
2
- id: E02-data-model/T007-quality-gates
3
- status: done
4
- objective: "Run and fix the E02 data-model quality gates so the read-only domain layer is buildable and covered."
5
- depends_on:
6
- - E02-data-model/T004-release-epic-router-config-readers
7
- - E02-data-model/T006-epic-task-set-reader
8
- ---
9
-
10
- # T007: Quality Gates
11
-
12
- ## Scope
13
-
14
- Close the epic implementation by running the required checks and making any small fixes needed by the data-model work.
15
-
16
- ## Acceptance Criteria
17
-
18
- - `npm run build` passes.
19
- - `npm run typecheck` passes.
20
- - `npm run lint` passes.
21
- - `npm run format:check` passes.
22
- - `npm test` passes.
23
- - E02 parser, validator, reader, and transition test coverage matches the epic Design close criteria.
24
-
25
- ## Implementation Plan
26
-
27
- - [x] Run `npm run build` and fix any compile or packaging failures introduced by E02.
28
- - [x] Run `npm run typecheck` and fix strict TypeScript issues without weakening domain types.
29
- - [x] Run `npm run lint` and fix lint findings without broad refactors.
30
- - [x] Run `npm run format:check` and apply formatting only where needed.
31
- - [x] Run `npm test` and add or adjust focused tests until E02 close-criteria coverage is represented.
@@ -1,40 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: planned
4
- ---
5
-
6
- # Epic E02: Domain Phase Model
7
-
8
- ## Purpose
9
-
10
- Extend the domain layer to support the build/test/audit phase model within the `in_progress` status. Simplify the config model to theme-only and collapse the router state machine from 6 to 3 states.
11
-
12
- ## What this epic adds
13
-
14
- - `TaskPhase` type with constants and transition rules.
15
- - Phase validation in task frontmatter parsing.
16
- - Phase-to-accent color mapping for TUI rendering.
17
- - Simplified config model (theme-only, no quality gates or audit config).
18
- - Collapsed router domain (3 states: planning, building, reviewing).
19
-
20
- ## Definition of Done
21
-
22
- - `status.ts` defines `TaskPhase`, phase transitions, and `PHASE_ACCENTS`.
23
- - `task.ts` validates `phase?: TaskPhase` in frontmatter.
24
- - `config.ts` contains only `ThemeConfig` and `SavepointConfig` (no quality_gates, audit, verify_strict).
25
- - `router.ts` defines 3 states (`planning`, `building`, `reviewing`).
26
- - All existing domain tests compile and pass (or are updated).
27
- - No references to old 6-state model remain in domain code.
28
-
29
- ## Components and files
30
-
31
- | Path | Purpose |
32
- |------|---------|
33
- | `src/domain/status.ts` | TaskPhase type, phase transitions, accent mapping |
34
- | `src/domain/task.ts` | Phase frontmatter field and validation |
35
- | `src/domain/config.ts` | Simplified theme-only config model |
36
- | `src/domain/router.ts` | 3-state router domain |
37
- | `test/domain/status.test.ts` | Phase transition tests |
38
- | `test/domain/task.test.ts` | Phase frontmatter validation tests |
39
- | `test/domain/config.test.ts` | Simplified config tests |
40
- | `test/domain/router.test.ts` | 3-state router tests |
@@ -1,27 +0,0 @@
1
- ---
2
- id: E02-domain-phase-model/T001-phase-types
3
- status: planned
4
- objective: "Add TaskPhase type, constants, transitions, and accent color mapping to status.ts"
5
- depends_on: []
6
- ---
7
-
8
- # T001: Phase Types
9
-
10
- ## Acceptance Criteria
11
-
12
- - `status.ts` exports `TaskPhase` type (`build | test | audit`).
13
- - Phase order constant exists: `['build', 'test', 'audit']`.
14
- - `getNextPhase(current)` and `getPreviousPhase(current)` functions exist.
15
- - `PHASE_ACCENTS` maps each phase to a hex color string.
16
- - Phase transition validation: `isPhaseTransitionAllowed(from, to)` returns boolean.
17
- - All phase functions have unit tests.
18
-
19
- ## Implementation Plan
20
-
21
- - [ ] Read existing `status.ts` to understand current structure.
22
- - [ ] Add `TaskPhase` type and `TASK_PHASES` constant array.
23
- - [ ] Add `getNextPhase` and `getPreviousPhase` helpers.
24
- - [ ] Add `PHASE_ACCENTS` mapping.
25
- - [ ] Add `isPhaseTransitionAllowed` with no-skipping rule.
26
- - [ ] Write/update `test/domain/status.test.ts` with phase tests.
27
- - [ ] Run `npm test` and verify phase tests pass.
@@ -1,25 +0,0 @@
1
- ---
2
- id: E02-domain-phase-model/T002-phase-frontmatter
3
- status: planned
4
- objective: "Add phase field to TaskFrontmatter and update validation in task.ts"
5
- depends_on: [E02-domain-phase-model/T001-phase-types]
6
- ---
7
-
8
- # T002: Phase Frontmatter
9
-
10
- ## Acceptance Criteria
11
-
12
- - `TaskFrontmatter` interface includes optional `phase?: TaskPhase`.
13
- - `validateTaskFrontmatter` accepts and validates `phase` as optional string.
14
- - Invalid phase values are rejected with clear error messages.
15
- - `phase` is absent when `status` is not `in_progress`.
16
- - All task validation tests pass.
17
-
18
- ## Implementation Plan
19
-
20
- - [ ] Read existing `task.ts` and `test/domain/task.test.ts`.
21
- - [ ] Add `phase?: TaskPhase` to `TaskFrontmatter` interface.
22
- - [ ] Update `validateTaskFrontmatter` to parse optional `phase` field.
23
- - [ ] Validate that phase is one of `build`, `test`, `audit` if present.
24
- - [ ] Update `test/domain/task.test.ts` with phase validation cases.
25
- - [ ] Run `npm test` and verify.
@@ -1,26 +0,0 @@
1
- ---
2
- id: E02-domain-phase-model/T003-simplify-config
3
- status: planned
4
- objective: "Remove quality_gates, audit, verify_strict from config model; keep theme only"
5
- depends_on: []
6
- ---
7
-
8
- # T003: Simplify Config
9
-
10
- ## Acceptance Criteria
11
-
12
- - `config.ts` contains only `ThemeConfig` and a minimal `SavepointConfig` wrapper.
13
- - `CONFIG_DEFAULTS` has no `quality_gates`, `audit`, or `verify_strict` fields.
14
- - `applyConfigDefaults` only processes theme keys.
15
- - `readers/config.ts` still reads and returns a valid config (theme defaults if missing).
16
- - All config tests pass.
17
-
18
- ## Implementation Plan
19
-
20
- - [ ] Read existing `config.ts` and `test/domain/config.test.ts`.
21
- - [ ] Remove `QualityGates`, `AuditConfig` interfaces.
22
- - [ ] Remove `quality_gates`, `audit`, `verify_strict` from `SavepointConfig`.
23
- - [ ] Update `CONFIG_DEFAULTS` to theme-only.
24
- - [ ] Simplify `applyConfigDefaults` to only handle theme fields.
25
- - [ ] Update `test/domain/config.test.ts`.
26
- - [ ] Run `npm test`.
@@ -1,24 +0,0 @@
1
- ---
2
- id: E02-domain-phase-model/T004-simplify-router-domain
3
- status: planned
4
- objective: "Collapse router states from 6 to 3 in router.ts"
5
- depends_on: []
6
- ---
7
-
8
- # T004: Simplify Router Domain
9
-
10
- ## Acceptance Criteria
11
-
12
- - `router.ts` defines 3 states: `planning`, `building`, `reviewing`.
13
- - `isRouterStateValue` validates only the 3 states.
14
- - `validateRouterState` accepts the 3-state model.
15
- - `RouterState` interface unchanged (still has `state`, `release`, `epic`, `task`, `next_action`).
16
- - All router tests pass.
17
-
18
- ## Implementation Plan
19
-
20
- - [ ] Read existing `router.ts` and `test/domain/router.test.ts`.
21
- - [ ] Replace `ROUTER_STATES` array with 3 states.
22
- - [ ] Update `isRouterStateValue` and `validateRouterState`.
23
- - [ ] Update `test/domain/router.test.ts` with 3-state cases.
24
- - [ ] Run `npm test`.
@@ -1,122 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: audited
4
- ---
5
-
6
- # Epic E03: cli-foundation
7
-
8
- ## Context Budget
9
-
10
- For implementation tasks in this epic, read only:
11
-
12
- - `.savepoint/router.md`
13
- - this epic `Design.md`
14
- - the active task file
15
- - directly touched source/test files
16
-
17
- Read `.savepoint/Design.md` only if the task changes architecture. Read `.savepoint/releases/v1/PRD.md`, prior epic docs, audit proposals, or `.savepoint/visual-identity.md` only when the active task explicitly requires them.
18
-
19
- For E03 specifically, do not preload E02 source files, E02 audit proposals, `.savepoint/PRD.md`, or `.savepoint/releases/v1/PRD.md` during implementation. The CLI foundation should use the command contract in this file and the active task as its source of truth.
20
-
21
- ## Purpose
22
-
23
- Introduce the real `savepoint` command shell: argument parsing, command dispatch, help/version output, exit codes, and terminal capability detection. This epic wires a command framework around stub command handlers so later epics can fill behavior without changing the CLI contract.
24
-
25
- ## What this epic adds
26
-
27
- - Command dispatch for `init`, `board`, `audit`, and `doctor`.
28
- - Top-level `--help` and `--version`.
29
- - Command-level help text.
30
- - Unknown command and unknown flag handling.
31
- - Exit code conventions.
32
- - TTY and color capability detection helpers.
33
- - A testable CLI runner separated from process globals.
34
-
35
- ## Implementation strategy
36
-
37
- - Use a small local parser instead of a CLI framework unless implementation proves it would reduce code.
38
- - Treat the allowed commands as a closed set: `init`, `board`, `audit`, `doctor`.
39
- - Treat allowed global flags as a closed set: `--help`, `-h`, `--version`, `-v`.
40
- - Keep command stubs shallow. They should return deterministic "not implemented yet" results and exit codes without reading or writing project files.
41
- - Keep process globals in `src/cli.ts`; tests should exercise `runCli()` with injected argv, streams, and environment.
42
-
43
- ## Components and files
44
-
45
- Expected files introduced or extended by this epic:
46
-
47
- | Path | Purpose |
48
- | ------------------------ | --------------------------------------------------- |
49
- | `src/cli.ts` | Process entrypoint that invokes the CLI runner. |
50
- | `src/cli/run.ts` | Testable command runner. |
51
- | `src/cli/args.ts` | Argument parsing and normalization. |
52
- | `src/cli/help.ts` | Help text generation. |
53
- | `src/cli/exit-codes.ts` | Shared exit code constants. |
54
- | `src/cli/environment.ts` | TTY, color, and platform detection. |
55
- | `src/commands/*.ts` | Stub command modules for the fixed command surface. |
56
- | `test/cli/**/*.test.ts` | CLI parser and dispatch tests. |
57
-
58
- ## Architectural delta
59
-
60
- Before this epic, the binary is a placeholder. After this epic, `savepoint` has a stable command boundary with stubbed behaviors behind it.
61
-
62
- The command layer should not introduce data-model behavior. Commands that need project data stay as deterministic stubs until a later epic owns the data model.
63
-
64
- ## Implemented As
65
-
66
- - `src/cli.ts` now isolates process globals and delegates to `runCli()`.
67
- - `src/cli/args.ts` implements the closed parser contract for bare invocation, global help/version flags, known commands, unknown top-level commands, and unknown top-level flags.
68
- - `src/cli/run.ts` wires parser output to help, version output, command-level help, command stubs, and usage errors.
69
- - `src/cli/help.ts` provides deterministic top-level and command-level help text.
70
- - `src/cli/environment.ts` provides injectable TTY, color, and platform detection.
71
- - `src/cli/exit-codes.ts` centralizes success, usage-error, and not-implemented exit codes.
72
- - `src/commands/init.ts`, `src/commands/board.ts`, `src/commands/audit.ts`, and `src/commands/doctor.ts` return deterministic not-yet-implemented results with no project filesystem side effects.
73
- - `src/commands/result.ts` was added as the shared command-result type used by the command stubs.
74
- - Focused tests were added under `test/cli/` for parsing, help text, terminal environment detection, command stubs, and runner dispatch.
75
- - The audit snapshot was generated manually because `savepoint audit` is still a stub.
76
- - During audit closeout, command-level unknown flags were fixed to return a usage error instead of dispatching command stubs.
77
- - The audit workflow was updated for future epics to prefer a single delta-shaped proposal bundle over four separate proposal files.
78
-
79
- Design delta notes:
80
-
81
- - The planned `src/commands/*.ts` component was implemented as one module per command plus a small shared `result.ts`.
82
- - The epic design table originally described command modules as the "five-command surface"; the implemented command surface has four commands plus top-level global help/version flags, matching the rest of the design.
83
- - Command behavior remains stubbed by design. Later epics own real `init`, `board`, `audit`, and `doctor` behavior.
84
-
85
- ## Boundaries
86
-
87
- In scope:
88
-
89
- - Preserve the exact v1 CLI surface from the project Design.
90
- - Make bare `savepoint` print help.
91
- - Make command stubs return clear "not implemented yet" output where necessary.
92
- - Keep command functions testable without spawning Node processes.
93
-
94
- Out of scope:
95
-
96
- - Implementing `init`, `board`, `audit`, or `doctor` behavior.
97
- - Adding extra commands such as `task new`, `plan`, or `status`.
98
- - TUI rendering.
99
- - Project file writes.
100
-
101
- ## Quality gates
102
-
103
- - Tests must cover bare invocation, help, version, unknown commands, unknown flags, and each command dispatch path.
104
- - CLI behavior should be deterministic with injected `argv`, `stdin`, `stdout`, `stderr`, and environment data.
105
- - Every branch in argument parsing and command dispatch must have a focused test.
106
- - During individual implementation tasks, run the focused `test/cli/**/*.test.ts` files for touched behavior first. Run the full gate suite at task closeout when practical, and always in the final E03 quality-gates task.
107
-
108
- ## Design constraints
109
-
110
- - Keep process I/O at the entrypoint boundary.
111
- - Avoid a heavy CLI framework unless it materially reduces complexity.
112
- - Command names are fixed: `init`, `board`, `audit`, `doctor`.
113
-
114
- ## Close Criteria
115
-
116
- - All `E03-cli-foundation` tasks are `done`.
117
- - `npm run build`, `npm run typecheck`, `npm run lint`, `npm run format:check`, and `npm test` pass.
118
- - CLI branch tests cover bare invocation, help, version, unknown commands, unknown flags, and each command dispatch path.
119
- - Audit snapshot exists at `.savepoint/audit/E03-cli-foundation/snapshot.md`.
120
- - Audit proposals are accepted, rejected, or explicitly carried forward.
121
- - This epic `Design.md` has `status: audited`.
122
- - Router points to the next epic state.
@@ -1,28 +0,0 @@
1
- ---
2
- id: E03-cli-foundation/T001-argument-parser-contract
3
- status: done
4
- objective: "Define the closed CLI argument parser and exit-code contract for the v1 command surface."
5
- depends_on: []
6
- ---
7
-
8
- # T001: Argument Parser Contract
9
-
10
- ## Scope
11
-
12
- Create the argument parsing foundation for `savepoint` without wiring command behavior yet. This task owns the closed set of global flags, command names, parser result shapes, and shared exit-code constants.
13
-
14
- ## Implementation Plan
15
-
16
- - [x] Read `.savepoint/router.md`, this epic `Design.md`, this task file, and the directly touched CLI/test files.
17
- - [x] Add `src/cli/exit-codes.ts` with named exit-code constants for success, usage errors, and not-yet-implemented command stubs.
18
- - [x] Add `src/cli/args.ts` with typed parser results for bare invocation, global help/version flags, command invocation, unknown commands, and unknown flags.
19
- - [x] Keep allowed commands closed to `init`, `board`, `audit`, and `doctor`.
20
- - [x] Treat `--help`, `-h`, `--version`, and `-v` as the only allowed global flags.
21
- - [x] Add focused parser tests covering bare invocation, each global flag alias, each known command, unknown command, and unknown flag branches.
22
- - [x] Run the focused parser test file.
23
-
24
- ## Acceptance Criteria
25
-
26
- - The parser is deterministic from an injected `argv` array.
27
- - Unknown commands and unknown flags are represented as typed parser results, not thrown exceptions.
28
- - Every parser branch introduced by this task has a focused test.