savepoint 1.0.4 → 1.0.7

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 +11 -4
  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,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`