savepoint 1.0.1 → 1.0.3

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 (278) hide show
  1. package/.claude/settings.local.json +15 -1
  2. package/.golangci.yml +11 -0
  3. package/.savepoint/Design.md +52 -46
  4. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +1 -1
  5. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +1 -1
  6. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +1 -1
  7. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +1 -1
  8. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/{Design.md → E06-Detail.md} +5 -3
  9. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +1 -1
  10. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +1 -1
  11. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +1 -1
  12. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +2 -0
  13. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/{Design.md → E01-Detail.md} +9 -1
  14. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/{T007-next-activity-header.md → T001-next-activity-header.md} +13 -12
  15. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +9 -9
  16. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +2 -2
  17. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +13 -12
  18. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +14 -13
  19. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +25 -15
  20. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md +57 -0
  21. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md +124 -0
  22. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/{Design.md → E02-Detail.md} +12 -3
  23. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +11 -8
  24. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +12 -7
  25. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +9 -5
  26. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +30 -9
  27. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +195 -0
  28. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +45 -0
  29. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T001-border-resize-fix.md +40 -0
  30. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T002-next-activity-below-header.md +64 -0
  31. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T003-checkbox-rendering-fix.md +56 -0
  32. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T005-unify-status-glyphs.md +65 -0
  33. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +36 -0
  34. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Audit.md +167 -0
  35. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Detail.md +51 -0
  36. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T001-sidebar-focusable-navigation.md +65 -0
  37. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T002-epic-detail-overlay.md +73 -0
  38. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T003-epic-status-glyphs.md +73 -0
  39. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +237 -0
  40. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +54 -0
  41. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +45 -0
  42. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +40 -0
  43. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +47 -0
  44. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +98 -0
  45. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +33 -0
  46. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +62 -0
  47. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +56 -0
  48. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +63 -0
  49. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +44 -0
  50. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +35 -0
  51. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +40 -0
  52. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +45 -0
  53. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +26 -0
  54. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +33 -0
  55. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +34 -0
  56. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +33 -0
  57. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +336 -0
  58. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +61 -0
  59. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +37 -0
  60. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +28 -0
  61. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +46 -0
  62. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +27 -0
  63. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +25 -0
  64. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +26 -0
  65. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +26 -0
  66. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +333 -0
  67. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +68 -0
  68. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +26 -0
  69. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +27 -0
  70. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +28 -0
  71. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +29 -0
  72. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +27 -0
  73. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +29 -0
  74. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +29 -0
  75. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +27 -0
  76. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +207 -0
  77. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +65 -0
  78. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +24 -0
  79. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +28 -0
  80. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +29 -0
  81. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +27 -0
  82. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +28 -0
  83. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +31 -0
  84. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +36 -0
  85. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +25 -0
  86. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +21 -0
  87. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +22 -0
  88. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +29 -0
  89. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +444 -0
  90. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +45 -0
  91. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +35 -0
  92. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +19 -0
  93. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +29 -0
  94. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +25 -0
  95. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +37 -0
  96. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +118 -0
  97. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +73 -0
  98. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +66 -0
  99. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +35 -0
  100. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +60 -0
  101. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +33 -0
  102. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +37 -0
  103. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +40 -0
  104. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +37 -0
  105. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +267 -0
  106. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +54 -0
  107. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +39 -0
  108. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +42 -0
  109. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +33 -0
  110. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +35 -0
  111. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +27 -0
  112. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +29 -0
  113. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +28 -0
  114. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +43 -0
  115. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +31 -0
  116. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +28 -0
  117. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +30 -0
  118. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +27 -0
  119. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +28 -0
  120. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +26 -0
  121. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +28 -0
  122. package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +25 -0
  123. package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +27 -0
  124. package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +27 -0
  125. package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +29 -0
  126. package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +31 -0
  127. package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +34 -0
  128. package/.savepoint/releases/v1.1/v1.1-PRD.md +139 -0
  129. package/.savepoint/router.md +29 -108
  130. package/AGENTS.md +69 -111
  131. package/Makefile +19 -3
  132. package/README.md +6 -6
  133. package/agent-skills/savepoint-audit/SKILL.md +87 -35
  134. package/agent-skills/savepoint-build-task/SKILL.md +9 -4
  135. package/agent-skills/savepoint-create-plan/SKILL.md +10 -5
  136. package/agent-skills/savepoint-create-task/SKILL.md +44 -31
  137. package/agent-skills/savepoint-draft-prd/SKILL.md +8 -3
  138. package/agent-skills/savepoint-system-design/SKILL.md +8 -3
  139. package/agent_skills_test.go +91 -0
  140. package/cmd/board.go +59 -0
  141. package/cmd/board_test.go +137 -0
  142. package/cmd/doctor.go +53 -0
  143. package/cmd/doctor_test.go +146 -0
  144. package/cmd/init.go +63 -0
  145. package/cmd/init_test.go +104 -0
  146. package/internal/board/board.go +69 -49
  147. package/internal/board/board_test.go +83 -67
  148. package/internal/board/card.go +71 -20
  149. package/internal/board/card_test.go +141 -12
  150. package/internal/board/column.go +77 -11
  151. package/internal/board/column_test.go +63 -13
  152. package/internal/board/detail.go +107 -72
  153. package/internal/board/detail_test.go +117 -26
  154. package/internal/board/epic_panel.go +211 -18
  155. package/internal/board/epic_panel_test.go +637 -14
  156. package/internal/board/help.go +1 -0
  157. package/internal/board/help_test.go +1 -0
  158. package/internal/board/integration_test.go +266 -0
  159. package/internal/board/interfaces.go +65 -0
  160. package/internal/board/interfaces_test.go +114 -0
  161. package/internal/board/io.go +93 -0
  162. package/internal/board/layout.go +12 -2
  163. package/internal/board/layout_test.go +17 -0
  164. package/internal/board/model.go +130 -52
  165. package/internal/board/plain.go +88 -0
  166. package/internal/board/plain_test.go +117 -0
  167. package/internal/board/release.go +1 -9
  168. package/internal/board/release_test.go +6 -6
  169. package/internal/board/render_policy_test.go +77 -0
  170. package/internal/board/status.go +23 -0
  171. package/internal/board/theme.go +24 -0
  172. package/internal/board/theme_test.go +31 -0
  173. package/internal/board/transitions.go +113 -88
  174. package/internal/board/transitions_test.go +164 -141
  175. package/internal/board/tui.go +32 -0
  176. package/internal/board/update.go +472 -94
  177. package/internal/board/update_test.go +447 -0
  178. package/internal/board/util.go +76 -0
  179. package/internal/board/view.go +139 -22
  180. package/internal/board/view_test.go +171 -3
  181. package/internal/board/watch.go +57 -9
  182. package/internal/buildtool/main.go +211 -0
  183. package/internal/buildtool/main_test.go +46 -0
  184. package/internal/data/config.go +17 -3
  185. package/internal/data/config_test.go +49 -0
  186. package/internal/data/discover.go +26 -0
  187. package/internal/data/discover_test.go +34 -10
  188. package/internal/data/errors.go +4 -0
  189. package/internal/data/lifecycle.go +13 -6
  190. package/internal/data/lifecycle_test.go +14 -11
  191. package/internal/data/parser.go +29 -6
  192. package/internal/data/parser_test.go +66 -7
  193. package/internal/data/task.go +1 -0
  194. package/internal/data/write.go +85 -11
  195. package/internal/data/write_test.go +167 -0
  196. package/internal/doctor/checks.go +567 -0
  197. package/internal/doctor/checks_test.go +716 -0
  198. package/internal/doctor/gates.go +193 -0
  199. package/internal/doctor/gates_test.go +166 -0
  200. package/internal/doctor/interfaces.go +64 -0
  201. package/internal/doctor/interfaces_test.go +104 -0
  202. package/internal/doctor/repairs.go +80 -0
  203. package/internal/doctor/repairs_test.go +81 -0
  204. package/internal/doctor/report.go +157 -0
  205. package/internal/doctor/report_test.go +89 -0
  206. package/internal/init/clipboard.go +146 -0
  207. package/internal/init/clipboard_test.go +74 -0
  208. package/internal/init/install.go +16 -0
  209. package/internal/init/integration_test.go +197 -0
  210. package/internal/init/prompt.go +14 -0
  211. package/internal/init/prompt_test.go +77 -0
  212. package/internal/init/scaffold.go +59 -0
  213. package/internal/init/scaffold_test.go +179 -0
  214. package/internal/init/template_freshness_test.go +56 -0
  215. package/internal/init/validate.go +85 -0
  216. package/internal/init/validate_test.go +141 -0
  217. package/internal/init/write.go +73 -0
  218. package/internal/init/write_test.go +91 -0
  219. package/internal/styles/palette.go +3 -3
  220. package/internal/styles/styles.go +39 -12
  221. package/internal/styles/styles_test.go +133 -0
  222. package/internal/testutil/fixture.go +113 -0
  223. package/internal/testutil/fs.go +26 -0
  224. package/main.go +107 -1
  225. package/package.json +2 -2
  226. package/project-audit/audit_report_glm_5.1.md +411 -0
  227. package/project-audit/audit_report_opus_4.6 +406 -0
  228. package/project-audit/consolidated-audit-report.md +456 -0
  229. package/savepoint +0 -0
  230. package/templates/project/.savepoint/Design.md +2 -2
  231. package/templates/project/.savepoint/router.md +15 -14
  232. package/templates/project/AGENTS.md +56 -98
  233. package/templates/project/agent-skills/savepoint-audit/SKILL.md +87 -0
  234. package/templates/project/agent-skills/savepoint-build-task/SKILL.md +44 -0
  235. package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +33 -0
  236. package/templates/project/agent-skills/savepoint-create-task/SKILL.md +44 -0
  237. package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +37 -0
  238. package/templates/project/agent-skills/savepoint-system-design/SKILL.md +38 -0
  239. package/templates/prompts/audit-reconciliation.prompt.md +35 -30
  240. package/templates/prompts/design.prompt.md +3 -1
  241. package/templates/prompts/epic-design.prompt.md +3 -3
  242. package/templates/prompts/task-breakdown.prompt.md +1 -1
  243. package/templates/prompts/task-building.prompt.md +1 -1
  244. package/templates/prompts/task-planning.prompt.md +1 -1
  245. package/.savepoint/audit/E01-go-setup/proposals.md +0 -166
  246. package/.savepoint/audit/E01-go-setup/snapshot.md +0 -71
  247. package/.savepoint/audit/E01-scaffolding/proposals/AGENTS.md +0 -66
  248. package/.savepoint/audit/E01-scaffolding/proposals/Design.md +0 -210
  249. package/.savepoint/audit/E01-scaffolding/proposals/epic-Design.md +0 -117
  250. package/.savepoint/audit/E01-scaffolding/proposals/quality-review.md +0 -101
  251. package/.savepoint/audit/E01-scaffolding/snapshot.md +0 -54
  252. package/.savepoint/audit/E02-data-model/snapshot.md +0 -128
  253. package/.savepoint/audit/E02-data-readers/proposals.md +0 -123
  254. package/.savepoint/audit/E02-data-readers/snapshot.md +0 -54
  255. package/.savepoint/audit/E03-board-tui-core/proposals.md +0 -146
  256. package/.savepoint/audit/E03-board-tui-core/snapshot.md +0 -57
  257. package/.savepoint/audit/E03-cli-foundation/snapshot.md +0 -106
  258. package/.savepoint/audit/E04-board-components/proposals.md +0 -118
  259. package/.savepoint/audit/E04-board-components/snapshot.md +0 -77
  260. package/.savepoint/audit/E04-templates-and-prompts/snapshot.md +0 -115
  261. package/.savepoint/audit/E05-init-command/snapshot.md +0 -125
  262. package/.savepoint/audit/E05-phase-transitions/proposals.md +0 -83
  263. package/.savepoint/audit/E05-phase-transitions/snapshot.md +0 -36
  264. package/.savepoint/audit/E06-atari-noir-layout/proposals.md +0 -130
  265. package/.savepoint/audit/E06-atari-noir-layout/snapshot.md +0 -84
  266. package/.savepoint/audit/E06-tui-board/snapshot.md +0 -64
  267. package/.savepoint/audit/E07-audit-pipeline/snapshot.md +0 -165
  268. package/.savepoint/audit/E08-board-workflow-cleanup/snapshot.md +0 -65
  269. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +0 -36
  270. package/ink-cli-ui-design.zip +0 -0
  271. package/main.exe +0 -0
  272. package/savepoint.exe +0 -0
  273. /package/.savepoint/releases/v1/epics/E01-go-setup/{Design.md → E01-Detail.md} +0 -0
  274. /package/.savepoint/releases/v1/epics/E02-data-readers/{Design.md → E02-Detail.md} +0 -0
  275. /package/.savepoint/releases/v1/epics/E03-board-tui-core/{Design.md → E03-Detail.md} +0 -0
  276. /package/.savepoint/releases/v1/epics/E04-board-components/{Design.md → E04-Detail.md} +0 -0
  277. /package/.savepoint/releases/v1/epics/E05-phase-transitions/{Design.md → E05-Detail.md} +0 -0
  278. /package/.savepoint/releases/v1/{PRD.md → v1-PRD.md} +0 -0
@@ -1,101 +0,0 @@
1
- ---
2
- type: quality-review
3
- epic: E01-scaffolding
4
- reviewed: 2026-04-27
5
- advisory: true
6
- ---
7
-
8
- # Quality Review: E01-scaffolding
9
-
10
- Semantic review of the scaffolded source against the 10 Code Style rules from `AGENTS.md`. Advisory only — no blocking issues.
11
-
12
- ---
13
-
14
- ## Rule-by-rule findings
15
-
16
- ### 1. One job per file ✓
17
-
18
- `src/cli.ts` handles argument dispatch and output. `src/version.ts` is a single export. No file does two things.
19
-
20
- ### 2. One-sentence rule ✓
21
-
22
- `printHelp()` — prints the placeholder help banner. `main()` — dispatches on argv and calls the appropriate output function. Both are one-sentence describable.
23
-
24
- ### 3. Test what branches ⚠ advisory
25
-
26
- `src/cli.ts` has a branch on `command === "--version"`. The smoke test in `test/smoke.test.ts` only covers `src/version.ts`. The CLI dispatch logic is untested.
27
-
28
- This is acceptable at scaffold stage — the branches contain only placeholder output and will be replaced in `cli-foundation`. Flag for that epic: when real dispatch lands, cover every branch.
29
-
30
- ### 4. Types are documentation ✓
31
-
32
- No `any` anywhere in source or test. Return types are declared (`void`). ESLint is configured to error on `@typescript-eslint/no-explicit-any`.
33
-
34
- ### 5. Build, don't speculate ✓
35
-
36
- No abstraction layers, registries, or plugin systems. Placeholder CLI is minimal: two functions and a `main()` call. Nothing exists for hypothetical future behavior.
37
-
38
- ### 6. Errors at boundaries ✓ (n/a at scaffold)
39
-
40
- No real system boundaries in placeholder code. The CLI entrypoint reads only `process.argv`, which cannot throw. Acceptable for a placeholder.
41
-
42
- ### 7. One source of truth ✓
43
-
44
- Version string is declared once in `src/version.ts` and imported by `src/cli.ts`. `package.json` also contains `"version": "0.1.0"` — this is expected (npm requires it there), not a violation. When the CLI reads its own version at runtime, it imports from `src/version.ts`, not from `package.json` directly.
45
-
46
- > **Recommendation for `cli-foundation`:** consider whether `version.ts` should derive from `package.json` at build time (via `tsup` banner injection or a build-time const) to eliminate the manual sync requirement. Not urgent at `0.1.0`.
47
-
48
- ### 8. Comments explain WHY ✓
49
-
50
- No comments in any source file. Config files have no inline comments. Good.
51
-
52
- ### 9. Content in data files ✓ (n/a at scaffold)
53
-
54
- No user-facing content exists yet. Config is in conventional JSON/TS config files.
55
-
56
- ### 10. Small diffs ✓
57
-
58
- Epic split into 5 tasks with clear separation: package metadata → TypeScript build → test runner → lint/format → verification. Each task touched a minimal set of files with declared dependencies.
59
-
60
- ---
61
-
62
- ## Structural observations
63
-
64
- ### Dual vitest config files
65
-
66
- `vitest.config.ts` and `vitest.config.js` are identical. The `.js` variant is the one actually used by `npm test` (required for `--configLoader runner`). The `.ts` variant is unused but exists as the "source of truth" for IDE tooling and type checking.
67
-
68
- **Recommendation:** document this in a comment in `vitest.config.ts`, or remove it and keep only `.js`. The dual-file situation will confuse future contributors who edit `.ts` expecting it to take effect.
69
-
70
- ### scripts/vitest-preload.cjs complexity
71
-
72
- The preload script stubs two unrelated things: a `net use` child_process call (Windows network drive detection in Vitest's environment) and `esbuild.transform`/`transformSync` (a secondary Windows compat issue). The stubs are correct and well-structured.
73
-
74
- **Recommendation:** add a single-line comment per stub explaining the specific Windows issue being worked around (bug reference or symptom description). The WHY is not obvious — a future contributor would not know whether these stubs are still needed after a Vitest upgrade.
75
-
76
- ### test/smoke.test.ts include pattern
77
-
78
- `vitest.config.js` uses `include: ["test/**/*.test.js"]` but the actual test file is `smoke.test.ts`. This works because Vitest transforms TypeScript to JS before matching, but the pattern is misleading.
79
-
80
- **Recommendation:** change include to `["test/**/*.test.ts"]` to match what actually exists in the repo.
81
-
82
- ---
83
-
84
- ## Must Fix Before Close
85
-
86
- None.
87
-
88
- ## Carry Forward
89
-
90
- - Add CLI branch tests when real dispatch is implemented in `E03-cli-foundation`.
91
- - Decide in `E03-cli-foundation` whether `src/version.ts` should derive from `package.json`.
92
-
93
- ## Already Fixed
94
-
95
- - `vitest.config.ts` now documents the dual-config setup.
96
- - `scripts/vitest-preload.cjs` now explains the Windows `net use` and esbuild workarounds.
97
- - Vitest include patterns now match `test/**/*.test.ts`.
98
-
99
- ## Summary
100
-
101
- No blocking issues remain for `E01-scaffolding`.
@@ -1,54 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E01-scaffolding
4
- created: 2026-04-27
5
- ---
6
-
7
- # Audit Snapshot: E01-scaffolding
8
-
9
- All files are new — this is the first auditable baseline.
10
-
11
- ## Source file tree
12
-
13
- ```
14
- src/
15
- cli.ts — CLI entrypoint; placeholder help/version output
16
- version.ts — single export for package version string
17
- test/
18
- smoke.test.ts — Vitest smoke test asserting exported version
19
- scripts/
20
- vitest-preload.cjs — Windows runner workaround (stubs net use + esbuild)
21
- ```
22
-
23
- ## Config / metadata files
24
-
25
- | Path | Purpose |
26
- | ------------------- | ------------------------------------------------------------------ |
27
- | `package.json` | Package name, bin mapping, scripts, devDependencies |
28
- | `package-lock.json` | Locked dependency graph |
29
- | `tsconfig.json` | Strict NodeNext TypeScript compiler settings |
30
- | `tsup.config.ts` | Build entry and output config (ESM, node20) |
31
- | `vitest.config.ts` | Vitest config (TypeScript source) |
32
- | `vitest.config.js` | Vitest config (JS copy used by npm test via --configLoader runner) |
33
- | `eslint.config.js` | Flat ESLint config — rejects `any` in TypeScript |
34
- | `.prettierrc.json` | Prettier rules (double quotes, trailing commas) |
35
- | `.prettierignore` | Excludes dist/, coverage/, node_modules/ from formatting |
36
- | `.gitignore` | Excludes generated artifacts and local env files |
37
- | `README.md` | Minimal development README |
38
- | `LICENSE` | MIT license |
39
-
40
- ## Quality gates (all passed)
41
-
42
- - `npm run build` ✓
43
- - `npm run typecheck` ✓
44
- - `npm run lint` ✓
45
- - `npm run format:check` ✓
46
- - `npm test` ✓
47
-
48
- ## Deviations from epic Design
49
-
50
- | Item | Status | Note |
51
- | ---------------------------- | ------ | --------------------------------------------------------------------------- |
52
- | `vitest.config.js` | extra | Duplicate of `.ts` variant; required for `--configLoader runner` on Windows |
53
- | `scripts/vitest-preload.cjs` | extra | Windows-specific: stubs `net use` child_process call and esbuild transforms |
54
- | `.prettierignore` | extra | Not listed in Design but conventional; consistent with `.gitignore` |
@@ -1,128 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E02-data-model
4
- created: 2026-04-27
5
- manual: true
6
- ---
7
-
8
- # Audit Snapshot: E02-data-model
9
-
10
- Manual snapshot generated because `savepoint audit` is not implemented yet.
11
-
12
- ## Source file tree
13
-
14
- ```
15
- src/
16
- domain/
17
- config.ts - config defaults and typed project config model
18
- epic.ts - epic Design frontmatter model
19
- ids.ts - release, epic, and task ID parsing/formatting
20
- release.ts - release PRD frontmatter model
21
- router.ts - router state model and validation
22
- status.ts - task status values and transition validation
23
- task.ts - task frontmatter and document validation
24
- fs/
25
- markdown.ts - markdown/frontmatter read boundary with path-aware errors
26
- project.ts - .savepoint root and scoped path helpers
27
- readers/
28
- config.ts - read-only config.yml reader
29
- epic.ts - read-only epic Design reader
30
- release.ts - read-only release PRD reader
31
- router.ts - read-only router Current state reader
32
- tasks.ts - epic task-set reader with graph validation
33
- validation/
34
- dependencies.ts - duplicate ID, missing dependency, and cycle detection
35
- test/
36
- domain/ - unit tests for config, epic, IDs, release, router, status, task
37
- fs/ - unit tests for markdown and project helpers
38
- readers/ - unit tests for config, epic, release, router, task-set readers
39
- validation/ - unit tests for dependency graph validation
40
- ```
41
-
42
- ## Config / metadata changes
43
-
44
- | Path | Purpose |
45
- | ------------------------ | -------------------------------------------------------------- |
46
- | `package.json` | Adds `js-yaml` runtime dependency and `@types/js-yaml`. |
47
- | `package-lock.json` | Locks the new YAML parser dependency graph. |
48
- | `.prettierignore` | Excludes `.claude/` from Prettier traversal. |
49
- | `.savepoint/router.md` | Manually advances E02 to `audit-pending`. |
50
- | `AGENTS.md` | Workflow text was tightened during E02 planning/building. |
51
- | `README.md` | Marketing/readme copy changed outside the E02 runtime layer. |
52
- | `.savepoint/metrics/*` | Context-benchmark notes changed outside the E02 runtime layer. |
53
- | `E02-data-model/tasks/*` | Seven planned and completed E02 task files. |
54
-
55
- ## Changed files
56
-
57
- Tracked modified files:
58
-
59
- - `.prettierignore`
60
- - `.savepoint/metrics/context-bench.md`
61
- - `.savepoint/router.md`
62
- - `AGENTS.md`
63
- - `README.md`
64
- - `package-lock.json`
65
- - `package.json`
66
-
67
- New E02 files:
68
-
69
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T001-domain-ids-status.md`
70
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md`
71
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T003-task-documents.md`
72
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T004-release-epic-router-config-readers.md`
73
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T005-dependency-validation.md`
74
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T006-epic-task-set-reader.md`
75
- - `.savepoint/releases/v1/epics/E02-data-model/tasks/T007-quality-gates.md`
76
- - `src/domain/config.ts`
77
- - `src/domain/epic.ts`
78
- - `src/domain/ids.ts`
79
- - `src/domain/release.ts`
80
- - `src/domain/router.ts`
81
- - `src/domain/status.ts`
82
- - `src/domain/task.ts`
83
- - `src/fs/markdown.ts`
84
- - `src/fs/project.ts`
85
- - `src/readers/config.ts`
86
- - `src/readers/epic.ts`
87
- - `src/readers/release.ts`
88
- - `src/readers/router.ts`
89
- - `src/readers/tasks.ts`
90
- - `src/validation/dependencies.ts`
91
- - `test/domain/config.test.ts`
92
- - `test/domain/epic.test.ts`
93
- - `test/domain/ids.test.ts`
94
- - `test/domain/release.test.ts`
95
- - `test/domain/router.test.ts`
96
- - `test/domain/status.test.ts`
97
- - `test/domain/task.test.ts`
98
- - `test/fs/markdown.test.ts`
99
- - `test/fs/project.test.ts`
100
- - `test/readers/config.test.ts`
101
- - `test/readers/epic.test.ts`
102
- - `test/readers/release.test.ts`
103
- - `test/readers/router.test.ts`
104
- - `test/readers/tasks.test.ts`
105
- - `test/validation/dependencies.test.ts`
106
-
107
- Local untracked file outside E02 scope:
108
-
109
- - `.claude/settings.local.json`
110
-
111
- ## Quality gates
112
-
113
- - `npm run build` passed.
114
- - `npm run typecheck` passed.
115
- - `npm run lint` passed.
116
- - `npm run format:check` initially failed on E02 task markdown; after Prettier formatting, it passed.
117
- - `npm test` passed outside the sandbox: 16 files, 176 tests. Inside the sandbox it failed with `spawn EPERM` while Vitest/esbuild tried to start a child process.
118
-
119
- ## Deviations from epic Design
120
-
121
- | Item | Status | Note |
122
- | --------------------- | ------ | ------------------------------------------------------------------------------------------- |
123
- | Audit snapshot | manual | Generated by the agent because the E07 audit CLI does not exist yet. |
124
- | Router state | manual | Advanced directly to `audit-pending` for E02 because the CLI transition does not exist yet. |
125
- | `done` transitions | fixed | `done -> review` is allowed so completed work can be reopened for audit-stale rechecks. |
126
- | Config accent values | fixed | Config defaults ignore non-string custom accent values before merging. |
127
- | README/metrics edits | extra | Present in working tree but not part of the E02 data-model runtime layer. |
128
- | `.claude/` local file | extra | Local untracked settings are ignored by Prettier but not by Git. |
@@ -1,123 +0,0 @@
1
- # Audit Proposals: E02-data-readers
2
-
3
- ## Target File
4
-
5
- `.savepoint/Design.md`
6
-
7
- ## Replace
8
-
9
- ```md
10
- - **Template asset boundary:** established in epic `E04-templates-and-prompts` (2026-04-27). Project scaffolding and workflow prompts now live as versioned markdown/YAML assets under `templates/`, with small TypeScript helpers in `src/templates/` for manifest lookup, path resolution, loading, and interpolation.
11
- ```
12
-
13
- ## With
14
-
15
- ```md
16
- - **Go data-reader boundary:** established in epic `E02-data-readers` (2026-05-01). `internal/data` owns Savepoint file parsing and discovery for the Go implementation: task frontmatter models, markdown YAML extraction, router state parsing, config theme defaults, and release/epic/task directory listing.
17
- - **Template asset boundary:** established in epic `E04-templates-and-prompts` (2026-04-27). Project scaffolding and workflow prompts now live as versioned markdown/YAML assets under `templates/`, with small TypeScript helpers in `src/templates/` for manifest lookup, path resolution, loading, and interpolation.
18
- ```
19
-
20
- ## Target File
21
-
22
- `.savepoint/Design.md`
23
-
24
- ## Replace
25
-
26
- ```md
27
- ## 12. Distribution & build
28
- ```
29
-
30
- ## With
31
-
32
- ```md
33
- ## 12. Distribution & build
34
-
35
- > Audit note: the live repository is transitioning from the documented TypeScript/Node implementation to a Go module (`github.com/opencode/savepoint`). The architecture document still contains substantial TypeScript-era implementation detail and should be reconciled as Go epics are audited.
36
- ```
37
-
38
- ## Target File
39
-
40
- `AGENTS.md`
41
-
42
- ## Replace
43
-
44
- ```md
45
- | `src/domain/config.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Config defaults and typed project config model |
46
- | `src/domain/epic.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Epic Design frontmatter model and validation |
47
- | `src/domain/ids.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Release, epic, and task ID parsing and formatting |
48
- | `src/domain/release.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Release PRD frontmatter model and validation |
49
- | `src/domain/router.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Router state values and validation |
50
- | `src/domain/status.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Task status values and transition validation |
51
- | `src/domain/task.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Task frontmatter/document model and validation |
52
- | `src/fs/markdown.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Markdown/frontmatter reader with path-aware boundary errors |
53
- | `src/fs/project.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Project root discovery and scoped `.savepoint` path helpers |
54
- | `src/readers/config.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only `config.yml` reader with defaults |
55
- | `src/readers/epic.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only epic Design reader |
56
- | `src/readers/release.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only release PRD reader |
57
- | `src/readers/router.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only router Current state reader |
58
- | `src/readers/tasks.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Epic task-set reader with graph validation |
59
- ```
60
-
61
- ## With
62
-
63
- ```md
64
- | `internal/data/task.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Task, column, progress stage, dependency, and metadata structs for Go data readers |
65
- | `internal/data/parser.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Markdown YAML frontmatter extraction and task frontmatter parsing |
66
- | `internal/data/router.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Router current-state YAML block extraction and parsing |
67
- | `internal/data/config.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Savepoint config/theme parsing with default theme fallback |
68
- | `internal/data/discover.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | `.savepoint` root discovery and release, epic, and task directory listing |
69
- ```
70
-
71
- ## Target File
72
-
73
- `.savepoint/releases/v1/epics/E02-data-readers/Design.md`
74
-
75
- ## Insert After
76
-
77
- ```md
78
- ## Components and files
79
- ```
80
-
81
- ## With
82
-
83
- ```md
84
- ## Implemented As
85
-
86
- - `internal/data/task.go` defines task metadata, column, progress stage, dependency, and progress structs.
87
- - `internal/data/parser.go` extracts YAML frontmatter from markdown and currently maps the task ID and objective into `Task`.
88
- - `internal/data/router.go` extracts and parses the `## Current state` fenced YAML block from `router.md`.
89
- - `internal/data/config.go` reads `config.yml` theme values and falls back to a default theme when the config is missing.
90
- - `internal/data/discover.go` finds the `.savepoint` root and lists release, epic, and task directories in stable order.
91
-
92
- ## Deltas From Plan
93
-
94
- - The planned `internal/data/errors.go` was not created; errors currently use formatted `error` values.
95
- - `ParseTaskFile` does not yet populate `Column`, `Stage`, `DependsOn`, `Priority`, `Points`, `Tags`, `Acceptance`, or `Notes` from YAML frontmatter.
96
- - The parser uses a regular expression rather than a line-based frontmatter scanner.
97
- - Config malformed YAML currently falls back to defaults instead of surfacing a parse error.
98
- ```
99
-
100
- ## Quality Review
101
-
102
- ## Must Fix Before Close
103
-
104
- All close blockers resolved in audit closeout.
105
-
106
- ## Must Fix Before Next Epic
107
-
108
- All next-epic blockers resolved in audit closeout.
109
-
110
- ## Carry Forward
111
-
112
- - `.savepoint/Design.md` and `AGENTS.md` still mostly describe the previous TypeScript implementation. The Go architecture should be reconciled incrementally as each Go epic is audited.
113
-
114
- ## Already Fixed
115
-
116
- - `go test ./internal/data/...` passed during audit.
117
- - `go test ./...` passed during audit.
118
- - `ParseTaskFile` now maps task frontmatter fields including `status`, `phase`, `depends_on`, priority, points, tags, acceptance, notes, release, epic, and progress.
119
- - `ConfigReader.Read` now returns defaults only for missing config files and returns malformed YAML/read errors.
120
- - Discovery tests now use temporary fixtures instead of the live repository tree.
121
- - Parser tests now assert task metadata mapping and malformed YAML behavior.
122
- - `internal/data/errors.go` now provides data-reader boundary error sentinels.
123
- - E02 task files now include context logs.
@@ -1,54 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E02-data-readers
4
- created: 2026-05-01
5
- mode: manual
6
- ---
7
-
8
- # Audit Snapshot: E02-data-readers
9
-
10
- Manual snapshot created because `.savepoint/audit/E02-data-readers/snapshot.md` was missing while the router was already in `audit-pending`.
11
-
12
- ## Router State
13
-
14
- ```yaml
15
- state: audit-pending
16
- release: v1
17
- epic: E02-data-readers
18
- task: ~
19
- next_action: "Audit E02-data-readers: all 5 tasks done. Start fresh session for audit."
20
- ```
21
-
22
- ## Epic Scope
23
-
24
- - `.savepoint/releases/v1/epics/E02-data-readers/Design.md`
25
- - `.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md`
26
- - `.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md`
27
- - `.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md`
28
- - `.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md`
29
- - `.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md`
30
-
31
- ## Changed Files In Scope
32
-
33
- - `internal/data/task.go`
34
- - `internal/data/parser.go`
35
- - `internal/data/router.go`
36
- - `internal/data/config.go`
37
- - `internal/data/discover.go`
38
- - `internal/data/task_test.go`
39
- - `internal/data/parser_test.go`
40
- - `internal/data/router_test.go`
41
- - `internal/data/config_test.go`
42
- - `internal/data/discover_test.go`
43
- - `go.mod`
44
- - `go.sum`
45
-
46
- ## Verification Observed During Audit
47
-
48
- - `go test ./internal/data/...` passed.
49
- - `go test ./...` passed.
50
-
51
- ## Notes
52
-
53
- - The repository is in a broad TypeScript-to-Go transition. Many tracked TypeScript files are deleted or replaced, but this snapshot is intentionally scoped to the E02 data-reader epic.
54
- - Task context logs are mostly absent except `T005-discovery.md`; this is audit process drift, not a source-code blocker.
@@ -1,146 +0,0 @@
1
- # Audit Proposals — E03-board-tui-core
2
-
3
- ## Target File
4
-
5
- `.savepoint/Design.md`
6
-
7
- ## Replace
8
-
9
- ```md
10
- ## 8. TUI
11
-
12
- **Theming:** Atari-Noir is the default theme. **For full design tokens, palette, and rendering rules, see `.savepoint/visual-identity.md`** (loaded conditionally for TUI tasks). Live values in `config.yml` `theme:` section.
13
-
14
- Acknowledged terminal limits: fonts, scanlines, glows, letter-spacing, mouse-driven motion don't translate. Lean on color discipline + box-drawing geometry + uppercase headings.
15
-
16
- **Render fallbacks:** 256-color → 16-color hard-coded → `NO_COLOR=1` monochrome with glyphs → non-TTY plain table.
17
-
18
- **Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
19
-
20
- **Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
21
-
22
- **Keybindings:** arrow/vim navigation, enter advances, backspace retreats, r/R refreshes, a/A exits toward audit review when proposals exist, q quits.
23
- ```
24
-
25
- ## With
26
-
27
- ```md
28
- ## 8. TUI
29
-
30
- **Theming:** Atari-Noir is the default theme. **For full design tokens, palette, and rendering rules, see `.savepoint/visual-identity.md`** (loaded conditionally for TUI tasks). Live values in `config.yml` `theme:` section.
31
-
32
- Acknowledged terminal limits: fonts, scanlines, glows, letter-spacing, mouse-driven motion don't translate. Lean on color discipline + box-drawing geometry + uppercase headings.
33
-
34
- **Go board core:** established in epic `E03-board-tui-core` (2026-05-01). `internal/board` owns the Bubble Tea model, update loop, responsive layout calculation, and Lip Gloss view composition. `internal/styles` owns the Atari-Noir terminal palette and reusable Lip Gloss styles with truecolor, 256-color, and 16-color fallbacks.
35
-
36
- **Layout:** the Go board core currently renders a responsive 3-column grid. At `>=120` columns it includes a 28-cell epic panel plus 3 task columns; at `80-119` columns it renders 3 task columns; below `80` columns it renders only the focused column and supports left/right or h/l column switching.
37
-
38
- **Render fallbacks:** truecolor → 256-color → 16-color are encoded in Go styles. A future non-TTY/plain renderer remains outside this epic.
39
-
40
- **Implementation modules:** see AGENTS.md Codebase Map.
41
-
42
- **Keybindings:** `q` and `ctrl+c` quit. Left/right arrows and h/l move the focused column in narrow layouts.
43
- ```
44
-
45
- ## Target File
46
-
47
- `AGENTS.md`
48
-
49
- ## Insert After
50
-
51
- ```md
52
- | `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Shared data-reader boundary error sentinels |
53
- ```
54
-
55
- ## With
56
-
57
- ```md
58
- | `internal/board/board.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Bubble Tea board entrypoint and program launch |
59
- | `internal/board/model.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Board model state, constructor, task grouping, and initialization |
60
- | `internal/board/update.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Board key handling, quit behavior, column focus navigation, and terminal resize updates |
61
- | `internal/board/view.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Lip Gloss view composition for header, responsive board columns, epic panel, tasks, and status bar |
62
- | `internal/board/layout.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Responsive board breakpoint and column width calculations |
63
- | `internal/styles/palette.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Atari-Noir terminal color constants and 256-color/16-color fallbacks |
64
- | `internal/styles/styles.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Reusable Lip Gloss styles for board chrome, focused state, task rows, status, tags, and epic panel |
65
- | `internal/board/*_test.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Unit tests for board model, update loop, layout breakpoints, and rendered output |
66
- ```
67
-
68
- ## Target File
69
-
70
- `.savepoint/releases/v1/epics/E03-board-tui-core/Design.md`
71
-
72
- ## Replace
73
-
74
- ```md
75
- type: epic-design
76
- status: planned
77
- ```
78
-
79
- ## With
80
-
81
- ```md
82
- type: epic-design
83
- status: implemented
84
- ```
85
-
86
- ## Target File
87
-
88
- `.savepoint/releases/v1/epics/E03-board-tui-core/Design.md`
89
-
90
- ## Insert After
91
-
92
- ```md
93
- ## Components and files
94
-
95
- | Path | Purpose |
96
- |------|---------|
97
- | `internal/board/model.go` | Model struct and Init |
98
- | `internal/board/update.go` | Update loop, message handling |
99
- | `internal/board/view.go` | View composition |
100
- | `internal/styles/palette.go` | Atari-Noir hex colors |
101
- | `internal/styles/styles.go` | Lip Gloss style definitions |
102
- | `internal/board/layout.go` | Width/height calculations |
103
- ```
104
-
105
- ## With
106
-
107
- ```md
108
-
109
- ## Implemented as
110
-
111
- - `internal/board/model.go` defines exported board state, groups tasks by `data.ColumnType`, defaults empty task columns to `planned`, and initializes with no startup command.
112
- - `internal/board/update.go` handles `q`, `ctrl+c`, terminal resize messages, and left/right or h/l focused-column navigation.
113
- - `internal/board/layout.go` implements the requested 120/80 column breakpoints and returns explicit layout metadata for view rendering.
114
- - `internal/board/view.go` composes the header, responsive task columns, optional epic panel, and status bar using Lip Gloss.
115
- - `internal/styles/palette.go` and `internal/styles/styles.go` define Atari-Noir truecolor values plus 256-color and 16-color fallbacks.
116
-
117
- ## Audit deltas
118
-
119
- - The implemented board core is wired into `internal/board/board.go`; `Run()` now launches the exported board model rather than the pre-epic placeholder screen.
120
- - The layout currently uses rounded borders, while the visual identity prefers single-line quiet borders by default. This is acceptable if intentional, but should be normalized before the visual system hardens.
121
- - Layout width coverage now lives on `CalculateLayout`; the dead `columnContentWidth()` helper was removed.
122
- ```
123
-
124
- ## Quality Review
125
-
126
- ## Must Fix Before Close
127
-
128
- None.
129
-
130
- ## Must Fix Before Next Epic
131
-
132
- - `internal/board/layout.go:28` accepts height but ignores it. The epic originally calls for width/height calculations and no layout break at any width. Either incorporate height into visible task capacity or narrow the documented contract before components depend on it.
133
- - `internal/board/view.go:65` renders task labels without truncation or width-aware clipping. Long IDs/titles can wrap and break the grid, conflicting with the visual guardrail that accidental wrapping is a bug.
134
-
135
- ## Carry Forward
136
-
137
- - `internal/styles/styles.go` uses rounded borders for columns and the epic panel. The visual identity says single-line borders are the default and rounded borders are not called out as a signature style; decide whether rounded borders are an intentional product choice in E04.
138
- - The Go implementation has replaced the older TypeScript architecture in active epics. Continue reconciling `.savepoint/Design.md` and AGENTS.md away from stale `src/` rows as each Go epic audits.
139
-
140
- ## Already Fixed
141
-
142
- - Board state, resize handling, responsive breakpoints, Atari-Noir palette constants, color fallbacks, focused-column rendering, and focused-column navigation have focused tests.
143
- - `internal/board/board.go` now launches `newProgramModel()`, which returns the exported `Model` created by `NewModel(...)`; the private placeholder model was removed.
144
- - `internal/board/board_test.go` verifies the program model renders board columns and does not render the old welcome screen.
145
- - The dead `columnContentWidth()` helper and its stale tests were removed; layout width coverage remains in `internal/board/layout_test.go`.
146
- - `go test ./...` and `go build ./...` passed during audit.
@@ -1,57 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E03-board-tui-core
4
- release: v1
5
- created: 2026-05-01
6
- mode: manual
7
- ---
8
-
9
- # Audit Snapshot — E03-board-tui-core
10
-
11
- Manual snapshot created because `.savepoint/audit/E03-board-tui-core/snapshot.md` was missing while the audit CLI is unavailable.
12
-
13
- ## Router State
14
-
15
- ```yaml
16
- state: audit-pending
17
- release: v1
18
- epic: E03-board-tui-core
19
- task: E03-board-tui-core/T005-layout
20
- next_action: "E03-board-tui-core complete. Start a new agent session for the audit."
21
- ```
22
-
23
- ## Epic Scope
24
-
25
- - `.savepoint/releases/v1/epics/E03-board-tui-core/Design.md`
26
- - `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md`
27
- - `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md`
28
- - `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md`
29
- - `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md`
30
- - `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md`
31
-
32
- ## Changed Files In Scope
33
-
34
- - `main.go`
35
- - `go.mod`
36
- - `internal/board/board.go`
37
- - `internal/board/model.go`
38
- - `internal/board/update.go`
39
- - `internal/board/view.go`
40
- - `internal/board/layout.go`
41
- - `internal/board/model_test.go`
42
- - `internal/board/update_test.go`
43
- - `internal/board/view_test.go`
44
- - `internal/board/layout_test.go`
45
- - `internal/styles/palette.go`
46
- - `internal/styles/styles.go`
47
-
48
- ## Verification Observed During Audit
49
-
50
- - `go test ./...` passed.
51
- - `go build ./...` passed.
52
- - Closeout fix verification: `go test ./internal/board`, `go test ./...`, and `go build ./...` passed after wiring the runtime model and removing dead layout code.
53
-
54
- ## Notes
55
-
56
- - Repository contains a broad TypeScript-to-Go transition and many unrelated working-tree changes. This snapshot is intentionally limited to the E03 Board TUI Core scope declared by the epic design and task files.
57
- - Closeout fix: `internal/board/board.go` now launches the exported `Model` implemented by this epic.