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,444 +0,0 @@
1
- ---
2
- type: audit-findings
3
- audited: 2026-05-03
4
- ---
5
- # Audit Findings: E12 Task File Validation & Auto-Fix
6
-
7
- ## Main Findings
8
-
9
- E12 is closed. Parser-side defaults are in place: missing task status parses as `planned`, missing phase/stage on parsed `in_progress` tasks becomes `build`, and invalid status/phase messages include actionable hints.
10
-
11
- The write-time lifecycle gap found during audit was fixed. `ValidateTaskLifecycle` now receives a task pointer, so defaulting an `in_progress` task to `StageBuild` persists for callers such as `WriteTaskStatus`. Regression coverage now verifies both lifecycle defaulting and persisted `phase: build` writes.
12
-
13
- The E12 task files now include the required `## Context Files` sections. Architecture and agent documentation were reconciled to describe `internal/data` lifecycle validation/defaulting.
14
-
15
- Verification after applying proposals: `go build ./...` passed and `go test ./...` passed.
16
-
17
- ## Code Style Review
18
-
19
- - [x] One job per file
20
- - [x] One-sentence functions
21
- - [x] Test branches
22
- - [x] Types are documentation
23
- - [x] Build, don't speculate
24
- - [x] Errors at boundaries
25
- - [x] One source of truth
26
- - [x] Comments explain WHY
27
- - [x] Content in data files
28
- - [x] Small diffs
29
-
30
- ## Proposed Changes
31
-
32
- ### Target File
33
- internal/data/lifecycle.go
34
-
35
- ### Replace
36
- ```go
37
- func ValidateTaskLifecycle(task Task) error {
38
- if !IsCanonicalColumn(task.Column) {
39
- return fmt.Errorf("invalid status %q: use planned, in_progress, or done. Add 'status: planned' or 'status: in_progress' to task frontmatter", task.Column)
40
- }
41
-
42
- if task.Column == ColumnInProgress {
43
- if task.Stage == "" {
44
- task.Stage = StageBuild
45
- return nil
46
- }
47
- if !IsCanonicalStage(task.Stage) {
48
- return fmt.Errorf("invalid phase %q: use build, test, or audit. Add 'phase: build' to task frontmatter", task.Stage)
49
- }
50
- return nil
51
- }
52
-
53
- if task.Stage != "" {
54
- return fmt.Errorf("phase field %q is only valid when status is in_progress. Remove 'phase' or change status to in_progress", task.Stage)
55
- }
56
-
57
- return nil
58
- }
59
- ```
60
-
61
- ### With
62
- ```go
63
- func ValidateTaskLifecycle(task *Task) error {
64
- if !IsCanonicalColumn(task.Column) {
65
- return fmt.Errorf("invalid status %q: use planned, in_progress, or done. Add 'status: planned' or 'status: in_progress' to task frontmatter", task.Column)
66
- }
67
-
68
- if task.Column == ColumnInProgress {
69
- if task.Stage == "" {
70
- task.Stage = StageBuild
71
- return nil
72
- }
73
- if !IsCanonicalStage(task.Stage) {
74
- return fmt.Errorf("invalid phase %q: use build, test, or audit. Add 'phase: build' to task frontmatter", task.Stage)
75
- }
76
- return nil
77
- }
78
-
79
- if task.Stage != "" {
80
- return fmt.Errorf("phase field %q is only valid when status is in_progress. Remove 'phase' or change status to in_progress", task.Stage)
81
- }
82
-
83
- return nil
84
- }
85
- ```
86
-
87
- ### Target File
88
- internal/data/write.go
89
-
90
- ### Replace
91
- ```go
92
- if err := ValidateTaskLifecycle(*task); err != nil {
93
- return err
94
- }
95
- ```
96
-
97
- ### With
98
- ```go
99
- if err := ValidateTaskLifecycle(task); err != nil {
100
- return err
101
- }
102
- ```
103
-
104
- ### Target File
105
- internal/data/lifecycle_test.go
106
-
107
- ### Replace
108
- ```go
109
- func TestValidateTaskLifecycle_allowsPlannedWithoutPhase(t *testing.T) {
110
- task := Task{Column: ColumnPlanned}
111
- if err := ValidateTaskLifecycle(task); err != nil {
112
- t.Fatalf("ValidateTaskLifecycle() error = %v", err)
113
- }
114
- }
115
-
116
- func TestValidateTaskLifecycle_allowsInProgressWithPhase(t *testing.T) {
117
- task := Task{Column: ColumnInProgress, Stage: StageAudit}
118
- if err := ValidateTaskLifecycle(task); err != nil {
119
- t.Fatalf("ValidateTaskLifecycle() error = %v", err)
120
- }
121
- }
122
-
123
- func TestValidateTaskLifecycle_rejectsUnknownStatus(t *testing.T) {
124
- task := Task{Column: "review"}
125
- if err := ValidateTaskLifecycle(task); err == nil {
126
- t.Fatal("ValidateTaskLifecycle() expected unknown status error")
127
- }
128
- }
129
-
130
- func TestValidateTaskLifecycle_rejectsPhaseOutsideInProgress(t *testing.T) {
131
- task := Task{Column: ColumnPlanned, Stage: StageBuild}
132
- if err := ValidateTaskLifecycle(task); err == nil {
133
- t.Fatal("ValidateTaskLifecycle() expected phase/status error")
134
- }
135
- }
136
- ```
137
-
138
- ### With
139
- ```go
140
- func TestValidateTaskLifecycle_allowsPlannedWithoutPhase(t *testing.T) {
141
- task := Task{Column: ColumnPlanned}
142
- if err := ValidateTaskLifecycle(&task); err != nil {
143
- t.Fatalf("ValidateTaskLifecycle() error = %v", err)
144
- }
145
- }
146
-
147
- func TestValidateTaskLifecycle_defaultsInProgressWithoutPhase(t *testing.T) {
148
- task := Task{Column: ColumnInProgress}
149
- if err := ValidateTaskLifecycle(&task); err != nil {
150
- t.Fatalf("ValidateTaskLifecycle() error = %v", err)
151
- }
152
- if task.Stage != StageBuild {
153
- t.Fatalf("Task.Stage = %q, want %q", task.Stage, StageBuild)
154
- }
155
- }
156
-
157
- func TestValidateTaskLifecycle_allowsInProgressWithPhase(t *testing.T) {
158
- task := Task{Column: ColumnInProgress, Stage: StageAudit}
159
- if err := ValidateTaskLifecycle(&task); err != nil {
160
- t.Fatalf("ValidateTaskLifecycle() error = %v", err)
161
- }
162
- }
163
-
164
- func TestValidateTaskLifecycle_rejectsUnknownStatus(t *testing.T) {
165
- task := Task{Column: "review"}
166
- if err := ValidateTaskLifecycle(&task); err == nil {
167
- t.Fatal("ValidateTaskLifecycle() expected unknown status error")
168
- }
169
- }
170
-
171
- func TestValidateTaskLifecycle_rejectsPhaseOutsideInProgress(t *testing.T) {
172
- task := Task{Column: ColumnPlanned, Stage: StageBuild}
173
- if err := ValidateTaskLifecycle(&task); err == nil {
174
- t.Fatal("ValidateTaskLifecycle() expected phase/status error")
175
- }
176
- }
177
- ```
178
-
179
- ### Target File
180
- internal/data/write_test.go
181
-
182
- ### Replace
183
- ```go
184
- func TestWriteTaskStatus_addsPhaseWhenStagePresent(t *testing.T) {
185
- dir := t.TempDir()
186
- path := filepath.Join(dir, "task.md")
187
- content := `---
188
- id: E01/T005
189
- status: in_progress
190
- objective: "No phase yet"
191
- ---`
192
-
193
- if err := os.WriteFile(path, []byte(content), 0644); err != nil {
194
- t.Fatal(err)
195
- }
196
-
197
- fi, _ := os.Stat(path)
198
-
199
- task := &Task{
200
- ID: "E01/T005",
201
- Column: ColumnInProgress,
202
- Stage: StageAudit,
203
- }
204
-
205
- if err := WriteTaskStatus(path, task, fi.ModTime()); err != nil {
206
- t.Fatalf("WriteTaskStatus() error = %v", err)
207
- }
208
-
209
- result, _ := os.ReadFile(path)
210
-
211
- if !strings.Contains(string(result), "phase: audit") {
212
- t.Error("phase field should be added when stage is set")
213
- }
214
- }
215
- ```
216
-
217
- ### With
218
- ```go
219
- func TestWriteTaskStatus_addsPhaseWhenStagePresent(t *testing.T) {
220
- dir := t.TempDir()
221
- path := filepath.Join(dir, "task.md")
222
- content := `---
223
- id: E01/T005
224
- status: in_progress
225
- objective: "No phase yet"
226
- ---`
227
-
228
- if err := os.WriteFile(path, []byte(content), 0644); err != nil {
229
- t.Fatal(err)
230
- }
231
-
232
- fi, _ := os.Stat(path)
233
-
234
- task := &Task{
235
- ID: "E01/T005",
236
- Column: ColumnInProgress,
237
- Stage: StageAudit,
238
- }
239
-
240
- if err := WriteTaskStatus(path, task, fi.ModTime()); err != nil {
241
- t.Fatalf("WriteTaskStatus() error = %v", err)
242
- }
243
-
244
- result, _ := os.ReadFile(path)
245
-
246
- if !strings.Contains(string(result), "phase: audit") {
247
- t.Error("phase field should be added when stage is set")
248
- }
249
- }
250
-
251
- func TestWriteTaskStatus_defaultsInProgressPhaseWhenStageMissing(t *testing.T) {
252
- dir := t.TempDir()
253
- path := filepath.Join(dir, "task.md")
254
- content := `---
255
- id: E01/T010
256
- status: planned
257
- objective: "No phase yet"
258
- ---`
259
-
260
- if err := os.WriteFile(path, []byte(content), 0644); err != nil {
261
- t.Fatal(err)
262
- }
263
-
264
- fi, _ := os.Stat(path)
265
-
266
- task := &Task{
267
- ID: "E01/T010",
268
- Column: ColumnInProgress,
269
- }
270
-
271
- if err := WriteTaskStatus(path, task, fi.ModTime()); err != nil {
272
- t.Fatalf("WriteTaskStatus() error = %v", err)
273
- }
274
-
275
- result, _ := os.ReadFile(path)
276
-
277
- if !strings.Contains(string(result), "phase: build") {
278
- t.Error("phase field should default to build for in_progress writes")
279
- }
280
- }
281
- ```
282
-
283
- ### Target File
284
- .savepoint/Design.md
285
-
286
- ### Replace
287
- ```md
288
- - **Go data-reader boundary:** established in epic `E02-data-readers` (2026-05-01). `internal/data` owns Savepoint file parsing and discovery for the Go implementation: task frontmatter models, markdown YAML extraction, router state parsing, config theme defaults, release/epic/task directory listing, and boundary error sentinels.
289
- ```
290
-
291
- ### With
292
- ```md
293
- - **Go data-reader boundary:** established in epic `E02-data-readers` (2026-05-01). `internal/data` owns Savepoint file parsing and discovery for the Go implementation: task frontmatter models, markdown YAML extraction, router state parsing, config theme defaults, release/epic/task directory listing, task lifecycle validation/defaulting, write-time status validation, and boundary error sentinels.
294
- ```
295
-
296
- ### Target File
297
- AGENTS.md
298
-
299
- ### Replace
300
- ```md
301
- | `internal/data/` | Task/router models, frontmatter parsing, discovery |
302
- ```
303
-
304
- ### With
305
- ```md
306
- | `internal/data/` | Task/router models, frontmatter parsing, lifecycle validation/defaulting, discovery |
307
- ```
308
-
309
- ### Target File
310
- .savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md
311
-
312
- ### Replace
313
- ```md
314
- **Out of scope:**
315
- - New UI features
316
- - New commands
317
- ```
318
-
319
- ### With
320
- ```md
321
- **Out of scope:**
322
- - New UI features
323
- - New commands
324
-
325
- ## Implemented as
326
-
327
- - Parser-side defaults live in `internal/data/parser.go`: empty status/column normalizes to `planned`, and parsed `in_progress` tasks without phase/stage default to `build`.
328
- - Lifecycle validation and user-facing hints live in `internal/data/lifecycle.go`.
329
- - Status writes validate lifecycle rules through `internal/data/write.go`; audit follow-up must persist the default `phase: build` when callers write `in_progress` with no stage.
330
- - Regression coverage lives in `internal/data/parser_test.go`, `internal/data/lifecycle_test.go`, and `internal/data/write_test.go`.
331
- ```
332
-
333
- ### Target File
334
- .savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md
335
-
336
- ### Replace
337
- ```md
338
- # T001: Default Phase to Build
339
-
340
- ## Acceptance Criteria
341
- ```
342
-
343
- ### With
344
- ```md
345
- # T001: Default Phase to Build
346
-
347
- ## Context Files
348
-
349
- - `internal/data/parser.go`
350
- - `internal/data/lifecycle.go`
351
- - `internal/data/parser_test.go`
352
-
353
- ## Acceptance Criteria
354
- ```
355
-
356
- ### Target File
357
- .savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md
358
-
359
- ### Replace
360
- ```md
361
- # T002: Default Status to Planned
362
-
363
- ## Acceptance Criteria
364
- ```
365
-
366
- ### With
367
- ```md
368
- # T002: Default Status to Planned
369
-
370
- ## Context Files
371
-
372
- - `internal/data/parser.go`
373
- - `internal/data/parser_test.go`
374
-
375
- ## Acceptance Criteria
376
- ```
377
-
378
- ### Target File
379
- .savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md
380
-
381
- ### Replace
382
- ```md
383
- # T003: Better Error Messages
384
-
385
- ## Acceptance Criteria
386
- ```
387
-
388
- ### With
389
- ```md
390
- # T003: Better Error Messages
391
-
392
- ## Context Files
393
-
394
- - `internal/data/lifecycle.go`
395
- - `internal/data/lifecycle_test.go`
396
-
397
- ## Acceptance Criteria
398
- ```
399
-
400
- ### Target File
401
- .savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md
402
-
403
- ### Replace
404
- ```md
405
- # T004: Validate On Write
406
-
407
- ## Acceptance Criteria
408
- ```
409
-
410
- ### With
411
- ```md
412
- # T004: Validate On Write
413
-
414
- ## Context Files
415
-
416
- - `internal/data/write.go`
417
- - `internal/data/write_test.go`
418
- - `internal/data/lifecycle.go`
419
-
420
- ## Acceptance Criteria
421
- ```
422
-
423
- ### Target File
424
- .savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md
425
-
426
- ### Replace
427
- ```md
428
- # T005: Tests
429
-
430
- ## Acceptance Criteria
431
- ```
432
-
433
- ### With
434
- ```md
435
- # T005: Tests
436
-
437
- ## Context Files
438
-
439
- - `internal/data/parser_test.go`
440
- - `internal/data/lifecycle_test.go`
441
- - `internal/data/write_test.go`
442
-
443
- ## Acceptance Criteria
444
- ```
@@ -1,45 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: audited
4
- ---
5
-
6
- # E12: Task File Validation & Auto-Fix
7
-
8
- ## Purpose
9
-
10
- Fix task file parsing to provide helpful defaults and clear error messages when validation fails. Currently tasks fail with cryptic errors like `"invalid in_progress phase "": use build, test, or audit"`.
11
-
12
- ## What this epic adds
13
-
14
- - Default `phase: build` when status=in_progress but phase missing
15
- - Default `status: planned` when both status/column missing
16
- - Better error hints with suggested fixes
17
- - Validate on write with helpful messages
18
-
19
- ## Components
20
-
21
- | Module | Purpose |
22
- |--------|---------|
23
- | `internal/data/parser.go` | Default phase to "build" in firstStage() |
24
- | `internal/data/parser.go` | Default status to "planned" in normalizeColumn() |
25
- | `internal/data/lifecycle.go` | Better error messages with hints |
26
- | `internal/data/write.go` | Validate on write |
27
-
28
- ## Boundaries
29
-
30
- **In scope:**
31
- - Default phase for in_progress tasks
32
- - Default status for tasks
33
- - Better error messages
34
- - Write-time validation
35
-
36
- **Out of scope:**
37
- - New UI features
38
- - New commands
39
-
40
- ## Implemented as
41
-
42
- - Parser-side defaults live in `internal/data/parser.go`: empty status/column normalizes to `planned`, and parsed `in_progress` tasks without phase/stage default to `build`.
43
- - Lifecycle validation and user-facing hints live in `internal/data/lifecycle.go`.
44
- - Status writes validate lifecycle rules through `internal/data/write.go` and persist the default `phase: build` when callers write `in_progress` with no stage.
45
- - Regression coverage lives in `internal/data/parser_test.go`, `internal/data/lifecycle_test.go`, and `internal/data/write_test.go`.
@@ -1,35 +0,0 @@
1
- ---
2
- id: E12-validation-fix/T001-default-phase
3
- status: done
4
- objective: Default phase to build when status=in_progress but phase missing
5
- depends_on: []
6
- ---
7
-
8
- # T001: Default Phase to Build
9
-
10
- ## Context Files
11
-
12
- - `internal/data/parser.go`
13
- - `internal/data/lifecycle.go`
14
- - `internal/data/parser_test.go`
15
-
16
- ## Acceptance Criteria
17
-
18
- - [x] firstStage() returns "build" when both stage and phase are empty
19
- - [x] Tasks without phase field parse successfully
20
- - [x] Make build passes
21
- - [x] go test ./... passes
22
-
23
- ## Implementation Plan
24
-
25
- - [x] Set default at parse time after validation:
26
- - In parser.go: ParseTaskFile() line 60-63
27
- - After validation: `if task.Column == in_progress && task.Stage == "" { task.Stage = StageBuild }`
28
- - [x] Run `make build` to verify change
29
- - [x] Run `go test ./...` all pass
30
-
31
- Notes:
32
- - Default set at parsing time, not validation time
33
- - Works with both planned and done tasks (phase ignored)
34
- - Better error messages in lifecycle.go already implemented
35
- - Tests added for new behavior
@@ -1,19 +0,0 @@
1
- ---
2
- id: E12-validation-fix/T002-default-status
3
- status: done
4
- objective: Default status to planned when both status and column missing
5
- depends_on:
6
- - E12-validation-fix/T001-default-phase
7
- ---
8
-
9
- # T002: Default Status to Planned
10
-
11
- ## Context Files
12
-
13
- - `internal/data/parser.go`
14
- - `internal/data/parser_test.go`
15
-
16
- ## Acceptance Criteria
17
-
18
- - [x] Already implemented in normalizeColumn() - returns ColumnPlanned for empty
19
- - [x] go test ./... passes
@@ -1,29 +0,0 @@
1
- ---
2
- id: E12-validation-fix/T003-better-errors
3
- status: done
4
- objective: Improve error messages with hints for common issues
5
- depends_on:
6
- - E12-validation-fix/T001-default-phase
7
- - E12-validation-fix/T002-default-status
8
- ---
9
-
10
- # T003: Better Error Messages
11
-
12
- ## Context Files
13
-
14
- - `internal/data/lifecycle.go`
15
- - `internal/data/lifecycle_test.go`
16
-
17
- ## Acceptance Criteria
18
-
19
- - [x] Error messages include suggested fix
20
- - [x] Show which field is problematic with context
21
- - [x] go test ./... passes
22
-
23
- ## Implementation Plan
24
-
25
- - [x] Improved errors in lifecycle.go (lines 7, 16, 22)
26
- - Examples of better messages:
27
- - `invalid status %q: use planned, in_progress, or done. Add 'status: planned'...`
28
- - `invalid phase %q: use build, test, or audit. Add 'phase: build'...`
29
- - [x] Tests pass
@@ -1,25 +0,0 @@
1
- ---
2
- id: E12-validation-fix/T004-validate-on-write
3
- status: done
4
- objective: Add validation when writing task files
5
- depends_on:
6
- - E12-validation-fix/T003-better-errors
7
- ---
8
-
9
- # T004: Validate On Write
10
-
11
- ## Context Files
12
-
13
- - `internal/data/write.go`
14
- - `internal/data/write_test.go`
15
- - `internal/data/lifecycle.go`
16
-
17
- ## Acceptance Criteria
18
-
19
- - [x] Already validated in write path via WriteTaskStatus
20
- - [x] go test ./... passes
21
-
22
- ## Implementation Plan
23
-
24
- - [x] Validation already runs via ParseTaskFile in write.go
25
- - [x] Tests pass
@@ -1,37 +0,0 @@
1
- ---
2
- id: E12-validation-fix/T005-tests
3
- status: done
4
- objective: Verify all validation scenarios work correctly
5
- depends_on:
6
- - E12-validation-fix/T001-default-phase
7
- - E12-validation-fix/T002-default-status
8
- - E12-validation-fix/T003-better-errors
9
- - E12-validation-fix/T004-validate-on-write
10
- ---
11
-
12
- # T005: Tests
13
-
14
- ## Context Files
15
-
16
- - `internal/data/parser_test.go`
17
- - `internal/data/lifecycle_test.go`
18
- - `internal/data/write_test.go`
19
-
20
- ## Acceptance Criteria
21
-
22
- - [x] All new defaults work in tests
23
- - [x] Error messages tested
24
- - [x] go test ./... passes
25
-
26
- ## Implementation Plan
27
-
28
- - [x] Run `go test ./...` - all pass
29
- - [x] Updated lifecycle tests for new behavior:
30
- - TestValidateTaskLifecycle_allowsPlannedWithoutPhase ✓
31
- - TestValidateTaskLifecycle_allowsInProgressWithPhase ✓
32
- - TestValidateTaskLifecycle_rejectsUnknownStatus ✓
33
- - TestValidateTaskLifecycle_rejectsPhaseOutsideInProgress ✓
34
- - [x] Updated parser tests:
35
- - TestParseTaskFile_includesDefaultBuildForInProgress ✓
36
- - TestParseTaskFile_allowsPhaseOutsideInProgress ✓
37
- - [x] All other existing tests pass