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,29 +0,0 @@
1
- ---
2
- id: E05-phase-transitions/T001-phase-stepping
3
- status: done
4
- objective: "Space advances, Backspace retreats through phases"
5
- depends_on: [E04-board-components/T006-help-overlay]
6
- ---
7
-
8
- # T001: Phase Stepping
9
-
10
- ## Acceptance Criteria
11
-
12
- - `Space` on planned task moves to in_progress/build.
13
- - `Space` on in_progress advances phase: build → test → audit → done.
14
- - `Backspace` retreats: done → audit → test → build → planned.
15
- - Illegal transitions are blocked (governed by gates).
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Create `internal/board/transitions.go`.
20
- - [x] Implement `Advance(task)` and `Retreat(task)`.
21
- - [x] Wire Space/Backspace into Update loop.
22
- - [x] Write tests.
23
- - [x] Run `go test`.
24
-
25
- ## Context Log
26
-
27
- - Files read: AGENTS.md, internal/data/task.go, internal/board/update.go
28
- - Quality gates: `go test ./...` passed.
29
- - Notes: Implemented Advance and Retreat logic. Mapped space and backspace keys to trigger transitions. Tests written and passing.
@@ -1,31 +0,0 @@
1
- ---
2
- id: E05-phase-transitions/T002-gates
3
- status: done
4
- objective: "Enforce phase order: cannot skip, must reach audit before done"
5
- depends_on: [E05-phase-transitions/T001-phase-stepping]
6
- ---
7
-
8
- # T002: Gates
9
-
10
- ## Acceptance Criteria
11
-
12
- - Cannot advance build → audit (must pass test).
13
- - Cannot advance audit → done if dependencies not done.
14
- - Retreat transitions are always allowed.
15
- - Blocked transitions show a message in the status bar.
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Add `CanAdvance(task, allTasks)` to transitions.go.
20
- - [x] Add dependency check.
21
- - [x] Add phase adjacency check.
22
- - [x] Return reason string on block.
23
- - [x] Write tests.
24
- - [x] Run `go test`.
25
-
26
- ## Context Log
27
-
28
- - **Files read:** transitions.go, transitions_test.go, update.go, model.go, view.go, task.go, model_test.go, update_test.go
29
- - **Input tokens (estimate):** ~3,200
30
- - **Quality gates:** `go build ./...` ok, `go vet ./...` ok, `go test ./internal/board/...` 107/107 pass
31
- - **Notes:** No drift — all changes in existing files within `internal/board/`.
@@ -1,31 +0,0 @@
1
- ---
2
- id: E05-phase-transitions/T003-write-task
3
- status: done
4
- objective: "Write updated status/phase back to task markdown files"
5
- depends_on: [E05-phase-transitions/T002-gates]
6
- ---
7
-
8
- # T003: Write Task
9
-
10
- ## Acceptance Criteria
11
-
12
- - Task `.md` file is updated with new `status` and `phase`.
13
- - Mtime is checked before write; conflict reported if changed.
14
- - Phase field removed when status is planned or done.
15
- - Backup not required (git handles history).
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Create `internal/data/write.go`.
20
- - [x] Implement `WriteTaskStatus(path, task, expectedMtime)`.
21
- - [x] Read file, parse frontmatter, update fields.
22
- - [x] Check mtime, write back.
23
- - [x] Write tests.
24
- - [x] Run `go test`.
25
-
26
- ## Context Log
27
-
28
- - **Files read:** internal/data/task.go, internal/data/parser.go, internal/data/errors.go, internal/data/write.go, internal/data/write_test.go, internal/board/transitions.go, internal/board/update.go, internal/board/model.go, internal/data/router.go, internal/data/config.go
29
- - **Estimated input tokens:** ~4,500
30
- - **Quality gates:** `go build ./...` ok, `go vet ./...` ok, `go test ./...` — 7/7 new tests pass, all existing tests pass
31
- - **Notes:** Drift: `internal/data/write.go` and `internal/data/write_test.go` added, mapped under E02-data-readers umbrella in Codebase Map but belong to E05-phase-transitions — next audit should reconcile.
@@ -1,31 +0,0 @@
1
- ---
2
- id: E05-phase-transitions/T004-write-router
3
- status: done
4
- objective: "Write router.md Current state when epic or release changes"
5
- depends_on: [E05-phase-transitions/T003-write-task]
6
- ---
7
-
8
- # T004: Write Router
9
-
10
- ## Acceptance Criteria
11
-
12
- - Selecting a new epic updates `router.md` epic field.
13
- - Selecting a new release updates `router.md` release field.
14
- - Mtime check before write.
15
- - Next action string preserved.
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Add `WriteRouterState(root, state)` to `internal/data/write.go`.
20
- - [x] Read router.md, replace yaml block.
21
- - [x] Check mtime, write back.
22
- - [x] Wire into epic/release selection in Update loop.
23
- - [x] Write tests.
24
- - [x] Run `go test`.
25
-
26
- ## Context Log
27
-
28
- - **Files read:** internal/data/router.go, internal/data/write.go, internal/data/write_test.go, internal/data/parser.go, internal/data/task.go, internal/data/discover.go, internal/data/config.go, internal/data/errors.go, internal/board/model.go, internal/board/update.go, internal/board/board.go, internal/board/update_test.go, internal/board/model_test.go, internal/board/transitions.go, internal/board/transitions_test.go
29
- - **Estimated input tokens:** ~7,200
30
- - **Quality gates:** `go build ./...` ok, `go vet ./...` ok, `go test ./...` — 17/17 new tests pass (4 WriteRouterState tests + 13 existing), all packages pass, board tests pass, data tests pass
31
- - **Notes:** Drift: `Model.Root` field added to board, not yet in Codebase Map. Next audit should reconcile.
@@ -1,62 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: audited
4
- ---
5
-
6
- # Epic E06: Atari-Noir Layout Uplift
7
-
8
- ## Purpose
9
-
10
- Update the existing TUI to align with the **Atari-Noir SavePoint design system**. This is a visual and layout uplift focused on restraint, clarity, and control, preserving existing functionality while eliminating visual noise and strictly adhering to the new color and layout rules.
11
-
12
- ## What this epic adds
13
-
14
- - Centralized Atari-Noir color system in `palette.go`.
15
- - Restructured `styles.go` mapped to exact usage rules.
16
- - Static header component: `▣ S A V E P O I N T`.
17
- - Static footer component: `PLAN │ BUILD │ AUDIT`.
18
- - Full-width subtle horizontal dividers.
19
- - Refined component styling (columns, cards, epic panel) to remove unnecessary borders and improve spacing.
20
-
21
- ## Definition of Done
22
-
23
- - All colors match the Atari-Noir strict specification.
24
- - Header renders correctly with no wrapping.
25
- - Footer displays PLAN / BUILD / AUDIT cleanly without dynamic status text.
26
- - Full-width dividers frame the content.
27
- - Cards/panels feel like surfaces, not text blocks.
28
- - Spacing is consistent and components breathe.
29
- - Focus/selection is obvious through position and Atari Orange borders, not relying solely on color text changes.
30
- - Existing functionality remains 100% intact.
31
-
32
- ## Components and files
33
-
34
- | Path | Purpose |
35
- |------|---------|
36
- | `internal/styles/palette.go` | Define strict hex values |
37
- | `internal/styles/styles.go` | Map styles to new usage rules |
38
- | `internal/board/view.go` | Implement header, footer, dividers |
39
- | `internal/board/layout.go` | Adjust layout height calculations |
40
- | `internal/board/column.go` | Refine column styling and spacing |
41
- | `internal/board/card.go` | Refine card surface and focus state |
42
- | `internal/board/epic_panel.go` | Refine epic panel layout |
43
-
44
- ## Implemented As
45
-
46
- - `internal/styles/palette.go` defines the Atari-Noir hex palette plus ANSI256/ANSI16 fallbacks.
47
- - `internal/styles/styles.go` centralizes header, divider, footer, column, card, detail, glyph, and semantic tag styles.
48
- - `internal/board/view.go` renders the static SavePoint header, explicit full-width top/bottom dividers, the static `PLAN │ BUILD │ AUDIT` footer, subdued navigation hints, and overlay composition.
49
- - `internal/board/card.go` wraps long task titles instead of truncating them, uses a green `▣` marker only for the release/epic/task-scoped router-priority task, and keeps all done cards on the orange build glyph.
50
- - `internal/board/detail.go` adds spacing below Acceptance Criteria and Implementation Plan headings, renders checklist state with `☑`/`□`, and labels only the release/epic/task-scoped router-priority task.
51
- - `internal/data/task.go` and `internal/data/parser.go` represent Implementation Plan items as `CheckItem{Text, Done}` and parse `- [x]`, `- [ ]`, and legacy `- ` items.
52
- - `internal/data/write.go` persists task status and phase changes with mtime conflict protection.
53
- - `internal/board/watch.go` adds fsnotify-based recursive release directory watching from the `.savepoint/releases/` root, dynamically adds watches for newly-created subdirectories, applies a 100ms debounce, and sends reload messages used by `internal/board/update.go`.
54
-
55
- ## Implementation Deltas
56
-
57
- - The original visual-only scope expanded to include board usability fixes requested during E06: footer navigation hints, detail overlay spacing, card title word-wrap, checklist state rendering, router priority markers, and auto-refresh on task file changes.
58
- - Audit closeout removed unnecessary borders from unfocused header, board, column, card, and epic-panel surfaces while preserving Atari Orange borders for focused cards/columns and detail overlays.
59
- - User-approved visual guardrail: Background, Surface, and Surface 2 are intentionally the same black value in the terminal TUI. Do not reintroduce subtly different background fills for panels/cards.
60
- - The main view now renders explicit full-width divider lines with `styles.Divider` rather than relying on component frames as separators.
61
- - Auto-refresh reload now refreshes both task data and release/epic indexes so newly-added task files and newly-added epic directories can appear without restarting the board.
62
- - Router-priority matching is intentionally scoped by release and epic before task number; a router task of `T001` must not mark every epic's `T001` as priority.
@@ -1,39 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T001-color-system
3
- status: done
4
- objective: "Implement Atari-Noir Color System in palette and styles"
5
- depends_on: []
6
- ---
7
-
8
- # T001: Implement Atari-Noir Color System
9
-
10
- ## Acceptance Criteria
11
-
12
- - `internal/styles/palette.go` updated with exact hex values for Background, Surface, Surface 2, Border, Border Subtle, Primary Text, Atari Orange, NPP Green, Vibe Purple.
13
- - Legacy colors or gradients removed from `palette.go`.
14
- - `internal/styles/styles.go` maps styles according to usage rules (e.g., Background is dark `#121212`, Primary text is `#F0E6DA`, Atari Orange `#FC6323` for active/focus, Vibe Purple `#B1A1DF` for metadata, NPP Green `#A4C639` for success).
15
- - No large bright background fills or mixed accent colors in a single element exist in the style definitions.
16
-
17
- ## Implementation Plan
18
-
19
- - [x] Update `internal/styles/palette.go` with Atari-Noir hex, ANSI256, and ANSI16 values.
20
- - [x] Refactor `internal/styles/styles.go` variables to use the updated palette constants strictly.
21
- - [x] Remove unused or conflicting colors.
22
-
23
- ## Context Log
24
-
25
- Files read:
26
- - `internal/styles/palette.go`
27
- - `internal/styles/styles.go`
28
- - `.savepoint/visual-identity.md`
29
- - `.savepoint/router.md`
30
- - `E06-atari-noir-layout/Design.md`
31
-
32
- Estimated input tokens: 2400
33
-
34
- Notes:
35
- - palette.go already contained correct Atari-Noir hex/256/16 values matching the visual identity spec — no changes needed.
36
- - styles.go already referenced palette constants strictly — no circular refs or string literals.
37
- - No legacy colors or gradients found in palette.go.
38
- - No large bright background fills or mixed accent colors found in styles.go.
39
- - Quality gates: `go build ./...` pass, `go test ./...` pass (all cached), `go vet` pass.
@@ -1,52 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T002-header-and-dividers
3
- status: done
4
- objective: "Build the SavePoint Header and horizontal dividers"
5
- depends_on: ["E06-atari-noir-layout/T001-color-system"]
6
- ---
7
-
8
- # T002: Build SavePoint Header and Dividers
9
-
10
- ## Acceptance Criteria
11
-
12
- - Header renders exactly `▣ S A V E P O I N T` at the top of the TUI.
13
- - Icon `▣` is styled with Atari Orange.
14
- - Text `S A V E P O I N T` is Primary Text, uppercase, with spacing between letters.
15
- - Horizontal dividers `────────────────────────────────────────────────────────` are added below the header.
16
- - Divider color is strictly Border Subtle.
17
- - The header renders cleanly without wrapping, even in narrow terminals.
18
- - No additional icons or animations are present in the header.
19
-
20
- ## Implementation Plan
21
-
22
- - [x] Update `internal/board/view.go` to render the specific header string.
23
- - [x] Add logic in `internal/board/view.go` to insert the top horizontal divider.
24
- - [x] Adjust `internal/board/layout.go` / `internal/board/view.go` calculations if needed so the board fits below the header+divider.
25
-
26
- ## Context Log
27
-
28
- Files read:
29
- - `.savepoint/router.md`
30
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md`
31
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md`
32
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md`
33
- - `.savepoint/visual-identity.md`
34
- - `internal/styles/palette.go`
35
- - `internal/styles/styles.go`
36
- - `internal/board/view.go`
37
- - `internal/board/view_test.go`
38
- - `internal/board/layout.go`
39
- - `internal/board/epic_panel_test.go`
40
- - `internal/board/release_test.go`
41
-
42
- Estimated input tokens: ~4500
43
-
44
- Notes:
45
- - `layout.go` needed no changes — `lipgloss.JoinVertical` naturally accommodates the extra divider line without explicit height accounting.
46
- - The old `Header` style (orange, bold, padding) was replaced with `HeaderIcon` (orange, bold) and `HeaderText` (primary text) to support two-tone header rendering.
47
- - `Divider` style added with `BorderSubtle` foreground for quiet full-width separators.
48
- - Quality gates: `go build ./...` pass, `go test ./...` pass, `go vet ./...` pass.
49
-
50
- ## Drift Notes
51
-
52
- - Drift: `internal/styles/palette.go` and `internal/styles/styles.go` not yet in Codebase Map — pre-existing omission. These are the Atari-Noir color/style modules active across all board rendering.
@@ -1,52 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T003-footer-status-bar
3
- status: done
4
- objective: "Implement the static Footer Status Bar and bottom divider"
5
- depends_on: ["E06-atari-noir-layout/T002-header-and-dividers"]
6
- ---
7
-
8
- # T003: Implement Footer Status Bar
9
-
10
- ## Acceptance Criteria
11
-
12
- - Footer replaces the dynamic status string with exactly: `PLAN │ BUILD │ AUDIT`.
13
- - PLAN is colored Vibe Purple.
14
- - BUILD is colored Atari Orange.
15
- - AUDIT is colored NPP Green.
16
- - The divider `│` is colored Border Subtle.
17
- - The text is bold or slightly emphasized, with even spacing between sections.
18
- - A full-width horizontal divider is rendered above the footer.
19
- - The footer contains no icons, no repetition of the logo, and no extra labels/metrics.
20
- - The main application content sits cleanly between the top and bottom dividers without overlapping.
21
-
22
- ## Implementation Plan
23
-
24
- - [x] Update `renderStatus` in `internal/board/view.go` to render the new static phase footer.
25
- - [x] Style the footer segments according to the color rules.
26
- - [x] Add the bottom horizontal divider above the footer.
27
- - [x] Adjust height calculations so the board area fits exactly between the top and bottom dividers. (No height calculation changes needed — `lipgloss.JoinVertical` naturally accommodates the extra divider line.)
28
-
29
- ## Context Log
30
-
31
- Files read:
32
- - `.savepoint/router.md`
33
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md`
34
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md`
35
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md`
36
- - `.savepoint/visual-identity.md`
37
- - `internal/board/view.go`
38
- - `internal/board/view_test.go`
39
- - `internal/board/layout.go`
40
- - `internal/board/model.go`
41
- - `internal/styles/palette.go`
42
- - `internal/styles/styles.go`
43
-
44
- Estimated input tokens: ~5500
45
-
46
- Notes:
47
- - Replaced `renderStatus` (dynamic status bar with release/epic/column info) with `renderFooter` (static phase footer: PLAN │ BUILD │ AUDIT).
48
- - Added `FooterPhasePlan` (purple, bold), `FooterPhaseBuild` (orange, bold), `FooterPhaseAudit` (green, bold), and `FooterDivider` (border subtle) styles.
49
- - Added full-width bottom divider above the footer matching the top divider style.
50
- - Removed unused `fmt` import from `view.go` after `renderStatus` deletion.
51
- - `StatusBar` style and `StatusMessage` model field remain unused but harmless; left for future cleanup.
52
- - Quality gates: `go build ./...` pass, `go test ./...` pass, `go vet ./...` pass.
@@ -1,53 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T004-component-refinement
3
- status: done
4
- objective: "Refine columns, cards, and epic panels to match rhythm and interaction requirements"
5
- depends_on: ["E06-atari-noir-layout/T001-color-system"]
6
- ---
7
-
8
- # T004: Component Refinement & Spacing Rhythm
9
-
10
- ## Acceptance Criteria
11
-
12
- - Columns, cards, and epic panels use Surface (`#0D0D0D`) or Surface 2 (`#0F0F0F`) colors rather than text blocks.
13
- - Unnecessary borders are removed. Focus states use structure, position, and minimal accents (e.g., Atari Orange for focused borders).
14
- - Spacing is consistent and components "breathe". No dense, edge-to-edge clutter exists.
15
- - Line wrapping in standard data views is prevented where possible (treated as a bug).
16
- - The existing functional data structures and keyboard interactions remain completely intact.
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Refine `internal/board/column.go` to remove unnecessary borders and improve padding.
21
- - [x] Update `internal/board/card.go` to behave as a distinct surface with clear focus states.
22
- - [x] Update `internal/board/epic_panel.go` spacing and styles.
23
- - [x] Verify there is no unintentional wrapping on resizing, fixing any remaining flex/width issues in Lip Gloss setup.
24
-
25
- ## Context Log
26
-
27
- Files read:
28
- - `.savepoint/router.md`
29
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md`
30
- - `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md`
31
- - `internal/styles/palette.go`
32
- - `internal/styles/styles.go`
33
- - `internal/board/column.go`
34
- - `internal/board/card.go`
35
- - `internal/board/epic_panel.go`
36
- - `internal/board/layout.go`
37
- - `internal/board/view.go`
38
- - `internal/board/column_test.go`
39
- - `internal/board/card_test.go`
40
- - `internal/board/epic_panel_test.go`
41
- - `internal/board/layout_test.go`
42
- - `internal/board/board_test.go`
43
-
44
- Estimated input tokens: ~15k
45
-
46
- Notes:
47
- - Only `internal/styles/styles.go` was modified; no source code logic changes were needed since column.go, card.go, and epic_panel.go all reference the centralized styles.
48
- - Column (unfocused): removed `RoundedBorder()`, added `Background(clrSurfaceDark #0D0D0D)`.
49
- - ColumnFocused: added `Background(clrSurfaceDark)`, kept orange rounded border for focus.
50
- - Card (unfocused): added `Background(clrSurface #0F0F0F)` for surface feel.
51
- - EpicPanel: removed `RoundedBorder()`, added `Background(clrSurface #0F0F0F)`.
52
- - New color var `clrSurfaceDark` added for Surface (#0D0D0D) palette usage.
53
- - Quality gates: `go build ./...` (pass), `go vet ./...` (pass), `go test ./...` (all 113 tests pass).
@@ -1,39 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T005-restore-nav-hints
3
- status: done
4
- objective: "Restore persistent navigation keybinding hints to the main board footer"
5
- depends_on: []
6
- ---
7
-
8
- # T005: Restore Navigation Hints in Footer
9
-
10
- ## Acceptance Criteria
11
-
12
- - The footer shows a second line below the phase labels with keybinding hints: `←/→:nav E:epic R:release ?:help q:quit`
13
- - Hints are styled in a subdued color to not overwhelm the phase labels
14
- - The footer still fits within a single terminal width without wrapping
15
- - All existing footer behavior (centered phase labels, alignment) remains intact
16
- - Hints refresh correctly on terminal resize
17
-
18
- ## Implementation Plan
19
-
20
- - [x] Edit `internal/board/view.go` — update `renderFooter()` to append a second line of keybinding hints below the phase labels.
21
- - [x] Add a new `FooterHints` style in `internal/styles/styles.go` using `clrDim` (dim/subdued appearance).
22
- - [x] Run `make build && make test` to verify no regressions.
23
-
24
- ## Context Log
25
-
26
- Files read:
27
- - `internal/board/view.go`
28
- - `internal/board/update.go`
29
- - `internal/styles/styles.go`
30
- - `internal/board/view_test.go`
31
- - `internal/board/layout.go`
32
- - `internal/board/model.go`
33
-
34
- Estimated input tokens: 1400
35
-
36
- Notes:
37
- - `make build` could not run because `make` is not installed on PATH in this environment.
38
- - Verified the task with `go build ./...`, `go test ./...`, and focused `go test ./internal/board`.
39
- - Footer render now uses a width-guarded centered phase line, a blank spacer line, and a second subdued hint line.
@@ -1,36 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T007-detail-card-fixes
3
- status: done
4
- objective: "Add line breaks under Acceptance Criteria and Implementation Plan headings in task detail, and word-wrap card titles instead of truncating"
5
- depends_on: []
6
- ---
7
-
8
- # T007: Detail Overlay Spacing and Card Word-Wrap
9
-
10
- ## Acceptance Criteria
11
-
12
- - Task detail overlay shows a blank line between `"Acceptance Criteria:"` heading and the first bullet item
13
- - Task detail overlay shows a blank line between `"Implementation Plan:"` heading and the first checklist item
14
- - Card titles word-wrap to multiple lines when too long for the available card width, instead of being truncated with `…`
15
- - Cards grow vertically to accommodate wrapped titles
16
- - Short titles remain single-line (no visual change for titles that fit)
17
- - All existing card visual structure (phase glyph, ID line, focus border) is preserved
18
-
19
- ## Implementation Plan
20
-
21
- - [x] Edit `internal/board/detail.go` — add `""` entry after the `Acceptance Criteria:` heading line and after the `Implementation Plan:` heading line.
22
- - [x] Edit `internal/board/detail.go` — make `wrapText` and `splitLongWord` exported (capitalize) so they can be reused from `card.go`.
23
- - [x] Edit `internal/board/card.go` — replace `truncate(t.Title, inner)` with a multi-line approach that word-wraps the title across available width.
24
- - [x] Edit `internal/board/card.go` — combine wrapped title lines with newlines in the card content (joining with `\n`).
25
- - [x] Run `make build && make test` to verify no regressions.
26
-
27
- ## Context Log
28
-
29
- Files read:
30
- - `internal/board/detail.go`
31
- - `internal/board/card.go`
32
- - `internal/board/column.go`
33
-
34
- Estimated input tokens: 600
35
-
36
- Notes: Exported WrapText/SplitLongWord from detail.go; updated card_test.go TestRenderCard_titleTruncated → TestRenderCard_titleWraps. Build and tests pass.
@@ -1,40 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T008-checkbox-states
3
- status: done
4
- objective: "Parse and render checked/unchecked state for Implementation Plan checklist items"
5
- depends_on: []
6
- ---
7
-
8
- # T008: Parse and Render Checkbox States in Task Detail
9
-
10
- ## Acceptance Criteria
11
-
12
- - `Task.Checklist` stores the checked state of each item (not just the text)
13
- - `- [x]` markers in the markdown source are parsed as "done" items
14
- - `- [ ]` markers in the markdown source are parsed as "undone" items
15
- - Legacy `- ` (no checkbox prefix) items are treated as undone
16
- - The task detail overlay renders done items with a `☑` (checked box) glyph and undone items with `□` (empty box)
17
- - Done items render in the `TagDone` (green) style; undone items render in `CardMeta` (dim) style
18
- - All existing `make test` tests pass, with updates to any tests that construct `Checklist` values
19
-
20
- ## Implementation Plan
21
-
22
- - [x] Edit `internal/data/task.go` — add `CheckItem` struct with `Text string` and `Done bool` fields; change `Checklist []string` to `Checklist []CheckItem`.
23
- - [x] Edit `internal/data/parser.go` — update `extractChecklistSection()` to detect `- [x] ` vs `- [ ] ` vs `- ` prefixes and set `Done` accordingly; strip prefix from `Text`.
24
- - [x] Update all usages of `Checklist` across the codebase (likely only `board/detail.go` and tests).
25
- - [x] Edit `internal/board/detail.go` — in the Implementation Plan section, render done items with `☑ ` + green `TagDone` styling and undone items with `□ ` + dim `CardMeta` styling.
26
- - [x] Run `make build && make test` to verify no regressions.
27
-
28
- ## Context Log
29
-
30
- Files read:
31
- - `internal/data/task.go`
32
- - `internal/data/parser.go`
33
- - `internal/board/detail.go`
34
- - `internal/styles/styles.go`
35
- - `internal/data/parser_test.go`
36
- - `internal/board/detail_test.go`
37
-
38
- Estimated input tokens: 1200
39
-
40
- Notes: Added `extractChecklistItems` alongside existing `extractChecklistSection` (kept for `[]string` Acceptance path). Build and all tests pass.
@@ -1,48 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T009-router-priority-marker
3
- status: done
4
- objective: "Highlight the router priority task with a green marker on the card and optional text highlight"
5
- depends_on: []
6
- ---
7
-
8
- # T009: Highlight Router Priority Task on Board
9
-
10
- ## Acceptance Criteria
11
-
12
- - The model reads `RouterState.Task` (the `task:` field from `router.md`) and stores it as `Model.RouterTask`
13
- - In the board view, the task card whose ID matches `RouterTask` shows a green `▣` glyph (using `TagDone`/green style) instead of the normal phase-colored glyph
14
- - Non-priority tasks keep their existing phase-colored glyphs unchanged
15
- - Board always default view to current state release and epic
16
- - The task detail overlay shows a `"(router priority)"` label or marker when the displayed task matches `RouterTask`
17
- - All existing keyboard interactions, column rendering, and card behavior remain intact
18
-
19
- ## Implementation Plan
20
-
21
- - [x] Edit `internal/board/model.go` — add `RouterTask string` field to `Model`.
22
- - [x] Edit `internal/board/board.go` — in `newProjectModel()`, read `routerState.Task` into `model.RouterTask`.
23
- - [x] Edit `internal/board/card.go` — update `RenderCard` to accept a `routerTaskID string` parameter; when `t.ID == routerTaskID`, replace the phase glyph with a green `▣` using `TagDone` style.
24
- - [x] Edit `internal/board/card.go` — update `RenderCard` signature and callsites (`column.go`, `view.go`).
25
- - [x] Edit `internal/board/detail.go` — update `RenderDetail` to accept a `routerTaskID string`; when matching, append a `"(router priority)"` green label line.
26
- - [x] Update all callsites of `RenderCard` and `RenderDetail` to pass `m.RouterTask`.
27
- - [x] Run `make build && make test` to verify no regressions.
28
-
29
- ## Context Log
30
-
31
- Files read:
32
- - `internal/board/model.go`
33
- - `internal/board/board.go`
34
- - `internal/board/card.go`
35
- - `internal/board/column.go`
36
- - `internal/board/detail.go`
37
- - `internal/data/router.go`
38
- - `internal/board/view.go`
39
- - `internal/board/card_test.go`
40
- - `internal/board/detail_test.go`
41
- - `internal/board/column_test.go`
42
-
43
- Estimated input tokens: 1800
44
-
45
- Notes:
46
- - `go build && go test ./...` — PASS (all board tests green)
47
- - `RenderColumn` signature extended with `routerTaskID string`; all 7 test callsites updated
48
- - New tests: `TestRenderCard_routerPriorityUsesGreenGlyph`, `TestRenderDetail_routerPriorityLabel`, `TestRenderDetail_noRouterPriorityLabelWhenNoMatch`
@@ -1,66 +0,0 @@
1
- ---
2
- id: E06-atari-noir-layout/T010-auto-refresh-watcher
3
- status: done
4
- objective: "Auto-refresh the board when task files change on disk via fsnotify file watcher"
5
- depends_on: []
6
- ---
7
-
8
- # T010: Auto-Refresh Board on File Changes
9
-
10
- ## Acceptance Criteria
11
-
12
- - The board detects task `.md` file changes (write, create, delete) under `.savepoint/releases/` without requiring a restart
13
- - When a file change is detected, the board reloads all tasks from disk and re-renders the columns
14
- - Rapid successive file saves (e.g. editor auto-save + format) are debounced — only one reload fires within a 100ms window
15
- - The watcher does not prevent graceful shutdown (closes on `q`/`ctrl+c`)
16
- - An in-memory status change via `space`/`backspace` persists to disk via `data.WriteTaskStatus` and triggers the file watcher naturally
17
- - All existing keyboard navigation, overlay, and column behavior remain intact
18
- - `go build ./...` and `go test ./...` pass cleanly
19
-
20
- ## Implementation Plan
21
-
22
- - [x] Add `github.com/fsnotify/fsnotify` to `go.mod`
23
- - [x] Create `internal/board/watch.go`:
24
- - Define `fileChangeMsg struct{}` and `reloadMsg struct{ tasks []data.Task }`
25
- - `watchFiles(w *fsnotify.Watcher) tea.Cmd` — blocks on watcher.Events, drains channel for 100ms, emits single `fileChangeMsg`
26
- - `reloadTasks(root string) tea.Cmd` — calls `loadAllTasks(root)` and emits `reloadMsg{tasks}`
27
- - `loadAllTasks(root string) ([]data.Task, error)` — extracted from `board.go`, reuses `Discover` + `Parser`
28
- - [x] Edit `internal/board/model.go`:
29
- - Add `Watcher *fsnotify.Watcher` field to `Model`
30
- - `Init()` — returns `watchFiles(m.Watcher)` if watcher non-nil, else nil
31
- - [x] Edit `internal/board/board.go`:
32
- - Extract task-discovery loop from `newProjectModel` into `loadAllTasks(root string) ([]data.Task, error)`
33
- - `newProjectModel` calls `loadAllTasks` + `newWatcher`, sets `model.Watcher`
34
- - `loadEpicTasks` now sets `task.Path` and `task.Mtime` from stat
35
- - [x] Edit `internal/board/update.go`:
36
- - Handle `fileChangeMsg` → return `reloadTasks(m.Root)` cmd
37
- - Handle `reloadMsg` → swap `m.AllTasks = msg.tasks`, call `m.refreshTasks()`, return `watchFiles(m.Watcher)` to re-subscribe
38
- - On quit (`q`/`ctrl+c`), close `m.Watcher` before `tea.Quit`
39
- - `space`/`backspace` now call `data.WriteTaskStatus` to persist to disk
40
- - [x] `internal/data/task.go`: added `Path string` and `Mtime time.Time` (yaml:"-") to Task
41
- - [x] Run `go build ./...` and `go test ./...` to verify no regressions
42
-
43
- ## Context Log
44
-
45
- Files read:
46
- - `internal/board/model.go`
47
- - `internal/board/board.go`
48
- - `internal/board/update.go`
49
- - `internal/board/transitions.go`
50
- - `internal/board/watch.go` (created)
51
- - `internal/data/write.go`
52
- - `internal/data/task.go`
53
- - `internal/data/parser.go`
54
- - `.savepoint/AGENTS.md`
55
-
56
- Estimated input tokens: 2200
57
-
58
- Quality gates: `go build ./...` PASS, `go test ./...` PASS (board: 0.317s, data: 0.343s)
59
-
60
- Notes:
61
- - fsnotify v1.10.0 has no recursive AddWith option; used `filepath.WalkDir` + `w.Add` per subdir instead.
62
- - `data.Task` gained `Path` and `Mtime` (yaml:"-") fields populated in `loadEpicTasks`.
63
- - Advance/Retreat disk writes live in `update.go`, not `transitions.go` (keeps transitions pure).
64
- - Watcher created in `newProjectModel`; Init() subscribes if non-nil; nil watcher = test-safe.
65
- - Follow-up fix (2026-05-02): `newWatcher` receives `root` as the `.savepoint` directory, so it watches `root/releases` directly rather than `.savepoint/.savepoint/releases`. Watch startup errors now fail model creation instead of being silently ignored.
66
- - Follow-up fix (2026-05-02): file-change reloads refresh task data plus release/epic indexes, and create events add watches for newly-created directories before the debounced reload.