savepoint 1.0.0

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 (273) hide show
  1. package/.claude/settings.local.json +20 -0
  2. package/.prettierignore +4 -0
  3. package/.savepoint/Design.md +196 -0
  4. package/.savepoint/PRD.md +58 -0
  5. package/.savepoint/audit/E01-go-setup/proposals.md +166 -0
  6. package/.savepoint/audit/E01-go-setup/snapshot.md +71 -0
  7. package/.savepoint/audit/E01-scaffolding/proposals/AGENTS.md +66 -0
  8. package/.savepoint/audit/E01-scaffolding/proposals/Design.md +210 -0
  9. package/.savepoint/audit/E01-scaffolding/proposals/epic-Design.md +117 -0
  10. package/.savepoint/audit/E01-scaffolding/proposals/quality-review.md +101 -0
  11. package/.savepoint/audit/E01-scaffolding/snapshot.md +54 -0
  12. package/.savepoint/audit/E02-data-model/snapshot.md +128 -0
  13. package/.savepoint/audit/E02-data-readers/proposals.md +123 -0
  14. package/.savepoint/audit/E02-data-readers/snapshot.md +54 -0
  15. package/.savepoint/audit/E03-board-tui-core/proposals.md +146 -0
  16. package/.savepoint/audit/E03-board-tui-core/snapshot.md +57 -0
  17. package/.savepoint/audit/E03-cli-foundation/snapshot.md +106 -0
  18. package/.savepoint/audit/E04-board-components/proposals.md +118 -0
  19. package/.savepoint/audit/E04-board-components/snapshot.md +77 -0
  20. package/.savepoint/audit/E04-templates-and-prompts/snapshot.md +115 -0
  21. package/.savepoint/audit/E05-init-command/snapshot.md +125 -0
  22. package/.savepoint/audit/E05-phase-transitions/proposals.md +83 -0
  23. package/.savepoint/audit/E05-phase-transitions/snapshot.md +36 -0
  24. package/.savepoint/audit/E06-tui-board/snapshot.md +64 -0
  25. package/.savepoint/audit/E07-audit-pipeline/snapshot.md +165 -0
  26. package/.savepoint/audit/E08-board-workflow-cleanup/snapshot.md +65 -0
  27. package/.savepoint/config.yml +27 -0
  28. package/.savepoint/releases/v1/PRD.md +66 -0
  29. package/.savepoint/releases/v1/epics/E01-go-setup/Design.md +39 -0
  30. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +42 -0
  31. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +23 -0
  32. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +24 -0
  33. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +23 -0
  34. package/.savepoint/releases/v1/epics/E02-data-readers/Design.md +61 -0
  35. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +29 -0
  36. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +30 -0
  37. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +29 -0
  38. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +29 -0
  39. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +30 -0
  40. package/.savepoint/releases/v1/epics/E03-board-tui-core/Design.md +38 -0
  41. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +29 -0
  42. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +30 -0
  43. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +34 -0
  44. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +29 -0
  45. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +42 -0
  46. package/.savepoint/releases/v1/epics/E04-board-components/Design.md +44 -0
  47. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +34 -0
  48. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +33 -0
  49. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +49 -0
  50. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +40 -0
  51. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +33 -0
  52. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +34 -0
  53. package/.savepoint/releases/v1/epics/E05-phase-transitions/Design.md +38 -0
  54. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +29 -0
  55. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +31 -0
  56. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +31 -0
  57. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +31 -0
  58. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/Design.md +42 -0
  59. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +39 -0
  60. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +52 -0
  61. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +52 -0
  62. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +53 -0
  63. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +39 -0
  64. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +36 -0
  65. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +38 -0
  66. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +41 -0
  67. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +61 -0
  68. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +39 -0
  69. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +20 -0
  70. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +22 -0
  71. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +24 -0
  72. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +22 -0
  73. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +118 -0
  74. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +9 -0
  75. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +45 -0
  76. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +48 -0
  77. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +43 -0
  78. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +45 -0
  79. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +40 -0
  80. package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +142 -0
  81. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +27 -0
  82. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +28 -0
  83. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +29 -0
  84. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +30 -0
  85. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +29 -0
  86. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +29 -0
  87. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +31 -0
  88. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +40 -0
  89. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +27 -0
  90. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +25 -0
  91. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +26 -0
  92. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +24 -0
  93. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +122 -0
  94. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +28 -0
  95. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +28 -0
  96. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +27 -0
  97. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +29 -0
  98. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +34 -0
  99. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +32 -0
  100. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +43 -0
  101. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +26 -0
  102. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +23 -0
  103. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +23 -0
  104. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +24 -0
  105. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +22 -0
  106. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +48 -0
  107. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +26 -0
  108. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +28 -0
  109. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +27 -0
  110. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +42 -0
  111. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +24 -0
  112. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +24 -0
  113. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +27 -0
  114. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +25 -0
  115. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +85 -0
  116. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +17 -0
  117. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +20 -0
  118. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +22 -0
  119. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +17 -0
  120. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +16 -0
  121. package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +88 -0
  122. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +22 -0
  123. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +23 -0
  124. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +24 -0
  125. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +23 -0
  126. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +24 -0
  127. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +28 -0
  128. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +53 -0
  129. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +23 -0
  130. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +26 -0
  131. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +25 -0
  132. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +28 -0
  133. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +28 -0
  134. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +23 -0
  135. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +25 -0
  136. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +104 -0
  137. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +23 -0
  138. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +24 -0
  139. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +25 -0
  140. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +23 -0
  141. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +26 -0
  142. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +24 -0
  143. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +88 -0
  144. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +23 -0
  145. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +23 -0
  146. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +23 -0
  147. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +27 -0
  148. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +25 -0
  149. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +24 -0
  150. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +26 -0
  151. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +24 -0
  152. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +103 -0
  153. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +30 -0
  154. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +33 -0
  155. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +34 -0
  156. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +33 -0
  157. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +37 -0
  158. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +36 -0
  159. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +34 -0
  160. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +41 -0
  161. package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +70 -0
  162. package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +68 -0
  163. package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +68 -0
  164. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/Design.md +26 -0
  165. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +35 -0
  166. package/.savepoint/router.md +136 -0
  167. package/.savepoint/visual-identity.md +124 -0
  168. package/AGENTS.md +141 -0
  169. package/CLAUDE.md +1 -0
  170. package/GEMINI.md +1 -0
  171. package/LICENSE +21 -0
  172. package/Makefile +13 -0
  173. package/README.md +78 -0
  174. package/agent-skills/ink-tui-design/SKILL.md +309 -0
  175. package/agent-skills/ink-tui-design/references/component-patterns.md +371 -0
  176. package/agent-skills/ink-tui-design/references/hooks-guide.md +436 -0
  177. package/agent-skills/ink-tui-design/references/ink-gotchas.md +330 -0
  178. package/agent-skills/ink-tui-design/references/testing-patterns.md +384 -0
  179. package/agent-skills/savepoint-audit/SKILL.md +35 -0
  180. package/agent-skills/savepoint-build-task/SKILL.md +39 -0
  181. package/agent-skills/savepoint-create-plan/SKILL.md +28 -0
  182. package/agent-skills/savepoint-create-task/SKILL.md +31 -0
  183. package/agent-skills/savepoint-draft-prd/SKILL.md +32 -0
  184. package/agent-skills/savepoint-system-design/SKILL.md +33 -0
  185. package/agent-skills/superpowers/brainstorming/SKILL.md +165 -0
  186. package/agent-skills/superpowers/brainstorming/visual-companion.md +304 -0
  187. package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +193 -0
  188. package/agent-skills/superpowers/executing-plans/SKILL.md +77 -0
  189. package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +213 -0
  190. package/agent-skills/superpowers/receiving-code-review/SKILL.md +226 -0
  191. package/agent-skills/superpowers/requesting-code-review/SKILL.md +115 -0
  192. package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +160 -0
  193. package/agent-skills/superpowers/subagent-driven-development/SKILL.md +292 -0
  194. package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +27 -0
  195. package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +113 -0
  196. package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  197. package/agent-skills/superpowers/systematic-debugging/SKILL.md +305 -0
  198. package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +122 -0
  199. package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +130 -0
  200. package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +183 -0
  201. package/agent-skills/superpowers/test-driven-development/SKILL.md +389 -0
  202. package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +317 -0
  203. package/agent-skills/superpowers/verification-before-completion/SKILL.md +147 -0
  204. package/agent-skills/superpowers/writing-plans/SKILL.md +159 -0
  205. package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
  206. package/assets/banner.png +0 -0
  207. package/assets/logo.png +0 -0
  208. package/assets/strawman.png +0 -0
  209. package/go.mod +33 -0
  210. package/go.sum +73 -0
  211. package/ink-cli-ui-design.zip +0 -0
  212. package/internal/board/board.go +121 -0
  213. package/internal/board/board_test.go +99 -0
  214. package/internal/board/card.go +72 -0
  215. package/internal/board/card_test.go +111 -0
  216. package/internal/board/column.go +61 -0
  217. package/internal/board/column_test.go +81 -0
  218. package/internal/board/detail.go +140 -0
  219. package/internal/board/detail_test.go +233 -0
  220. package/internal/board/epic_panel.go +69 -0
  221. package/internal/board/epic_panel_test.go +246 -0
  222. package/internal/board/help.go +40 -0
  223. package/internal/board/help_test.go +85 -0
  224. package/internal/board/layout.go +58 -0
  225. package/internal/board/layout_test.go +89 -0
  226. package/internal/board/model.go +151 -0
  227. package/internal/board/model_test.go +67 -0
  228. package/internal/board/release.go +42 -0
  229. package/internal/board/release_test.go +177 -0
  230. package/internal/board/transitions.go +88 -0
  231. package/internal/board/transitions_test.go +141 -0
  232. package/internal/board/update.go +155 -0
  233. package/internal/board/update_test.go +128 -0
  234. package/internal/board/view.go +190 -0
  235. package/internal/board/view_test.go +147 -0
  236. package/internal/data/config.go +87 -0
  237. package/internal/data/config_test.go +73 -0
  238. package/internal/data/discover.go +152 -0
  239. package/internal/data/discover_test.go +106 -0
  240. package/internal/data/errors.go +9 -0
  241. package/internal/data/lifecycle.go +37 -0
  242. package/internal/data/lifecycle_test.go +38 -0
  243. package/internal/data/parser.go +189 -0
  244. package/internal/data/parser_test.go +216 -0
  245. package/internal/data/router.go +52 -0
  246. package/internal/data/router_test.go +35 -0
  247. package/internal/data/task.go +46 -0
  248. package/internal/data/task_test.go +51 -0
  249. package/internal/data/write.go +144 -0
  250. package/internal/data/write_test.go +456 -0
  251. package/internal/styles/palette.go +47 -0
  252. package/internal/styles/styles.go +122 -0
  253. package/main.exe +0 -0
  254. package/main.go +11 -0
  255. package/package.json +25 -0
  256. package/savepoint +0 -0
  257. package/savepoint.exe +0 -0
  258. package/scripts/vitest-preload.cjs +95 -0
  259. package/templates/project/.savepoint/Design.md +47 -0
  260. package/templates/project/.savepoint/PRD.md +34 -0
  261. package/templates/project/.savepoint/config.yml +27 -0
  262. package/templates/project/.savepoint/router.md +152 -0
  263. package/templates/project/.savepoint/visual-identity.md +122 -0
  264. package/templates/project/AGENTS.md +130 -0
  265. package/templates/prompts/audit-reconciliation.prompt.md +67 -0
  266. package/templates/prompts/design.prompt.md +43 -0
  267. package/templates/prompts/epic-design.prompt.md +43 -0
  268. package/templates/prompts/magic-prompt.prompt.md +7 -0
  269. package/templates/prompts/prd.prompt.md +42 -0
  270. package/templates/prompts/task-breakdown.prompt.md +54 -0
  271. package/templates/prompts/task-building.prompt.md +38 -0
  272. package/templates/prompts/task-planning.prompt.md +53 -0
  273. package/templates/release/v1/PRD.md +37 -0
@@ -0,0 +1,65 @@
1
+ ---
2
+ type: audit-snapshot
3
+ epic: E08-board-workflow-cleanup
4
+ source: manual
5
+ created: 2026-04-29
6
+ ---
7
+
8
+ # E08-board-workflow-cleanup Audit Snapshot
9
+
10
+ Manual snapshot created because the audit CLI is not the active workflow entry for this epic closeout.
11
+
12
+ ## Epic Scope
13
+
14
+ Extend the board from an active-epic-only view into a release workflow surface with acceptance-criteria-aware task documents, release-level task loading, epic browsing, alternate-screen TTY rendering, a task detail modal, and updated workflow templates/prompts.
15
+
16
+ ## Completed Tasks
17
+
18
+ - E08-board-workflow-cleanup/T001-acceptance-criteria-model
19
+ - E08-board-workflow-cleanup/T002-release-task-set-reader
20
+ - E08-board-workflow-cleanup/T003-board-data-and-plain-output
21
+ - E08-board-workflow-cleanup/T004-board-selection-state
22
+ - E08-board-workflow-cleanup/T005-ink-board-layout-cleanup
23
+ - E08-board-workflow-cleanup/T006-task-detail-popup
24
+ - E08-board-workflow-cleanup/T007-templates-acceptance-criteria
25
+ - E08-board-workflow-cleanup/T008-board-workflow-integration
26
+
27
+ ## Changed Files To Audit
28
+
29
+ - `.savepoint/router.md`
30
+ - `AGENTS.md`
31
+ - `src/commands/board.ts`
32
+ - `src/domain/task.ts`
33
+ - `src/readers/tasks.ts`
34
+ - `src/tui/App.tsx`
35
+ - `src/tui/Board.tsx`
36
+ - `src/tui/DetailPane.tsx`
37
+ - `src/tui/board-data.ts`
38
+ - `src/tui/io/gates.ts`
39
+ - `src/tui/render/plain-table.ts`
40
+ - `src/tui/state/app-reducer.ts`
41
+ - `src/tui/state/reducer.ts`
42
+ - `src/tui/state/view-state.ts`
43
+ - `templates/project/.savepoint/router.md`
44
+ - `templates/project/AGENTS.md`
45
+ - `templates/prompts/task-breakdown.prompt.md`
46
+ - `templates/prompts/task-planning.prompt.md`
47
+ - `templates/prompts/task-building.prompt.md`
48
+ - `test/commands/board.test.ts`
49
+ - `test/commands/board-tty.test.ts`
50
+ - `test/domain/task.test.ts`
51
+ - `test/readers/tasks.test.ts`
52
+ - `test/templates/project-templates.test.ts`
53
+ - `test/templates/prompt-templates.test.ts`
54
+ - `test/templates/router-template.test.ts`
55
+ - `test/tui/board-data.test.ts`
56
+ - `test/tui/components/App.test.tsx`
57
+ - `test/tui/components/Board.test.tsx`
58
+ - `test/tui/components/DetailPane.test.tsx`
59
+ - `test/tui/render/plain-table.test.ts`
60
+ - `test/tui/state/app-reducer.test.ts`
61
+ - `test/tui/state/reducer.test.ts`
62
+
63
+ ## Known Non-E08 Working Tree Noise
64
+
65
+ The working tree also contains prior and parallel changes in E05, E06, E07, release-planning metadata, README/docs copies, and other scaffold/test areas. Those files are not audit inputs for this Epic08 bundle except where proposal targets explicitly update shared architecture or codebase-map documentation.
@@ -0,0 +1,27 @@
1
+ # Savepoint config — single source of truth for project preferences.
2
+
3
+ verify_strict: false # vibe-coder soft mode; tasks reach done on assertion. Set true for TDD-strict.
4
+
5
+ quality_gates:
6
+ # Filled in by epic E01-scaffolding. Until then, audits skip step 0.
7
+ lint: null
8
+ typecheck: null
9
+ test: null
10
+ block_on_failure: true
11
+
12
+ audit:
13
+ divergence_threshold: 0.5 # warn if a proposal changes >50% of a live file
14
+
15
+ theme:
16
+ bg: "#121212"
17
+ surface: "#0D0D0D"
18
+ surface_2: "#0F0F0F"
19
+ border: "#1A1A1A"
20
+ text: "#F0E6DA"
21
+ accents:
22
+ planned: "#B1A1DF"
23
+ in_progress: "#FC6323" # Atari Orange
24
+ done: "#A4C639" # NPP Green
25
+ blocked: "#FF4444"
26
+ epic: "#B1A1DF" # Vibe Purple
27
+ borders: "subtle" # subtle | sharp | none
@@ -0,0 +1,66 @@
1
+ ---
2
+ version: 1
3
+ name: "Simplified Board"
4
+ status: in_progress
5
+ ---
6
+
7
+ # Release v1 — Simplified Board
8
+
9
+ ## Simplification Objective
10
+
11
+ The original v1 scope (11 epics, 5 CLI commands, full audit pipeline) proved over-engineered. This release strips savepoint back to its essential value: a board for tracking AI-driven development work through phases.
12
+
13
+ **Stack change:** Ink/TypeScript → Bubble Tea/Go. Full rewrite.
14
+
15
+ **What stays:**
16
+ - `savepoint board` — Bubble Tea TUI for viewing and moving tasks
17
+ - The `.savepoint/` data structure: router → release → epic → task
18
+ - AGENTS.md as the agent bootstrap file
19
+
20
+ **What goes:**
21
+ - `init`, `audit`, `doctor` commands
22
+ - Full 6-step audit pipeline
23
+ - Template scaffolding and prompt generation
24
+ - Quality gates, divergence thresholds, snapshot generation
25
+ - Complex router state machine (6 states → 3 states)
26
+ - TypeScript, React, Ink, npm, tsup, vitest
27
+
28
+ **What replaces the audit pipeline:**
29
+ - Tasks in `in_progress` now carry a `phase`: `build → test → audit → done`
30
+ - The board itself enforces phase progression
31
+ - Space advances phase, backspace retreats
32
+ - Must reach `audit` phase before advancing to `done`
33
+
34
+ ## What ships in v0.2.0
35
+
36
+ - `savepoint board` — the only CLI command (Go binary)
37
+ - Phase-aware Kanban board: planned / in_progress (build/test/audit) / done
38
+ - Task status transitions with phase gating
39
+ - Non-TTY plain table fallback
40
+ - Atari-Noir theme, fully overridable via `config.yml`
41
+ - Go 1.23+, single binary, `go build`
42
+
43
+ ## Epic breakdown
44
+
45
+ | # | Epic name | Purpose |
46
+ | --- | ---------------------------- | ------- |
47
+ | 01 | `E01-go-setup` | Initialize Go module, project structure, dependencies, build loop |
48
+ | 02 | `E02-data-readers` | Parse markdown/yaml, read .savepoint data (router, config, tasks) |
49
+ | 03 | `E03-board-tui-core` | Bubble Tea model, update loop, view, styles, responsive layout |
50
+ | 04 | `E04-board-components` | Columns, cards with phase glyphs, epic panel, detail overlay, dropdowns, help |
51
+ | 05 | `E05-phase-transitions` | Phase stepping, gates, task frontmatter write-back, router state write-back |
52
+
53
+ ## Success criteria
54
+
55
+ - `savepoint board` launches and renders the phase-aware Kanban board.
56
+ - Space/backspace correctly advances/retreats task phases.
57
+ - Cannot advance to `done` without passing through `audit` phase.
58
+ - `go build` produces a working binary.
59
+ - `go test ./...` passes.
60
+ - No dead code, no unused dependencies, no references to deleted commands.
61
+
62
+ ## Risks
63
+
64
+ - **Agent compliance.** Simpler structure should improve compliance. AGENTS.md must be crystal clear.
65
+ - **Phase model clarity.** Users must understand build/test/audit as sub-states of in_progress. Board rendering must make this obvious.
66
+ - **Go ecosystem.** New stack requires different testing patterns, dependency management, build tooling.
@@ -0,0 +1,39 @@
1
+ ---
2
+ type: epic-design
3
+ status: planned
4
+ ---
5
+
6
+ # Epic E01: Go Project Setup
7
+
8
+ ## Purpose
9
+
10
+ Initialize the savepoint CLI as a Go module. Set up the project directory structure, add Bubble Tea + Lip Gloss dependencies, and establish a working build/test loop.
11
+
12
+ ## What this epic adds
13
+
14
+ - `go.mod` with module path `github.com/opencode/savepoint`.
15
+ - `main.go` entrypoint that launches the Bubble Tea program.
16
+ - Directory structure: `cmd/`, `internal/board/`, `internal/data/`, `internal/styles/`.
17
+ - `go.sum` with resolved Bubble Tea, Lip Gloss, reflow, and YAML dependencies.
18
+ - `Makefile` or script for `build`, `test`, `run`.
19
+
20
+ ## Definition of Done
21
+
22
+ - `go mod init` succeeds and `go mod tidy` produces clean `go.mod`/`go.sum`.
23
+ - `go build` produces a working binary.
24
+ - `go test ./...` runs (even if no tests yet, it must not error).
25
+ - Bubble Tea `tea.NewProgram` launches and renders a blank screen.
26
+ - No TypeScript files, `package.json`, or `node_modules` remain at project root.
27
+
28
+ ## Components and files
29
+
30
+ | Path | Purpose |
31
+ |------|---------|
32
+ | `go.mod` | Go module definition |
33
+ | `go.sum` | Dependency checksums |
34
+ | `main.go` | Entrypoint: tea.NewProgram |
35
+ | `Makefile` | Build/test/run shortcuts |
36
+ | `cmd/` | CLI command setup |
37
+ | `internal/board/` | Board TUI package |
38
+ | `internal/data/` | Data reading/parsing package |
39
+ | `internal/styles/` | Lip Gloss styles package |
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: E01-go-setup/T001-init-module
3
+ status: done
4
+ objective: "Initialize Go module and add Bubble Tea + Lip Gloss dependencies"
5
+ depends_on: []
6
+ ---
7
+
8
+ # T001: Initialize Go Module
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `go.mod` exists with module path.
13
+ - `go.sum` exists with resolved dependencies.
14
+ - `go build` compiles without errors.
15
+
16
+ ## Implementation Plan
17
+
18
+ - [x] Run `go mod init github.com/opencode/savepoint`.
19
+ - [x] Add Bubble Tea: `go get github.com/charmbracelet/bubbletea`.
20
+ - [x] Add Lip Gloss: `go get github.com/charmbracelet/lipgloss`.
21
+ - [x] Add YAML parser: `go get gopkg.in/yaml.v3`.
22
+ - [x] Run `go mod tidy`.
23
+ - [x] Verify `go build` succeeds.
24
+
25
+ ## Context Log
26
+
27
+ Files read:
28
+
29
+ - `.savepoint/router.md`
30
+ - `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
31
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md`
32
+ - `go.mod`
33
+ - `go.sum`
34
+
35
+ Estimated input tokens: 4,000
36
+
37
+ Notes:
38
+
39
+ - `go.mod` exists with module path `github.com/opencode/savepoint`.
40
+ - `go.sum` exists with resolved Bubble Tea, Lip Gloss, YAML, and transitive dependency checksums.
41
+ - `go build ./...` passed during the E01 audit when run outside the sandbox because the Go build cache is outside the workspace.
42
+ - `go test ./...` was not used as T001 evidence because the current failure is in active E02 data-reader test code, outside this task's scope.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: E01-go-setup/T002-entrypoint
3
+ status: done
4
+ objective: "Create main.go that launches a blank Bubble Tea program"
5
+ depends_on: [E01-go-setup/T001-init-module]
6
+ ---
7
+
8
+ # T002: Create Entrypoint
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `main.go` exists and compiles.
13
+ - Running the binary launches a Bubble Tea program.
14
+ - Pressing `q` or `ctrl+c` exits cleanly.
15
+ - No TypeScript files remain at project root.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Write `main.go` with `tea.NewProgram` and a minimal model.
20
+ - [x] Implement `Init()`, `Update()`, `View()` on the model.
21
+ - [x] Handle `tea.KeyMsg` for `q` and `ctrl+c`.
22
+ - [x] Verify `go run main.go` launches and quits.
23
+ - [x] Delete `src/`, `test/`, `dist/`, `package.json`, `node_modules/`, `tsconfig.json`, `tsup.config.ts`, `vitest.config.js`, `eslint.config.js`, `.prettierrc.json`.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: E01-go-setup/T003-directory-structure
3
+ status: done
4
+ objective: "Set up internal package directories"
5
+ depends_on: [E01-go-setup/T002-entrypoint]
6
+ ---
7
+
8
+ # T003: Directory Structure
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `cmd/`, `internal/board/`, `internal/data/`, `internal/styles/` directories exist.
13
+ - `main.go` lives at root and imports `internal/board`.
14
+ - Build compiles with packages.
15
+
16
+ ## Implementation Plan
17
+
18
+ - [x] Create `cmd/` directory.
19
+ - [x] Create `internal/board/` directory.
20
+ - [x] Create `internal/data/` directory.
21
+ - [x] Create `internal/styles/` directory.
22
+ - [x] Move entrypoint logic into `internal/board/` package.
23
+ - [x] Update `main.go` to delegate to `board.Run()`.
24
+ - [x] Verify `go build`.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: E01-go-setup/T004-makefile
3
+ status: done
4
+ objective: "Create Makefile for build, test, run"
5
+ depends_on: [E01-go-setup/T003-directory-structure]
6
+ ---
7
+
8
+ # T004: Makefile
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `Makefile` exists with `build`, `test`, `run`, `clean` targets.
13
+ - `make build` produces a binary.
14
+ - `make test` runs `go test ./...`.
15
+
16
+ ## Implementation Plan
17
+
18
+ - [x] Create `Makefile`.
19
+ - [x] Add `build` target: `go build -o savepoint main.go`.
20
+ - [x] Add `test` target: `go test ./...`.
21
+ - [x] Add `run` target: `go run main.go`.
22
+ - [x] Add `clean` target: `rm -f savepoint`.
23
+ - [x] Verify all targets work.
@@ -0,0 +1,61 @@
1
+ ---
2
+ type: epic-design
3
+ status: audited
4
+ ---
5
+
6
+ # Epic E02: Data Readers
7
+
8
+ ## Purpose
9
+
10
+ Read and parse the `.savepoint/` file structure in Go. Parse YAML frontmatter from task files, read router state, config theme, and discover releases/epics/tasks on disk.
11
+
12
+ ## What this epic adds
13
+
14
+ - Markdown frontmatter parser (`---\n...\n---`) using `gopkg.in/yaml.v3`.
15
+ - Task struct with phase support.
16
+ - Router state reader (`router.md` yaml block extraction).
17
+ - Config reader (`config.yml` theme parsing).
18
+ - Release/epic/task file discovery (walk directories).
19
+ - Error types for missing files, malformed yaml, schema rejection.
20
+
21
+ ## Definition of Done
22
+
23
+ - Can read any task `.md` file and parse frontmatter into a Task struct.
24
+ - Can read `router.md` and extract the Current state yaml block.
25
+ - Can read `config.yml` and parse theme colors.
26
+ - Can list all releases, epics within a release, and tasks within an epic.
27
+ - All parsing functions have unit tests.
28
+ - `go test ./internal/data/...` passes.
29
+
30
+ ## Components and files
31
+
32
+ ## Implemented As
33
+
34
+ - `internal/data/task.go` defines task metadata, column, progress stage, dependency, and progress structs.
35
+ - `internal/data/parser.go` extracts YAML frontmatter from markdown and maps task ID, objective/title, description, status/column, phase/stage, dependency, priority, points, tags, acceptance, notes, release, epic, and progress fields into `Task`.
36
+ - `internal/data/router.go` extracts and parses the `## Current state` fenced YAML block from `router.md`.
37
+ - `internal/data/config.go` reads `config.yml` theme values, fills missing theme fields from defaults, returns defaults when the file is missing, and surfaces malformed YAML/read errors.
38
+ - `internal/data/discover.go` finds the `.savepoint` root and lists release, epic, and task directories in stable order.
39
+ - `internal/data/errors.go` defines shared parser/discovery boundary error sentinels.
40
+
41
+ ## Audit Reconciliation
42
+
43
+ - Fixed parser field coverage for `status`, `phase`, `depends_on`, and the remaining task metadata fields covered by the `Task` struct.
44
+ - Fixed config boundary behavior so missing files default while malformed YAML and read errors are returned.
45
+ - Replaced discovery tests that depended on the live repository with deterministic temporary fixtures.
46
+ - Added parser tests for malformed YAML and task metadata mapping.
47
+ - Added the planned `internal/data/errors.go` boundary error file.
48
+
49
+ | Path | Purpose |
50
+ |------|---------|
51
+ | `internal/data/task.go` | Task struct, frontmatter parsing |
52
+ | `internal/data/parser.go` | Markdown YAML frontmatter extraction |
53
+ | `internal/data/router.go` | Router state reader |
54
+ | `internal/data/config.go` | Config/theme reader |
55
+ | `internal/data/discover.go` | Directory walking, file discovery |
56
+ | `internal/data/errors.go` | Error types |
57
+ | `internal/data/parser_test.go` | Frontmatter parser tests |
58
+ | `internal/data/config_test.go` | Config parsing tests |
59
+ | `internal/data/task_test.go` | Task parsing tests |
60
+ | `internal/data/router_test.go` | Router parsing tests |
61
+ | `internal/data/discover_test.go` | Discovery tests |
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: E02-data-readers/T001-task-struct
3
+ status: done
4
+ objective: "Define Task struct with phase support"
5
+ depends_on: [E01-go-setup/T003-directory-structure]
6
+ ---
7
+
8
+ # T001: Task Struct
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `internal/data/task.go` defines Task, ColumnType, ProgressStage structs.
13
+ - Task includes: ID, Title, Description, Epic, Release, Column, Stage, Priority, Points, Tags, Acceptance, Notes.
14
+ - ColumnType enum: planned, in_progress, done.
15
+ - ProgressStage enum: build, test, audit.
16
+ - Tests verify struct creation.
17
+
18
+ ## Implementation Plan
19
+
20
+ - [x] Create `internal/data/task.go`.
21
+ - [x] Define types and structs.
22
+ - [x] Write `internal/data/task_test.go`.
23
+ - [x] Run `go test ./internal/data/`.
24
+
25
+ ## Context Log
26
+
27
+ Files read: `internal/data/task.go`, `internal/data/task_test.go`
28
+ Estimated input tokens: ~700
29
+ Notes: Verified during E02 audit closeout. `go test ./internal/data/...`, `go test ./...`, and `go build ./...` passed.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: E02-data-readers/T002-frontmatter-parser
3
+ status: done
4
+ objective: "Parse YAML frontmatter from markdown task files"
5
+ depends_on: [E02-data-readers/T001-task-struct]
6
+ ---
7
+
8
+ # T002: Frontmatter Parser
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - Can parse `---\nyaml\n---\nbody` format from any `.md` file.
13
+ - Extracts id, status, phase, objective, depends_on from frontmatter.
14
+ - Returns structured Task or error for malformed files.
15
+ - Tests cover valid, missing frontmatter, malformed yaml cases.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Create `internal/data/parser.go`.
20
+ - [x] Implement frontmatter regex extraction.
21
+ - [x] Parse YAML with `gopkg.in/yaml.v3`.
22
+ - [x] Map parsed fields to Task struct.
23
+ - [x] Write `internal/data/parser_test.go`.
24
+ - [x] Run `go test`.
25
+
26
+ ## Context Log
27
+
28
+ Files read: `internal/data/parser.go`, `internal/data/parser_test.go`, `internal/data/task.go`
29
+ Estimated input tokens: ~1,500
30
+ Notes: Audit closeout replaced regex extraction with delimiter-based extraction, mapped task metadata fields including `status`, `phase`, and `depends_on`, and added malformed YAML coverage. `go test ./internal/data/...`, `go test ./...`, and `go build ./...` passed.
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: E02-data-readers/T003-router-reader
3
+ status: done
4
+ objective: "Read and parse router.md Current state block"
5
+ depends_on: [E02-data-readers/T002-frontmatter-parser]
6
+ ---
7
+
8
+ # T003: Router Reader
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - Reads `router.md` and extracts the `## Current state` yaml block.
13
+ - Parses state, release, epic, task, next_action fields.
14
+ - Returns error if router.md missing or block not found.
15
+ - Tests cover valid and missing router cases.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Create `internal/data/router.go`.
20
+ - [x] Implement `## Current state` block regex extraction.
21
+ - [x] Parse yaml block into RouterState struct.
22
+ - [x] Write `internal/data/router_test.go`.
23
+ - [x] Run `go test`.
24
+
25
+ ## Context Log
26
+
27
+ Files read: `internal/data/router.go`, `internal/data/router_test.go`
28
+ Estimated input tokens: ~700
29
+ Notes: Verified during E02 audit closeout. `go test ./internal/data/...`, `go test ./...`, and `go build ./...` passed.
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: E02-data-readers/T004-config-reader
3
+ status: done
4
+ objective: "Read config.yml and parse theme colors"
5
+ depends_on: [E02-data-readers/T003-router-reader]
6
+ ---
7
+
8
+ # T004: Config Reader
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - Reads `.savepoint/config.yml`.
13
+ - Parses theme colors (bg, surface, surface_2, border, text, accents).
14
+ - Returns default theme if config.yml missing.
15
+ - Tests cover valid config and missing file.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Create `internal/data/config.go`.
20
+ - [x] Define Config and Theme structs.
21
+ - [x] Parse YAML with defaults.
22
+ - [x] Write `internal/data/config_test.go`.
23
+ - [x] Run `go test`.
24
+
25
+ ## Context Log
26
+
27
+ Files read: `internal/data/config.go`, `internal/data/config_test.go`
28
+ Estimated input tokens: ~900
29
+ Notes: Audit closeout limited default fallback to missing config files, returned malformed YAML/read errors, and added partial-default and malformed YAML coverage. `go test ./internal/data/...`, `go test ./...`, and `go build ./...` passed.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: E02-data-readers/T005-discovery
3
+ status: done
4
+ objective: "Walk .savepoint directory to discover releases, epics, and tasks"
5
+ depends_on: [E02-data-readers/T004-config-reader]
6
+ ---
7
+
8
+ # T005: Discovery
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - Can list all releases under `.savepoint/releases/`.
13
+ - Can list all epics within a release.
14
+ - Can list all tasks within an epic.
15
+ - Can find `.savepoint` root by walking up from cwd.
16
+ - Tests cover discovery logic.
17
+
18
+ ## Implementation Plan
19
+
20
+ - [x] Create `internal/data/discover.go`.
21
+ - [x] Implement `FindSavepointRoot(start string)`.
22
+ - [x] Implement `ListReleases(root)`, `ListEpics(root, release)`, `ListTasks(root, release, epic)`.
23
+ - [x] Write `internal/data/discover_test.go`.
24
+ - [x] Run `go test`.
25
+
26
+ ## Context Log
27
+
28
+ Files read: `internal/data/discover.go`, `internal/data/discover_test.go`, `internal/data/errors.go`
29
+ Estimated input tokens: ~800
30
+ Notes: discover_test.go had unused `os`/`path/filepath` imports causing build failure — removed. Audit closeout moved discovery coverage to deterministic temp-directory fixtures and added a shared missing-root error sentinel. All 4 discovery tests pass. `go test ./internal/data/...`, `go test ./...`, and `go build ./...` passed.
@@ -0,0 +1,38 @@
1
+ ---
2
+ type: epic-design
3
+ status: planned
4
+ ---
5
+
6
+ # Epic E03: Board TUI Core
7
+
8
+ ## Purpose
9
+
10
+ Build the core Bubble Tea model, update loop, view rendering, styles, and layout system. This is the engine — no components yet, just the skeleton that renders a responsive grid.
11
+
12
+ ## What this epic adds
13
+
14
+ - `Model` struct with tasks, focus state, selected epic/release, overlay mode, dimensions.
15
+ - `Init()`, `Update(msg)`, `View()` methods.
16
+ - Atari-Noir color palette in `internal/styles/`.
17
+ - Manual layout calculation: column widths, epic panel width, responsive breakpoints.
18
+ - `tea.WindowSizeMsg` handling for terminal resize.
19
+
20
+ ## Definition of Done
21
+
22
+ - `go run main.go` launches and shows a bordered 3-column grid.
23
+ - Columns resize correctly on terminal resize.
24
+ - At 3 breakpoints: >=120 cols shows epic panel + 3 columns; 80-119 shows 3 columns; <80 shows 1 column.
25
+ - Colors match Atari-Noir palette in truecolor; degrade gracefully in 256/16-color modes.
26
+ - `q` quits cleanly.
27
+ - No layout break at any width.
28
+
29
+ ## Components and files
30
+
31
+ | Path | Purpose |
32
+ |------|---------|
33
+ | `internal/board/model.go` | Model struct and Init |
34
+ | `internal/board/update.go` | Update loop, message handling |
35
+ | `internal/board/view.go` | View composition |
36
+ | `internal/styles/palette.go` | Atari-Noir hex colors |
37
+ | `internal/styles/styles.go` | Lip Gloss style definitions |
38
+ | `internal/board/layout.go` | Width/height calculations |
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: E03-board-tui-core/T001-model
3
+ status: done
4
+ objective: "Define Model struct with all state fields"
5
+ depends_on: [E02-data-readers/T005-discovery]
6
+ ---
7
+
8
+ # T001: Model Struct
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `internal/board/model.go` defines Model with all state.
13
+ - Fields: Tasks, FocusedColumn, FocusedTask, SelectedEpic, SelectedRelease, Overlay, Width, Height.
14
+ - `Init()` returns `tea.Batch()` with initial commands.
15
+ - `NewModel()` accepts loaded data and returns initialized Model.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Create `internal/board/model.go`.
20
+ - [x] Define Model struct and constructor.
21
+ - [x] Implement `Init()` method.
22
+ - [x] Write tests.
23
+ - [x] Run `go test`.
24
+
25
+ ## Context Log
26
+
27
+ Files read: `internal/data/task.go`, `internal/board/board.go`, `go.mod`, `E03-board-tui-core/Design.md`
28
+ Estimated input tokens: ~900
29
+ Notes: `go test ./internal/board/ -v` — 4 tests pass. `go build ./...` clean. Model groups tasks by column on construction; empty column defaults to planned.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: E03-board-tui-core/T002-update-loop
3
+ status: done
4
+ objective: "Implement Update(msg) with key and window size handling"
5
+ depends_on: [E03-board-tui-core/T001-model]
6
+ ---
7
+
8
+ # T002: Update Loop
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `Update(msg)` handles `tea.KeyMsg` for `q`, `ctrl+c`.
13
+ - `Update(msg)` handles `tea.WindowSizeMsg` for terminal resize.
14
+ - Returns `tea.Quit` on `q`.
15
+ - Tests verify update behavior.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Create `internal/board/update.go`.
20
+ - [x] Implement `Update(msg tea.Msg)` with type switch.
21
+ - [x] Add key handling.
22
+ - [x] Add window size handling.
23
+ - [x] Write tests.
24
+ - [x] Run `go test`.
25
+
26
+ ## Context Log
27
+
28
+ Files read: `internal/board/model.go`, `T001-model.md`, `E03-board-tui-core/Design.md`
29
+ Estimated input tokens: ~600
30
+ Notes: `go test ./internal/board/ -v` — 8 pass. `go build ./...` clean. Update returns `(Model, tea.Cmd)` not `(tea.Model, tea.Cmd)` — keeps type concrete for T003 View composition.
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: E03-board-tui-core/T003-view
3
+ status: done
4
+ objective: "Render a bordered 3-column grid via View()"
5
+ depends_on: [E03-board-tui-core/T002-update-loop]
6
+ ---
7
+
8
+ # T003: View Rendering
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `View()` renders a header, 3-column board, and status bar.
13
+ - Columns have borders using Lip Gloss.
14
+ - Board fills terminal width.
15
+ - No wrapping or layout breaks.
16
+
17
+ ## Implementation Plan
18
+
19
+ - [x] Create `internal/board/view.go`.
20
+ - [x] Implement `View()` composing header, board, footer.
21
+ - [x] Use `lipgloss.JoinHorizontal` and `JoinVertical`.
22
+ - [x] Verify rendering at multiple terminal sizes.
23
+
24
+ ## Context Log
25
+
26
+ Files read: `internal/board/model.go`, `internal/board/update.go`, `.savepoint/visual-identity.md`, `internal/data/task.go`, `E03-board-tui-core/Design.md`, `T003-view.md`
27
+ Estimated input tokens: ~2000
28
+ Notes: `go test ./internal/board/ ./internal/styles/ -v` — 17 pass. `go build ./...` clean. Created `internal/styles/palette.go` (Atari-Noir hex constants) and `internal/styles/styles.go` (Lip Gloss style vars). `view.go` uses `lipgloss.JoinHorizontal` for 3 columns, `JoinVertical` for header+board+status. Column content width = (termW - 12) / 3; fallback default=80 when Width=0. Focused column gets orange border; focused task gets orange text.
29
+
30
+ ## Drift Notes
31
+
32
+ - Drift: `internal/styles/palette.go` added, not yet in Codebase Map.
33
+ - Drift: `internal/styles/styles.go` added, not yet in Codebase Map.
34
+ - Drift: `internal/board/view.go` added, not yet in Codebase Map.