savepoint 1.0.3 → 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 (418) hide show
  1. package/package.json +10 -3
  2. package/{savepoint → savepoint.exe} +0 -0
  3. package/.claude/settings.local.json +0 -38
  4. package/.golangci.yml +0 -11
  5. package/.prettierignore +0 -4
  6. package/.savepoint/Design.md +0 -206
  7. package/.savepoint/PRD.md +0 -58
  8. package/.savepoint/config.yml +0 -27
  9. package/.savepoint/releases/v1/epics/E01-go-setup/E01-Detail.md +0 -39
  10. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +0 -42
  11. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +0 -23
  12. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +0 -24
  13. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +0 -23
  14. package/.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md +0 -61
  15. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +0 -29
  16. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +0 -30
  17. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +0 -29
  18. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +0 -29
  19. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +0 -30
  20. package/.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md +0 -38
  21. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +0 -29
  22. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +0 -30
  23. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +0 -34
  24. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +0 -29
  25. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +0 -42
  26. package/.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md +0 -44
  27. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +0 -34
  28. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +0 -33
  29. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +0 -49
  30. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +0 -40
  31. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +0 -33
  32. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +0 -34
  33. package/.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md +0 -38
  34. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +0 -29
  35. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +0 -31
  36. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +0 -31
  37. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +0 -31
  38. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md +0 -62
  39. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +0 -39
  40. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +0 -52
  41. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +0 -52
  42. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +0 -53
  43. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +0 -39
  44. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +0 -36
  45. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +0 -40
  46. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +0 -48
  47. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +0 -66
  48. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +0 -39
  49. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +0 -20
  50. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +0 -22
  51. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +0 -24
  52. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +0 -22
  53. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +0 -118
  54. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +0 -9
  55. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +0 -45
  56. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +0 -48
  57. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +0 -43
  58. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +0 -45
  59. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +0 -40
  60. package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +0 -142
  61. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +0 -27
  62. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +0 -28
  63. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +0 -29
  64. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +0 -30
  65. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +0 -29
  66. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +0 -29
  67. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +0 -31
  68. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +0 -40
  69. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +0 -27
  70. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +0 -25
  71. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +0 -26
  72. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +0 -24
  73. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +0 -122
  74. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +0 -28
  75. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +0 -28
  76. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +0 -27
  77. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +0 -29
  78. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +0 -34
  79. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +0 -32
  80. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +0 -43
  81. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +0 -26
  82. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +0 -23
  83. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +0 -23
  84. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +0 -24
  85. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +0 -22
  86. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +0 -48
  87. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +0 -26
  88. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +0 -28
  89. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +0 -27
  90. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +0 -42
  91. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +0 -24
  92. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +0 -24
  93. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +0 -27
  94. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +0 -25
  95. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +0 -85
  96. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +0 -17
  97. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +0 -20
  98. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +0 -22
  99. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +0 -17
  100. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +0 -16
  101. package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +0 -88
  102. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +0 -22
  103. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +0 -23
  104. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +0 -24
  105. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +0 -23
  106. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +0 -24
  107. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +0 -28
  108. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +0 -53
  109. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +0 -23
  110. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +0 -26
  111. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +0 -25
  112. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +0 -28
  113. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +0 -28
  114. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +0 -23
  115. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +0 -25
  116. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +0 -104
  117. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +0 -23
  118. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +0 -24
  119. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +0 -25
  120. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +0 -23
  121. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +0 -26
  122. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +0 -24
  123. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +0 -88
  124. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +0 -23
  125. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +0 -23
  126. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +0 -23
  127. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +0 -27
  128. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +0 -25
  129. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +0 -24
  130. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +0 -26
  131. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +0 -24
  132. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +0 -103
  133. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +0 -30
  134. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +0 -33
  135. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +0 -34
  136. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +0 -33
  137. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +0 -37
  138. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +0 -36
  139. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +0 -34
  140. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +0 -41
  141. package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +0 -70
  142. package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +0 -68
  143. package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +0 -68
  144. package/.savepoint/releases/v1/v1-PRD.md +0 -66
  145. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md +0 -40
  146. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-next-activity-header.md +0 -56
  147. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +0 -38
  148. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +0 -28
  149. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +0 -51
  150. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +0 -45
  151. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +0 -68
  152. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md +0 -57
  153. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md +0 -124
  154. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md +0 -49
  155. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +0 -37
  156. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +0 -38
  157. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +0 -36
  158. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +0 -59
  159. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +0 -195
  160. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +0 -45
  161. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T001-border-resize-fix.md +0 -40
  162. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T002-next-activity-below-header.md +0 -64
  163. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T003-checkbox-rendering-fix.md +0 -56
  164. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T005-unify-status-glyphs.md +0 -65
  165. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +0 -36
  166. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Audit.md +0 -167
  167. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Detail.md +0 -51
  168. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T001-sidebar-focusable-navigation.md +0 -65
  169. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T002-epic-detail-overlay.md +0 -73
  170. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T003-epic-status-glyphs.md +0 -73
  171. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +0 -237
  172. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +0 -54
  173. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +0 -45
  174. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +0 -40
  175. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +0 -47
  176. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +0 -98
  177. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +0 -33
  178. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +0 -62
  179. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +0 -56
  180. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +0 -63
  181. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +0 -44
  182. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +0 -35
  183. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +0 -40
  184. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +0 -45
  185. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +0 -26
  186. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +0 -33
  187. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +0 -34
  188. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +0 -33
  189. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +0 -336
  190. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +0 -61
  191. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +0 -37
  192. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +0 -28
  193. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +0 -46
  194. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +0 -27
  195. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +0 -25
  196. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +0 -26
  197. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +0 -26
  198. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +0 -333
  199. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +0 -68
  200. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +0 -26
  201. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +0 -27
  202. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +0 -28
  203. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +0 -29
  204. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +0 -27
  205. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +0 -29
  206. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +0 -29
  207. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +0 -27
  208. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +0 -207
  209. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +0 -65
  210. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +0 -24
  211. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +0 -28
  212. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +0 -29
  213. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +0 -27
  214. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +0 -28
  215. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +0 -31
  216. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +0 -36
  217. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +0 -25
  218. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +0 -21
  219. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +0 -22
  220. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +0 -29
  221. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +0 -444
  222. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +0 -45
  223. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +0 -35
  224. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +0 -19
  225. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +0 -29
  226. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +0 -25
  227. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +0 -37
  228. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +0 -118
  229. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +0 -73
  230. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +0 -66
  231. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +0 -35
  232. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +0 -60
  233. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +0 -33
  234. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +0 -37
  235. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +0 -40
  236. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +0 -37
  237. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +0 -267
  238. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +0 -54
  239. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +0 -39
  240. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +0 -42
  241. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +0 -33
  242. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +0 -35
  243. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +0 -27
  244. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +0 -29
  245. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +0 -28
  246. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +0 -43
  247. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +0 -31
  248. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +0 -28
  249. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +0 -30
  250. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +0 -27
  251. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +0 -28
  252. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +0 -26
  253. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +0 -28
  254. package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +0 -25
  255. package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +0 -27
  256. package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +0 -27
  257. package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +0 -29
  258. package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +0 -31
  259. package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +0 -34
  260. package/.savepoint/releases/v1.1/v1.1-PRD.md +0 -139
  261. package/.savepoint/router.md +0 -57
  262. package/.savepoint/visual-identity.md +0 -125
  263. package/AGENTS.md +0 -99
  264. package/CLAUDE.md +0 -1
  265. package/GEMINI.md +0 -1
  266. package/Makefile +0 -29
  267. package/agent-skills/ink-tui-design/SKILL.md +0 -309
  268. package/agent-skills/ink-tui-design/references/component-patterns.md +0 -371
  269. package/agent-skills/ink-tui-design/references/hooks-guide.md +0 -436
  270. package/agent-skills/ink-tui-design/references/ink-gotchas.md +0 -330
  271. package/agent-skills/ink-tui-design/references/testing-patterns.md +0 -384
  272. package/agent-skills/savepoint-audit/SKILL.md +0 -87
  273. package/agent-skills/savepoint-build-task/SKILL.md +0 -44
  274. package/agent-skills/savepoint-create-plan/SKILL.md +0 -33
  275. package/agent-skills/savepoint-create-task/SKILL.md +0 -44
  276. package/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
  277. package/agent-skills/savepoint-system-design/SKILL.md +0 -38
  278. package/agent-skills/superpowers/brainstorming/SKILL.md +0 -165
  279. package/agent-skills/superpowers/brainstorming/visual-companion.md +0 -304
  280. package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +0 -193
  281. package/agent-skills/superpowers/executing-plans/SKILL.md +0 -77
  282. package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +0 -213
  283. package/agent-skills/superpowers/receiving-code-review/SKILL.md +0 -226
  284. package/agent-skills/superpowers/requesting-code-review/SKILL.md +0 -115
  285. package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +0 -160
  286. package/agent-skills/superpowers/subagent-driven-development/SKILL.md +0 -292
  287. package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +0 -27
  288. package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +0 -113
  289. package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +0 -61
  290. package/agent-skills/superpowers/systematic-debugging/SKILL.md +0 -305
  291. package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +0 -122
  292. package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +0 -130
  293. package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +0 -183
  294. package/agent-skills/superpowers/test-driven-development/SKILL.md +0 -389
  295. package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +0 -317
  296. package/agent-skills/superpowers/verification-before-completion/SKILL.md +0 -147
  297. package/agent-skills/superpowers/writing-plans/SKILL.md +0 -159
  298. package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +0 -49
  299. package/agent_skills_test.go +0 -91
  300. package/assets/banner.png +0 -0
  301. package/assets/logo.png +0 -0
  302. package/assets/strawman.png +0 -0
  303. package/cmd/board.go +0 -59
  304. package/cmd/board_test.go +0 -137
  305. package/cmd/doctor.go +0 -53
  306. package/cmd/doctor_test.go +0 -146
  307. package/cmd/init.go +0 -63
  308. package/cmd/init_test.go +0 -104
  309. package/go.mod +0 -36
  310. package/go.sum +0 -75
  311. package/internal/board/board.go +0 -177
  312. package/internal/board/board_test.go +0 -168
  313. package/internal/board/card.go +0 -129
  314. package/internal/board/card_test.go +0 -254
  315. package/internal/board/column.go +0 -127
  316. package/internal/board/column_test.go +0 -139
  317. package/internal/board/detail.go +0 -185
  318. package/internal/board/detail_test.go +0 -340
  319. package/internal/board/epic_panel.go +0 -262
  320. package/internal/board/epic_panel_test.go +0 -869
  321. package/internal/board/help.go +0 -41
  322. package/internal/board/help_test.go +0 -86
  323. package/internal/board/integration_test.go +0 -266
  324. package/internal/board/interfaces.go +0 -65
  325. package/internal/board/interfaces_test.go +0 -114
  326. package/internal/board/io.go +0 -93
  327. package/internal/board/layout.go +0 -68
  328. package/internal/board/layout_test.go +0 -106
  329. package/internal/board/model.go +0 -235
  330. package/internal/board/model_test.go +0 -67
  331. package/internal/board/plain.go +0 -88
  332. package/internal/board/plain_test.go +0 -117
  333. package/internal/board/release.go +0 -34
  334. package/internal/board/release_test.go +0 -177
  335. package/internal/board/render_policy_test.go +0 -77
  336. package/internal/board/status.go +0 -23
  337. package/internal/board/theme.go +0 -24
  338. package/internal/board/theme_test.go +0 -31
  339. package/internal/board/transitions.go +0 -113
  340. package/internal/board/transitions_test.go +0 -164
  341. package/internal/board/tui.go +0 -32
  342. package/internal/board/update.go +0 -556
  343. package/internal/board/update_test.go +0 -575
  344. package/internal/board/util.go +0 -76
  345. package/internal/board/view.go +0 -317
  346. package/internal/board/view_test.go +0 -315
  347. package/internal/board/watch.go +0 -130
  348. package/internal/buildtool/main.go +0 -211
  349. package/internal/buildtool/main_test.go +0 -46
  350. package/internal/data/config.go +0 -101
  351. package/internal/data/config_test.go +0 -122
  352. package/internal/data/discover.go +0 -178
  353. package/internal/data/discover_test.go +0 -130
  354. package/internal/data/errors.go +0 -13
  355. package/internal/data/lifecycle.go +0 -44
  356. package/internal/data/lifecycle_test.go +0 -41
  357. package/internal/data/parser.go +0 -242
  358. package/internal/data/parser_test.go +0 -281
  359. package/internal/data/router.go +0 -52
  360. package/internal/data/router_test.go +0 -35
  361. package/internal/data/task.go +0 -57
  362. package/internal/data/task_test.go +0 -51
  363. package/internal/data/write.go +0 -218
  364. package/internal/data/write_test.go +0 -623
  365. package/internal/doctor/checks.go +0 -567
  366. package/internal/doctor/checks_test.go +0 -716
  367. package/internal/doctor/gates.go +0 -193
  368. package/internal/doctor/gates_test.go +0 -166
  369. package/internal/doctor/interfaces.go +0 -64
  370. package/internal/doctor/interfaces_test.go +0 -104
  371. package/internal/doctor/repairs.go +0 -80
  372. package/internal/doctor/repairs_test.go +0 -81
  373. package/internal/doctor/report.go +0 -157
  374. package/internal/doctor/report_test.go +0 -89
  375. package/internal/init/clipboard.go +0 -146
  376. package/internal/init/clipboard_test.go +0 -74
  377. package/internal/init/install.go +0 -16
  378. package/internal/init/integration_test.go +0 -197
  379. package/internal/init/prompt.go +0 -14
  380. package/internal/init/prompt_test.go +0 -77
  381. package/internal/init/scaffold.go +0 -59
  382. package/internal/init/scaffold_test.go +0 -179
  383. package/internal/init/template_freshness_test.go +0 -56
  384. package/internal/init/validate.go +0 -85
  385. package/internal/init/validate_test.go +0 -141
  386. package/internal/init/write.go +0 -73
  387. package/internal/init/write_test.go +0 -91
  388. package/internal/styles/palette.go +0 -49
  389. package/internal/styles/styles.go +0 -139
  390. package/internal/styles/styles_test.go +0 -133
  391. package/internal/testutil/fixture.go +0 -113
  392. package/internal/testutil/fs.go +0 -26
  393. package/main.go +0 -117
  394. package/project-audit/audit_report_glm_5.1.md +0 -411
  395. package/project-audit/audit_report_opus_4.6 +0 -406
  396. package/project-audit/consolidated-audit-report.md +0 -456
  397. package/scripts/vitest-preload.cjs +0 -95
  398. package/templates/project/.savepoint/Design.md +0 -47
  399. package/templates/project/.savepoint/PRD.md +0 -34
  400. package/templates/project/.savepoint/config.yml +0 -27
  401. package/templates/project/.savepoint/router.md +0 -153
  402. package/templates/project/.savepoint/visual-identity.md +0 -122
  403. package/templates/project/AGENTS.md +0 -88
  404. package/templates/project/agent-skills/savepoint-audit/SKILL.md +0 -87
  405. package/templates/project/agent-skills/savepoint-build-task/SKILL.md +0 -44
  406. package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +0 -33
  407. package/templates/project/agent-skills/savepoint-create-task/SKILL.md +0 -44
  408. package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
  409. package/templates/project/agent-skills/savepoint-system-design/SKILL.md +0 -38
  410. package/templates/prompts/audit-reconciliation.prompt.md +0 -72
  411. package/templates/prompts/design.prompt.md +0 -45
  412. package/templates/prompts/epic-design.prompt.md +0 -43
  413. package/templates/prompts/magic-prompt.prompt.md +0 -7
  414. package/templates/prompts/prd.prompt.md +0 -42
  415. package/templates/prompts/task-breakdown.prompt.md +0 -54
  416. package/templates/prompts/task-building.prompt.md +0 -38
  417. package/templates/prompts/task-planning.prompt.md +0 -53
  418. package/templates/release/v1/PRD.md +0 -37
@@ -1,27 +0,0 @@
1
- ---
2
- id: E07-init-command/T004-atomic-writes
3
- status: done
4
- objective: "Implement atomic file writes with temp-file-plus-rename"
5
- depends_on: ["E07-init-command/T003-scaffold-writer"]
6
- ---
7
-
8
- # T004: Atomic Writes
9
-
10
- ## Acceptance Criteria
11
-
12
- - Writes use temp file + rename pattern
13
- - Existing files not corrupted on write failure
14
- - Atomic operation prevents partial writes
15
- - Handles conflicts gracefully
16
- - Works on Windows, Linux, macOS
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Add `internal/init/write.go`
21
- - [x] Implement `AtomicWrite(target, content) error`
22
- - [x] Create temp file in same directory (atomic on POSIX)
23
- - [x] Write content to temp file
24
- - [x] Rename temp to target (atomic on success)
25
- - [x] Clean up temp file on failure
26
- - [x] Test atomic write behavior
27
- - [x] Run `make build && make test`
@@ -1,25 +0,0 @@
1
- ---
2
- id: E07-init-command/T005-magic-prompt
3
- status: done
4
- objective: "Render and output magic prompt to stdout"
5
- depends_on: ["E07-init-command/T004-atomic-writes"]
6
- ---
7
-
8
- # T005: Magic Prompt
9
-
10
- ## Acceptance Criteria
11
-
12
- - Reads `templates/prompts/magic-prompt.prompt.md` template
13
- - Renders template with project context
14
- - Outputs rendered prompt to stdout
15
- - Prompt is copy-paste ready for AI agent
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Add `internal/init/prompt.go`
20
- - [x] Implement `RenderMagicPrompt(projectName) (string, error)`
21
- - [x] Load magic-prompt.prompt.md template
22
- - [x] Interpolate project name into prompt
23
- - [x] Output to stdout after scaffold completes
24
- - [x] Test prompt rendering
25
- - [x] Run `make build && make test`
@@ -1,26 +0,0 @@
1
- ---
2
- id: E07-init-command/T006-clipboard
3
- status: done
4
- objective: "Implement best-effort clipboard copy"
5
- depends_on: ["E07-init-command/T005-magic-prompt"]
6
- ---
7
-
8
- # T006: Clipboard
9
-
10
- ## Acceptance Criteria
11
-
12
- - Detects platform (Windows/macOS/Linux)
13
- - Copies magic prompt to clipboard
14
- - Does NOT fail if clipboard unavailable (best-effort)
15
- - Returns success/skipped/failed status without throwing on error
16
- - Works on PowerShell, iTerm2, terminal emulators
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Add `internal/init/clipboard.go`
21
- - [x] Implement `CopyToClipboard(text) ClipboardResult`
22
- - [x] Detect platform: Windows (clip.exe), macOS (pbcopy), Linux (xclip/xsel)
23
- - [x] Fall back gracefully if clipboard tools unavailable
24
- - [x] Log skip or failure without failing init
25
- - [x] Test clipboard status handling on the current platform
26
- - [x] Run quality gates (`go test ./internal/init ./cmd`, `go build ./...`, `go test ./...`)
@@ -1,26 +0,0 @@
1
- ---
2
- id: E07-init-command/T007-integration-test
3
- status: done
4
- objective: "End-to-end integration test of init flow"
5
- depends_on: ["E07-init-command/T006-clipboard"]
6
- ---
7
-
8
- # T007: Integration Test
9
-
10
- ## Acceptance Criteria
11
-
12
- - Full init pipeline runs end-to-end in temp directory
13
- - Validates: empty dir, existing project, already-initialized, --force, --install
14
- - Tests pass on Windows, Linux, macOS
15
- - Output includes magic prompt to stdout
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Add `internal/init/integration_test.go`
20
- - [x] Test: init in empty directory
21
- - [x] Test: init in compatible project
22
- - [x] Test: init fails without --force on existing .savepoint
23
- - [x] Test: init with --force overwrites
24
- - [x] Test: init with --install triggers npm install
25
- - [x] Verify magic prompt in stdout
26
- - [x] Run full test suite: `make build && make test`
@@ -1,333 +0,0 @@
1
- ---
2
- type: audit-findings
3
- audited: 2026-05-03
4
- ---
5
- # Audit Findings: E08 Board Command
6
-
7
- ## Main Findings
8
-
9
- E08 is closed as audited. The board command surface, non-TTY fallback, Bubble Tea shell, model grouping, detail overlay, keyboard navigation, status writes, filters, theme profile detection, and integration coverage are in place.
10
-
11
- The two audit blockers were applied: board task writes now surface mtime conflicts instead of overwriting externally modified task files, and dependency gating now blocks planned tasks from entering `in_progress` until dependencies are done.
12
-
13
- Documentation reconciliation was applied to Design.md, AGENTS.md, and the E08 epic detail. Remaining process note: all eight E08 task files were missing the required `## Context Files` section; that was not backfilled because it is a task-authoring process gap rather than an implementation blocker.
14
-
15
- ## Code Style Review
16
-
17
- - [x] One job per file
18
- - [x] One-sentence functions
19
- - [x] Test branches
20
- - [x] Types are documentation
21
- - [x] Build, don't speculate
22
- - [x] Errors at boundaries
23
- - [x] One source of truth
24
- - [x] Comments explain WHY
25
- - [x] Content in data files
26
- - [x] Small diffs
27
-
28
- Notes: The applied changes remove the speculative mtime overwrite and add branch coverage for planned-task dependency gating. The broader reducer size remains a known shape of `internal/board/update.go`, but the E08 audit blockers are resolved.
29
-
30
- ## Proposed Changes
31
-
32
- ### Target File
33
- internal/board/update.go
34
-
35
- ### Replace
36
- ```go
37
- func writeTaskStatus(task *data.Task, expectedMtime time.Time) error {
38
- if err := data.WriteTaskStatus(task.Path, task, expectedMtime); err != nil {
39
- if err != data.ErrMtimeConflict {
40
- return err
41
- }
42
- fi, statErr := os.Stat(task.Path)
43
- if statErr != nil {
44
- return statErr
45
- }
46
- if retryErr := data.WriteTaskStatus(task.Path, task, fi.ModTime()); retryErr != nil {
47
- return retryErr
48
- }
49
- }
50
- fi, err := os.Stat(task.Path)
51
- if err != nil {
52
- return err
53
- }
54
- task.Mtime = fi.ModTime()
55
- return nil
56
- }
57
- ```
58
-
59
- ### With
60
- ```go
61
- func writeTaskStatus(task *data.Task, expectedMtime time.Time) error {
62
- if err := data.WriteTaskStatus(task.Path, task, expectedMtime); err != nil {
63
- return err
64
- }
65
- fi, err := os.Stat(task.Path)
66
- if err != nil {
67
- return err
68
- }
69
- task.Mtime = fi.ModTime()
70
- return nil
71
- }
72
- ```
73
-
74
- ### Target File
75
- internal/board/integration_test.go
76
-
77
- ### Replace
78
- ```go
79
- // TestMtimeConflict_boardRetries verifies the board retries after an mtime conflict and persists the transition.
80
- func TestMtimeConflict_boardRetries(t *testing.T) {
81
- path := filepath.Join(t.TempDir(), "T001.md")
82
- content := "---\nid: E01/T001\nstatus: in_progress\nphase: build\n---\n\n# Task\n"
83
- if err := os.WriteFile(path, []byte(content), 0644); err != nil {
84
- t.Fatal(err)
85
- }
86
- fi, err := os.Stat(path)
87
- if err != nil {
88
- t.Fatal(err)
89
- }
90
-
91
- task := data.Task{
92
- ID: "E01/T001",
93
- Column: data.ColumnInProgress,
94
- Stage: data.StageBuild,
95
- Path: path,
96
- Mtime: fi.ModTime().Add(-time.Minute), // intentionally stale
97
- }
98
- m := NewModel([]data.Task{task}, "v1", "E01")
99
- m.FocusedColumn = data.ColumnInProgress
100
-
101
- got, _ := m.Update(tea.KeyMsg{Type: tea.KeySpace})
102
- updated := requireModel(t, got)
103
-
104
- if updated.AllTasks[0].Stage != data.StageTest {
105
- t.Errorf("Stage = %q after retry, want test", updated.AllTasks[0].Stage)
106
- }
107
- if strings.Contains(updated.StatusMessage, "conflict") {
108
- t.Errorf("conflict error surfaced to user unexpectedly: %q", updated.StatusMessage)
109
- }
110
- }
111
- ```
112
-
113
- ### With
114
- ```go
115
- // TestMtimeConflict_boardWarns verifies the board surfaces an mtime conflict instead of overwriting external edits.
116
- func TestMtimeConflict_boardWarns(t *testing.T) {
117
- path := filepath.Join(t.TempDir(), "T001.md")
118
- content := "---\nid: E01/T001\nstatus: in_progress\nphase: build\n---\n\n# Task\n"
119
- if err := os.WriteFile(path, []byte(content), 0644); err != nil {
120
- t.Fatal(err)
121
- }
122
- fi, err := os.Stat(path)
123
- if err != nil {
124
- t.Fatal(err)
125
- }
126
-
127
- task := data.Task{
128
- ID: "E01/T001",
129
- Column: data.ColumnInProgress,
130
- Stage: data.StageBuild,
131
- Path: path,
132
- Mtime: fi.ModTime().Add(-time.Minute), // intentionally stale
133
- }
134
- m := NewModel([]data.Task{task}, "v1", "E01")
135
- m.FocusedColumn = data.ColumnInProgress
136
-
137
- got, _ := m.Update(tea.KeyMsg{Type: tea.KeySpace})
138
- updated := requireModel(t, got)
139
-
140
- if !strings.Contains(updated.StatusMessage, "mtime conflict") {
141
- t.Errorf("StatusMessage = %q, want mtime conflict warning", updated.StatusMessage)
142
- }
143
-
144
- raw, err := os.ReadFile(path)
145
- if err != nil {
146
- t.Fatal(err)
147
- }
148
- if !strings.Contains(string(raw), "phase: build") {
149
- t.Errorf("task file was overwritten despite mtime conflict:\n%s", raw)
150
- }
151
- }
152
- ```
153
-
154
- ### Target File
155
- internal/board/transitions.go
156
-
157
- ### Replace
158
- ```go
159
- case data.ColumnPlanned:
160
- return true, ""
161
- case data.ColumnInProgress:
162
- ```
163
-
164
- ### With
165
- ```go
166
- case data.ColumnPlanned:
167
- return dependenciesDone(t, allTasks)
168
- case data.ColumnInProgress:
169
- ```
170
-
171
- ### Target File
172
- internal/board/transitions.go
173
-
174
- ### Replace
175
- ```go
176
- switch stage {
177
- case data.StageBuild:
178
- return true, ""
179
- case data.StageTest:
180
- return true, ""
181
- case data.StageAudit:
182
- for _, depID := range t.DependsOn {
183
- dep := findTask(depID, allTasks)
184
- if dep == nil {
185
- return false, fmt.Sprintf("dependency %q not found", depID)
186
- }
187
- if dep.Column != data.ColumnDone {
188
- return false, fmt.Sprintf("dependency %q is not done", depID)
189
- }
190
- }
191
- return true, ""
192
- default:
193
- ```
194
-
195
- ### With
196
- ```go
197
- switch stage {
198
- case data.StageBuild:
199
- return true, ""
200
- case data.StageTest:
201
- return true, ""
202
- case data.StageAudit:
203
- return dependenciesDone(t, allTasks)
204
- default:
205
- ```
206
-
207
- ### Target File
208
- internal/board/transitions.go
209
-
210
- ### Replace
211
- ```go
212
- func findTask(id string, tasks []data.Task) *data.Task {
213
- for i := range tasks {
214
- if tasks[i].ID == id {
215
- return &tasks[i]
216
- }
217
- }
218
- return nil
219
- }
220
- ```
221
-
222
- ### With
223
- ```go
224
- func dependenciesDone(t *data.Task, allTasks []data.Task) (bool, string) {
225
- for _, depID := range t.DependsOn {
226
- dep := findTask(depID, allTasks)
227
- if dep == nil {
228
- return false, fmt.Sprintf("dependency %q not found", depID)
229
- }
230
- if dep.Column != data.ColumnDone {
231
- return false, fmt.Sprintf("dependency %q is not done", depID)
232
- }
233
- }
234
- return true, ""
235
- }
236
-
237
- func findTask(id string, tasks []data.Task) *data.Task {
238
- for i := range tasks {
239
- if tasks[i].ID == id {
240
- return &tasks[i]
241
- }
242
- }
243
- return nil
244
- }
245
- ```
246
-
247
- ### Target File
248
- internal/board/transitions_test.go
249
-
250
- ### Replace
251
- ```go
252
- func TestCanAdvance_plannedAlwaysAllowed(t *testing.T) {
253
- task := data.Task{Column: data.ColumnPlanned}
254
- ok, reason := CanAdvance(&task, nil)
255
- if !ok {
256
- t.Errorf("CanAdvance(planned) = false %q, want true", reason)
257
- }
258
- }
259
- ```
260
-
261
- ### With
262
- ```go
263
- func TestCanAdvance_plannedAllowedWhenDependenciesDone(t *testing.T) {
264
- allTasks := []data.Task{
265
- {ID: "T1", Column: data.ColumnPlanned, DependsOn: []string{"T2"}},
266
- {ID: "T2", Column: data.ColumnDone},
267
- }
268
- ok, reason := CanAdvance(&allTasks[0], allTasks)
269
- if !ok {
270
- t.Errorf("CanAdvance(planned with done dep) = false %q, want true", reason)
271
- }
272
- }
273
-
274
- func TestCanAdvance_plannedBlockedByDependency(t *testing.T) {
275
- allTasks := []data.Task{
276
- {ID: "T1", Column: data.ColumnPlanned, DependsOn: []string{"T2"}},
277
- {ID: "T2", Column: data.ColumnInProgress},
278
- }
279
- ok, reason := CanAdvance(&allTasks[0], allTasks)
280
- if ok {
281
- t.Fatal("CanAdvance(planned with unfinished dep) = true, want false")
282
- }
283
- if reason != "dependency \"T2\" is not done" {
284
- t.Errorf("reason = %q, want dependency warning", reason)
285
- }
286
- }
287
- ```
288
-
289
- ### Target File
290
- AGENTS.md
291
-
292
- ### Replace
293
- ```md
294
- | `cmd/` | Init command arg parsing, dispatch |
295
- ```
296
-
297
- ### With
298
- ```md
299
- | `cmd/` | CLI command arg parsing and dispatch for init and board |
300
- ```
301
-
302
- ### Target File
303
- .savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md
304
-
305
- ### Replace
306
- ```md
307
- ## Boundaries
308
- ```
309
-
310
- ### With
311
- ```md
312
- ## Implemented As
313
-
314
- - `main.go` dispatches `board` and uses the no-arg command path as the board default.
315
- - `cmd/board.go` owns board-specific flag parsing for `--release`, `--epic`, and `--help`.
316
- - `internal/board/board.go`, `tui.go`, `model.go`, `plain.go`, `transitions.go`, and related render/update files own project discovery, non-TTY fallback, TUI startup, filtering, detail overlays, keyboard flow, and task status writes.
317
- - Audit entry-point work is represented as the non-TTY audit proposal signal and the epic Detail/Audit tab flow added around E06.
318
-
319
- ## Boundaries
320
- ```
321
-
322
- ### Target File
323
- .savepoint/Design.md
324
-
325
- ### Replace
326
- ```md
327
- - **Board command** (`savepoint board`) reads project state, renders the Atari-Noir TUI board, supports release/epic filtering, detail overlays, task status transitions with mtime-guarded writes, release/epic-scoped router priority markers, fsnotify-based task auto-refresh (epic E06), header Next Activity display, height-aware column/detail viewport scrolling, stable focused/unfocused column border geometry (v1.1 E01), dedicated phase-colored Next Activity line below the header, sentence-boundary checklist rendering in task details, shared status glyph mapping for task cards and the epic sidebar, a forced ANSI256 Lipgloss color profile for board startup (v1.1 E03), a focusable wide-screen epic sidebar with purple epic focus, epic detail overlays, and status glyphs loaded from epic detail frontmatter (v1.1 E04), and an epic Detail/Audit tab switch that renders user-facing audit findings from `{epic}/E##-Audit.md` (v1.1 E06).
328
- ```
329
-
330
- ### With
331
- ```md
332
- - **Board command** (`savepoint board`, and bare `savepoint`) reads project state, renders the Atari-Noir TUI board when stdout is a TTY, falls back to a deterministic plain table in non-TTY mode, supports `--release`/`--epic` filtering, detail overlays, task status transitions with mtime-guarded writes, release/epic-scoped router priority markers, fsnotify-based task auto-refresh (epic E06), header Next Activity display, height-aware column/detail viewport scrolling, stable focused/unfocused column border geometry (v1.1 E01), dedicated phase-colored Next Activity line below the header, sentence-boundary checklist rendering in task details, shared status glyph mapping for task cards and the epic sidebar, a forced ANSI256 Lipgloss color profile for board startup (v1.1 E03), a focusable wide-screen epic sidebar with purple epic focus, epic detail overlays, and status glyphs loaded from epic detail frontmatter (v1.1 E04), and an epic Detail/Audit tab switch that renders user-facing audit findings from `{epic}/E##-Audit.md` (v1.1 E06).
333
- ```
@@ -1,68 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: audited
4
- ---
5
-
6
- # E08: Board Command
7
-
8
- ## Purpose
9
-
10
- Implement `savepoint board`, a Bubble Tea terminal UI for viewing and moving tasks through the Savepoint workflow, including audit-review mode entry points.
11
-
12
- ## Interface
13
-
14
- ```bash
15
- savepoint board # launch TUI
16
- savepoint # alias for board
17
- savepoint board --release v1 # filter by release
18
- savepoint board --epic E03 # filter by epic
19
- ```
20
-
21
- ## What this epic adds
22
-
23
- - Ink/Bubble Tea app shell launched by `savepoint board`
24
- - Three-column Kanban view for planned, in_progress, done
25
- - Detail pane for selected task
26
- - Keyboard navigation (arrows, vim-style j/k/h/l)
27
- - Status transition actions with gate enforcement
28
- - Manual refresh with `r` key
29
- - Theme tokens loaded from config.yml
30
- - Render fallbacks: 24-bit → 256-color → 16-color → NO_COLOR → non-TTY plain table
31
- - Optimistic mtime conflict detection before writes
32
- - Audit entry point: signal if proposals exist, exit toward audit
33
-
34
- ## Components
35
-
36
- | Module | Purpose |
37
- |--------|---------|
38
- | `cmd/board.go` | CLI registration, arg parsing |
39
- | `internal/board/cmd.go` | Non-TTY fallback, dispatch |
40
- | `internal/board/tui.go` | Bubble Tea program setup |
41
- | `internal/board/model.go` | Board state, columns, cards |
42
- | `internal/board/detail.go` | Task detail pane |
43
- | `internal/board/transitions.go` | Status transition gate enforcement |
44
- | `internal/board/theme.go` | Theme loading, color fallbacks |
45
- | `internal/board/plain.go` | Non-TTY plain text table |
46
-
47
- ## Implemented As
48
-
49
- - `main.go` dispatches `board` and uses the no-arg command path as the board default.
50
- - `cmd/board.go` owns board-specific flag parsing for `--release`, `--epic`, and `--help`.
51
- - `internal/board/board.go`, `tui.go`, `model.go`, `plain.go`, `transitions.go`, and related render/update files own project discovery, non-TTY fallback, TUI startup, filtering, detail overlays, keyboard flow, and task status writes.
52
- - Audit entry-point work is represented as the non-TTY audit proposal signal and the epic Detail/Audit tab flow added around E06.
53
-
54
- ## Boundaries
55
-
56
- **In scope:**
57
- - Board navigation and status transitions
58
- - Gate enforcement for dependencies and status rules
59
- - Plain table fallback when not in a TTY
60
- - Manual `r` refresh
61
- - Initial audit-review mode entry point if proposals exist
62
-
63
- **Out of scope:**
64
- - File watching
65
- - Search
66
- - Mouse interaction
67
- - Drag-and-drop
68
- - Full audit proposal diff implementation
@@ -1,26 +0,0 @@
1
- ---
2
- id: E08-board-command/T001-cli-entrypoint
3
- status: done
4
- objective: "Create CLI entrypoint for savepoint board command"
5
- depends_on: []
6
- ---
7
-
8
- # T001: CLI Entrypoint
9
-
10
- ## Acceptance Criteria
11
-
12
- - `savepoint board --help` shows usage: `board [--release <release>] [--epic <epic>]`
13
- - `savepoint` (no args) defaults to board
14
- - `savepoint board` launches TUI
15
- - `savepoint board --release v1` filters by release
16
- - `savepoint board --epic E03` filters by epic
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Update main.go dispatch to recognize subcommands
21
- - [x] Add `cmd/board.go` with CLI arg parsing
22
- - [x] Wire board command into main.go
23
- - [x] Implement arg validation (--release, --epic)
24
- - [x] Default to board when no subcommand given
25
- - [x] Test `savepoint board --help` output
26
- - [x] Run `make build && make test`
@@ -1,27 +0,0 @@
1
- ---
2
- id: E08-board-command/T002-non-tty-fallback
3
- status: done
4
- objective: "Implement non-TTY plain text table output"
5
- depends_on: ["E08-board-command/T001-cli-entrypoint"]
6
- ---
7
-
8
- # T002: Non-TTY Fallback
9
-
10
- ## Acceptance Criteria
11
-
12
- - When not in a TTY, outputs deterministic plain text
13
- - Shows three columns: planned, in_progress, done
14
- - Lists task IDs and objectives in each column
15
- - Includes warning about non-interactive mode
16
- - Shows audit-entry signal if audit proposals exist
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Add `internal/board/plain.go`
21
- - [x] Implement `RenderPlainTable(model) string`
22
- - [x] Check `termenv.IsTerminal()` for TTY detection
23
- - [x] Format tasks in three columns with headers
24
- - [x] Add non-interactive warning banner
25
- - [x] Check for audit proposals, show entry signal
26
- - [x] Test non-TTY output
27
- - [x] Run `make build && make test`
@@ -1,28 +0,0 @@
1
- ---
2
- id: E08-board-command/T003-tui-app-shell
3
- status: done
4
- objective: "Implement Bubble Tea TUI program shell"
5
- depends_on: ["E08-board-command/T001-cli-entrypoint"]
6
- ---
7
-
8
- # T003: TUI App Shell
9
-
10
- ## Acceptance Criteria
11
-
12
- - Launches Bubble Tea program with alt screen
13
- - Loads theme from config.yml
14
- - Initializes model with release/epic filters
15
- - Handles quit (q, ctrl+c) gracefully
16
- - Handles window resize
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Add `internal/board/tui.go`
21
- - [x] Implement `RunTUI(release, epic) error`
22
- - [x] Create tea.Program with board model
23
- - [x] Enable alt screen mode
24
- - [x] Load and apply theme from config
25
- - [x] Handle quit key (q, ctrl+c)
26
- - [x] Handle window resize events
27
- - [x] Test TUI launch in terminal
28
- - [x] Run `make build && make test`
@@ -1,29 +0,0 @@
1
- ---
2
- id: E08-board-command/T004-board-model
3
- status: done
4
- objective: "Implement TUI board model with 3-column Kanban"
5
- depends_on: ["E08-board-command/T003-tui-app-shell"]
6
- ---
7
-
8
- # T004: Board Model
9
-
10
- ## Acceptance Criteria
11
-
12
- - Three columns: planned, in_progress, done
13
- - Column headers with task count
14
- - Task cards showing ID and objective
15
- - Keyboard navigation: arrows, vim-style j/k/h/l
16
- - Selection highlighting with accent color
17
- - Filter by release and epic
18
-
19
- ## Implementation Plan
20
-
21
- - [x] Add `internal/board/model.go` (extend existing or create new)
22
- - [x] Implement column structure (planned, in_progress, done)
23
- - [x] Implement card rendering (ID + objective truncated)
24
- - [x] Implement selection state (current column, current card)
25
- - [x] Handle key events: Up/Down/Left/Right, j/k/h/l
26
- - [x] Apply theme colors for focus/accent
27
- - [x] Implement release/epic filtering from args
28
- - [x] Test board rendering in TUI
29
- - [x] Run `make build && make test`
@@ -1,27 +0,0 @@
1
- ---
2
- id: E08-board-command/T005-detail-pane
3
- status: done
4
- objective: "Implement task detail pane overlay"
5
- depends_on: ["E08-board-command/T004-board-model"]
6
- ---
7
-
8
- # T005: Detail Pane
9
-
10
- ## Acceptance Criteria
11
-
12
- - Enter key shows selected task detail overlay
13
- - Displays full task content: ID, objective, status, depends_on, AC
14
- - Keyboard navigation works (escape/enter to close)
15
- - Overlay renders with theme styling
16
- - Closes on q or escape
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Add `internal/board/detail.go` (extend existing or create new)
21
- - [x] Implement detail overlay state
22
- - [x] Render selected task full content
23
- - [x] Add enter key handler to show detail
24
- - [x] Add escape/q handlers to close detail
25
- - [x] Apply theme styling to overlay
26
- - [x] Test detail pane interaction
27
- - [x] Run `make build && make test`
@@ -1,29 +0,0 @@
1
- ---
2
- id: E08-board-command/T006-status-transitions
3
- status: done
4
- objective: "Implement status transitions with gate enforcement"
5
- depends_on: ["E08-board-command/T005-detail-pane"]
6
- ---
7
-
8
- # T006: Status Transitions
9
-
10
- ## Acceptance Criteria
11
-
12
- - Space advances: planned → in_progress → done
13
- - Backspace retreats: done → in_progress → planned
14
- - Phase gating: can only reach done after audit phase
15
- - Dependency gating: cannot advance if depends_on not done
16
- - mtime conflict detection: warn if task modified since load
17
- - Write status back to task frontmatter
18
-
19
- ## Implementation Plan
20
-
21
- - [x] Add `internal/board/transitions.go` (extend existing or create new)
22
- - [x] Implement phase advancement (space key)
23
- - [x] Implement phase retreat (backspace key)
24
- - [x] Check phase gating (must reach audit phase before done)
25
- - [x] Check dependency gating (all depends_on status: done)
26
- - [x] Implement mtime conflict detection before write
27
- - [x] Write new status to task frontmatter via data.WriteTaskStatus
28
- - [x] Test transition behavior in TUI
29
- - [x] Run `make build && make test`