savepoint 1.0.2 → 1.0.4

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 (242) hide show
  1. package/.claude/settings.local.json +12 -1
  2. package/.github/workflows/ci.yml +20 -0
  3. package/.golangci.yml +11 -0
  4. package/.savepoint/Design.md +40 -38
  5. package/.savepoint/{audit/v1.1/E02-cross-platform-compatibility/proposals.md → releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md} +48 -38
  6. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +195 -0
  7. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +14 -1
  8. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +3 -3
  9. package/.savepoint/{audit/v1.1/E04-epic-navigation/proposals.md → releases/v1.1/epics/E04-epic-navigation/E04-Audit.md} +65 -54
  10. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +237 -0
  11. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +25 -16
  12. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +17 -6
  13. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +15 -5
  14. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +19 -5
  15. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +11 -1
  16. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +9 -6
  17. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +29 -13
  18. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +56 -0
  19. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +63 -0
  20. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +44 -0
  21. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +35 -0
  22. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +40 -0
  23. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +45 -0
  24. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +26 -0
  25. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +33 -0
  26. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +34 -0
  27. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +33 -0
  28. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +336 -0
  29. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +61 -0
  30. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +37 -0
  31. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +28 -0
  32. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +46 -0
  33. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +27 -0
  34. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +25 -0
  35. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +26 -0
  36. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +26 -0
  37. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +333 -0
  38. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +68 -0
  39. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +26 -0
  40. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +27 -0
  41. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +28 -0
  42. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +29 -0
  43. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +27 -0
  44. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +29 -0
  45. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +29 -0
  46. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +27 -0
  47. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +207 -0
  48. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +65 -0
  49. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +24 -0
  50. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +28 -0
  51. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +29 -0
  52. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +27 -0
  53. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +28 -0
  54. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +31 -0
  55. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +36 -0
  56. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +25 -0
  57. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +21 -0
  58. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +22 -0
  59. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +29 -0
  60. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +444 -0
  61. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +45 -0
  62. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +35 -0
  63. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +19 -0
  64. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +29 -0
  65. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +25 -0
  66. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +37 -0
  67. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +118 -0
  68. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +73 -0
  69. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +66 -0
  70. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +35 -0
  71. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +60 -0
  72. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +33 -0
  73. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +37 -0
  74. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +40 -0
  75. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +37 -0
  76. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +267 -0
  77. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +54 -0
  78. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +39 -0
  79. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +42 -0
  80. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +33 -0
  81. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +35 -0
  82. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +27 -0
  83. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +29 -0
  84. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +28 -0
  85. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Audit.md +272 -0
  86. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +60 -0
  87. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +31 -0
  88. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +34 -0
  89. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +30 -0
  90. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +27 -0
  91. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +28 -0
  92. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +26 -0
  93. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +33 -0
  94. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T008-ci-and-release-automation.md +46 -0
  95. package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +25 -0
  96. package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +27 -0
  97. package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +27 -0
  98. package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +29 -0
  99. package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +31 -0
  100. package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +34 -0
  101. package/.savepoint/releases/v1.1/v1.1-PRD.md +67 -7
  102. package/.savepoint/router.md +10 -17
  103. package/AGENTS.md +39 -24
  104. package/Makefile +3 -1
  105. package/README.md +0 -1
  106. package/agent-skills/savepoint-audit/SKILL.md +86 -34
  107. package/agent-skills/savepoint-build-task/SKILL.md +7 -2
  108. package/agent-skills/savepoint-create-plan/SKILL.md +7 -2
  109. package/agent-skills/savepoint-create-task/SKILL.md +44 -31
  110. package/agent-skills/savepoint-draft-prd/SKILL.md +7 -2
  111. package/agent-skills/savepoint-system-design/SKILL.md +7 -2
  112. package/agent_skills_test.go +91 -0
  113. package/cmd/board.go +59 -0
  114. package/cmd/board_test.go +137 -0
  115. package/cmd/doctor.go +53 -0
  116. package/cmd/doctor_test.go +146 -0
  117. package/cmd/init.go +63 -0
  118. package/cmd/init_test.go +104 -0
  119. package/internal/board/board.go +44 -36
  120. package/internal/board/board_test.go +27 -82
  121. package/internal/board/card.go +43 -23
  122. package/internal/board/card_test.go +74 -5
  123. package/internal/board/column.go +75 -15
  124. package/internal/board/column_test.go +76 -2
  125. package/internal/board/debug.go +26 -0
  126. package/internal/board/debug_test.go +108 -0
  127. package/internal/board/detail.go +33 -47
  128. package/internal/board/detail_test.go +48 -0
  129. package/internal/board/epic_panel.go +120 -22
  130. package/internal/board/epic_panel_test.go +302 -17
  131. package/internal/board/help.go +1 -0
  132. package/internal/board/help_test.go +1 -0
  133. package/internal/board/integration_test.go +266 -0
  134. package/internal/board/interfaces.go +65 -0
  135. package/internal/board/interfaces_test.go +114 -0
  136. package/internal/board/io.go +93 -0
  137. package/internal/board/model.go +79 -118
  138. package/internal/board/plain.go +88 -0
  139. package/internal/board/plain_test.go +117 -0
  140. package/internal/board/release.go +1 -9
  141. package/internal/board/release_test.go +6 -6
  142. package/internal/board/status.go +4 -4
  143. package/internal/board/theme.go +24 -0
  144. package/internal/board/theme_test.go +31 -0
  145. package/internal/board/transitions.go +113 -88
  146. package/internal/board/transitions_test.go +164 -141
  147. package/internal/board/tui.go +32 -0
  148. package/internal/board/update.go +344 -215
  149. package/internal/board/update_test.go +326 -18
  150. package/internal/board/util.go +76 -0
  151. package/internal/board/view.go +31 -28
  152. package/internal/board/view_test.go +74 -2
  153. package/internal/board/watch.go +41 -5
  154. package/internal/buildtool/main.go +45 -15
  155. package/internal/buildtool/main_test.go +224 -0
  156. package/internal/data/config.go +17 -3
  157. package/internal/data/config_test.go +49 -0
  158. package/internal/data/discover.go +26 -0
  159. package/internal/data/discover_test.go +34 -10
  160. package/internal/data/errors.go +4 -0
  161. package/internal/data/fuzz_test.go +75 -0
  162. package/internal/data/lifecycle.go +13 -6
  163. package/internal/data/lifecycle_test.go +14 -11
  164. package/internal/data/parser.go +22 -6
  165. package/internal/data/parser_test.go +31 -7
  166. package/internal/data/task.go +0 -9
  167. package/internal/data/testdata/fuzz/FuzzSplitFrontmatterBody/68eb66b0fe91e7e3 +2 -0
  168. package/internal/data/write.go +88 -11
  169. package/internal/data/write_test.go +167 -0
  170. package/internal/doctor/checks.go +567 -0
  171. package/internal/doctor/checks_test.go +716 -0
  172. package/internal/doctor/gates.go +193 -0
  173. package/internal/doctor/gates_test.go +166 -0
  174. package/internal/doctor/interfaces.go +64 -0
  175. package/internal/doctor/interfaces_test.go +104 -0
  176. package/internal/doctor/repairs.go +80 -0
  177. package/internal/doctor/repairs_test.go +81 -0
  178. package/internal/doctor/report.go +157 -0
  179. package/internal/doctor/report_test.go +89 -0
  180. package/internal/init/clipboard.go +146 -0
  181. package/internal/init/clipboard_test.go +74 -0
  182. package/internal/init/install.go +16 -0
  183. package/internal/init/integration_test.go +197 -0
  184. package/internal/init/prompt.go +14 -0
  185. package/internal/init/prompt_test.go +77 -0
  186. package/internal/init/scaffold.go +59 -0
  187. package/internal/init/scaffold_test.go +179 -0
  188. package/internal/init/template_freshness_test.go +56 -0
  189. package/internal/init/validate.go +85 -0
  190. package/internal/init/validate_test.go +141 -0
  191. package/internal/init/write.go +73 -0
  192. package/internal/init/write_test.go +91 -0
  193. package/internal/styles/styles_test.go +133 -0
  194. package/internal/testutil/fixture.go +113 -0
  195. package/internal/testutil/fs.go +26 -0
  196. package/main.go +120 -4
  197. package/package.json +2 -2
  198. package/project-audit/audit_report_glm_5.1.md +411 -0
  199. package/project-audit/audit_report_opus_4.6.md +406 -0
  200. package/project-audit/consolidated-audit-report.md +456 -0
  201. package/templates/project/.savepoint/Design.md +2 -2
  202. package/templates/project/.savepoint/router.md +10 -10
  203. package/templates/project/AGENTS.md +33 -21
  204. package/templates/project/agent-skills/savepoint-audit/SKILL.md +87 -0
  205. package/templates/project/agent-skills/savepoint-build-task/SKILL.md +44 -0
  206. package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +33 -0
  207. package/templates/project/agent-skills/savepoint-create-task/SKILL.md +44 -0
  208. package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +37 -0
  209. package/templates/project/agent-skills/savepoint-system-design/SKILL.md +38 -0
  210. package/templates/prompts/audit-reconciliation.prompt.md +33 -28
  211. package/templates/prompts/design.prompt.md +3 -1
  212. package/.savepoint/audit/v1/E01/proposals.md +0 -168
  213. package/.savepoint/audit/v1/E01/snapshot.md +0 -78
  214. package/.savepoint/audit/v1/E01-go-setup/proposals.md +0 -166
  215. package/.savepoint/audit/v1/E01-go-setup/snapshot.md +0 -71
  216. package/.savepoint/audit/v1/E01-scaffolding/proposals/AGENTS.md +0 -66
  217. package/.savepoint/audit/v1/E01-scaffolding/proposals/Design.md +0 -210
  218. package/.savepoint/audit/v1/E01-scaffolding/proposals/epic-Design.md +0 -117
  219. package/.savepoint/audit/v1/E01-scaffolding/proposals/quality-review.md +0 -101
  220. package/.savepoint/audit/v1/E01-scaffolding/snapshot.md +0 -54
  221. package/.savepoint/audit/v1/E02-data-model/snapshot.md +0 -128
  222. package/.savepoint/audit/v1/E02-data-readers/proposals.md +0 -123
  223. package/.savepoint/audit/v1/E02-data-readers/snapshot.md +0 -54
  224. package/.savepoint/audit/v1/E03-board-tui-core/proposals.md +0 -146
  225. package/.savepoint/audit/v1/E03-board-tui-core/snapshot.md +0 -57
  226. package/.savepoint/audit/v1/E03-cli-foundation/snapshot.md +0 -106
  227. package/.savepoint/audit/v1/E04-board-components/proposals.md +0 -118
  228. package/.savepoint/audit/v1/E04-board-components/snapshot.md +0 -77
  229. package/.savepoint/audit/v1/E04-templates-and-prompts/snapshot.md +0 -115
  230. package/.savepoint/audit/v1/E05-init-command/snapshot.md +0 -125
  231. package/.savepoint/audit/v1/E05-phase-transitions/proposals.md +0 -83
  232. package/.savepoint/audit/v1/E05-phase-transitions/snapshot.md +0 -36
  233. package/.savepoint/audit/v1/E06-atari-noir-layout/proposals.md +0 -130
  234. package/.savepoint/audit/v1/E06-atari-noir-layout/snapshot.md +0 -84
  235. package/.savepoint/audit/v1/E06-tui-board/snapshot.md +0 -64
  236. package/.savepoint/audit/v1/E07-audit-pipeline/snapshot.md +0 -165
  237. package/.savepoint/audit/v1/E08-board-workflow-cleanup/snapshot.md +0 -65
  238. package/.savepoint/audit/v1.1/E02-cross-platform-compatibility/snapshot.md +0 -41
  239. package/.savepoint/audit/v1.1/E04-epic-navigation/snapshot.md +0 -48
  240. package/ink-cli-ui-design.zip +0 -0
  241. package/savepoint +0 -0
  242. package/savepoint.exe +0 -0
@@ -1,106 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E03-cli-foundation
4
- created: 2026-04-27
5
- manual: true
6
- ---
7
-
8
- # Audit Snapshot: E03-cli-foundation
9
-
10
- Manual snapshot generated because `savepoint audit` is not implemented yet.
11
-
12
- ## Source file tree
13
-
14
- ```
15
- src/
16
- cli.ts - process entrypoint; delegates to runCli() with process globals
17
- cli/
18
- args.ts - argument parsing and normalization
19
- environment.ts - TTY, color, and platform detection
20
- exit-codes.ts - shared exit code constants
21
- help.ts - help text generation (top-level and per-command)
22
- run.ts - testable CLI runner with injectable argv/streams/env
23
- commands/
24
- audit.ts - stub: savepoint audit
25
- board.ts - stub: savepoint board
26
- doctor.ts - stub: savepoint doctor
27
- init.ts - stub: savepoint init
28
- test/
29
- cli/
30
- args.test.ts - parser unit tests
31
- commands.test.ts - command stub dispatch tests
32
- environment.test.ts - TTY/color detection tests
33
- help.test.ts - help text generation tests
34
- run.test.ts - full runner dispatch tests (35 tests)
35
- ```
36
-
37
- ## Config / metadata changes
38
-
39
- | Path | Purpose |
40
- | --------------------------------------- | --------------------------------------------------------------------------------------------- |
41
- | `.savepoint/router.md` | Router state still pointed at T001; E03 tasks were completed without router updates per task. |
42
- | `E03-cli-foundation/tasks/T001-T006.md` | Six planned and completed E03 task files. |
43
-
44
- ## New files introduced by E03
45
-
46
- - `src/cli/args.ts`
47
- - `src/cli/environment.ts`
48
- - `src/cli/exit-codes.ts`
49
- - `src/cli/help.ts`
50
- - `src/cli/run.ts`
51
- - `src/commands/audit.ts`
52
- - `src/commands/board.ts`
53
- - `src/commands/doctor.ts`
54
- - `src/commands/init.ts`
55
- - `src/commands/result.ts`
56
- - `test/cli/args.test.ts`
57
- - `test/cli/commands.test.ts`
58
- - `test/cli/environment.test.ts`
59
- - `test/cli/help.test.ts`
60
- - `test/cli/run.test.ts`
61
-
62
- ## Modified files
63
-
64
- - `src/cli.ts` — replaced old placeholder with `runCli()` delegation; process globals isolated here.
65
- - `src/cli/run.ts` — command-level unknown flags now return usage errors.
66
- - `src/commands/audit.ts` — prettier formatting applied.
67
- - `src/commands/board.ts` — prettier formatting applied.
68
- - `src/commands/doctor.ts` — prettier formatting applied.
69
- - `src/commands/init.ts` — prettier formatting applied.
70
- - `test/cli/environment.test.ts` — prettier formatting applied.
71
- - `test/cli/run.test.ts` — prettier formatting applied.
72
-
73
- ## Quality gates
74
-
75
- - `npm run build` passed. Output: `dist/cli.js` 4.83 KB.
76
- - `npm run typecheck` passed.
77
- - `npm run lint` passed.
78
- - `npm run format:check` initially failed on 6 pre-existing files (commands and CLI tests); fixed with `prettier --write`, then passed.
79
- - During audit closeout, `npm.cmd test -- test/cli/run.test.ts` initially failed in the sandbox with esbuild `spawn EPERM`; rerunning outside the sandbox passed.
80
- - `npm test` passed: 21 test files, 259 tests (0 failures).
81
-
82
- ## Coverage summary
83
-
84
- | Branch | Test file | Tests |
85
- | ------------------------- | ------------------- | ----- |
86
- | Bare invocation | run.test.ts | 3 |
87
- | Global help flags | run.test.ts | 4 |
88
- | Version flags | run.test.ts | 4 |
89
- | Command dispatch (4 cmds) | run.test.ts | 8 |
90
- | Command-level help | run.test.ts | 7 |
91
- | Unknown command | run.test.ts | 3 |
92
- | Unknown flag | run.test.ts | 6 |
93
- | Argument parsing | args.test.ts | 12 |
94
- | Help text | help.test.ts | 13 |
95
- | Environment detection | environment.test.ts | 15 |
96
- | Command stubs | commands.test.ts | 8 |
97
-
98
- ## Deviations from epic Design
99
-
100
- | Item | Status | Note |
101
- | ------------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
102
- | Audit snapshot | manual | Generated by the agent because the audit CLI does not exist yet. |
103
- | Router state | manual | Router still shows T001 as active; router was not updated per-task during E03 implementation. |
104
- | Prettier failures at gate | fixed | 6 command/test files had formatting issues at T006; fixed before gate closeout. |
105
- | `src/cli.ts` entrypoint | done | Updated from placeholder to `runCli()` delegation with all process globals isolated at the boundary. |
106
- | Command-level flags | fixed | Unknown command-level flags now return usage errors instead of dispatching command stubs. |
@@ -1,118 +0,0 @@
1
- ## Target File
2
-
3
- `.savepoint/Design.md`
4
-
5
- ## Replace
6
-
7
- ```md
8
- **Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
9
-
10
- **Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
11
-
12
- **Keybindings:** arrow/vim navigation, enter advances, backspace retreats, r/R refreshes, a/A exits toward audit review when proposals exist, q quits.
13
- ```
14
-
15
- ## With
16
-
17
- ```md
18
- **Layout:** Go Bubble Tea board with responsive columns: wide terminals (`>=120` cols) show an epic sidebar plus planned / in-progress / done columns; medium terminals show three columns; narrow terminals show the focused column only.
19
-
20
- **Board components:** E04 adds Lip Gloss renderers for columns, task cards, epic sidebar/dropdown, release dropdown, task detail overlay, and help overlay. Selector, detail, and help overlays dim the current board and composite a centered panel over it.
21
-
22
- **Implementation modules:** see AGENTS.md Codebase Map (`internal/board/*`, `internal/styles/*`, and `internal/data/*` rows).
23
-
24
- **Keybindings:** h/left and l/right move columns; enter opens task detail or selects an overlay item; e opens the epic selector on narrow screens; r opens the release selector; ? opens help; esc/q close overlays; q/ctrl+c quit from the base board.
25
- ```
26
-
27
- ## Target File
28
-
29
- `AGENTS.md`
30
-
31
- ## Insert After
32
-
33
- ```md
34
- | `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md) | Shared data-reader boundary error sentinels |
35
- ```
36
-
37
- ## With
38
-
39
- ```md
40
- | `internal/board/model.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Bubble Tea board state for grouped tasks, focused column/task, selected release/epic, responsive size, and active overlay |
41
- | `internal/board/update.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Keyboard and window-size update handling for board navigation, overlays, selectors, and quit behavior |
42
- | `internal/board/layout.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Responsive board geometry breakpoints and column/sidebar width calculation |
43
- | `internal/board/view.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Board view composition, status bar, responsive columns, and overlay placement helpers |
44
- | `internal/board/column.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Column renderer with status header, task count, empty state, and focused border styling |
45
- | `internal/board/card.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Task card renderer with phase glyphs, metadata dimming, truncation, and focus styling |
46
- | `internal/board/epic_panel.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Wide epic sidebar and narrow epic selector dropdown renderers |
47
- | `internal/board/detail.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Task detail overlay renderer with task metadata, description, acceptance criteria, and phase labels |
48
- | `internal/board/release.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Release selector dropdown renderer and current-release cursor lookup |
49
- | `internal/board/help.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Keyboard shortcut help overlay renderer |
50
- | `internal/styles/*.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Atari-Noir Lip Gloss palette and shared board, card, overlay, glyph, status, and tag styles |
51
- | `internal/board/*_test.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) / [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Go board model, layout, update, view, component, selector, detail, and help tests |
52
- ```
53
-
54
- ## Target File
55
-
56
- `.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md`
57
-
58
- ## Insert After
59
-
60
- ```md
61
- ## Definition of Done
62
-
63
- - Cards render with correct phase glyphs and colors.
64
- - Focused card has orange accent border.
65
- - Epic panel renders on wide screens; dropdown on narrow.
66
- - Detail overlay opens with Enter, closes with Esc.
67
- - Epic dropdown opens with `e`, release with `r`.
68
- - Help overlay opens with `?`.
69
- - All components render without wrapping or layout breaks.
70
- - Component tests pass.
71
- ```
72
-
73
- ## With
74
-
75
- ```md
76
- ## Implemented As
77
-
78
- - `internal/board/column.go` renders status columns with uppercase label, task count, empty state, focused border, and task cards.
79
- - `internal/board/card.go` renders standalone task cards with build/test/audit glyphs, dim metadata, truncation, and focused styling.
80
- - `internal/board/epic_panel.go` renders the wide epic sidebar and narrow epic dropdown; `e` opens the dropdown only below the wide breakpoint.
81
- - `internal/board/release.go` renders the release dropdown; `r` opens it at all widths.
82
- - `internal/board/detail.go` renders task detail panels with wrapped long text; `internal/board/view.go` dims the board and composites selector/detail/help overlays over the base board.
83
- - `internal/board/help.go` renders the keyboard shortcut overlay.
84
- - `internal/styles/styles.go` and `internal/styles/palette.go` add shared Lip Gloss styles for cards, overlays, metadata, glyphs, and dim text.
85
-
86
- ## Audit Deltas
87
-
88
- - Planned `internal/board/dropdown.go` was not created; epic and release dropdowns are separate renderers.
89
- - Task cards are integrated into column rendering; board columns now display card borders and phase glyphs.
90
- - Selecting an epic or release updates `SelectedEpic` / `SelectedRelease` and regroups visible board tasks from `Model.AllTasks`.
91
- - Selector/detail/help overlays keep the dimmed board visible behind the panel.
92
- - Base board up/down navigation moves the focused task within the focused column.
93
- ```
94
-
95
- ## Quality Review
96
-
97
- ## Must Fix Before Close
98
-
99
- No open findings.
100
-
101
- ## Must Fix Before Next Epic
102
-
103
- No open findings.
104
-
105
- ## Carry Forward
106
-
107
- - The current project architecture and Codebase Map still contain substantial TypeScript-era rows. This proposal adds E04 Go rows as a delta, but a later audit should reconcile the stale TypeScript implementation sections once the Go transition is complete.
108
-
109
- ## Already Fixed
110
-
111
- - Board columns render `RenderCard`, so phase glyphs, card borders, truncation, and focused card styling are visible in the actual board.
112
- - Epic and release selections regroup visible tasks from `Model.AllTasks`.
113
- - Epic and release dropdowns use the same dimmed-base overlay composition as detail/help.
114
- - Base board up/down navigation moves `FocusedTask` and clamps at column bounds.
115
- - Detail rows, descriptions, and acceptance criteria wrap long text within overlay width.
116
- - Focused tests passed during audit: `go test ./internal/board/...`.
117
- - Full Go suite passed during audit: `go test ./...`.
118
- - Help and detail overlays use the dimmed-base compositing path and close on `esc` / `q`.
@@ -1,77 +0,0 @@
1
- # Manual Audit Snapshot: E04-board-components
2
-
3
- Created: 2026-05-01
4
-
5
- Reason: `.savepoint/router.md` is in `audit-pending` for `E04-board-components`, but `.savepoint/audit/E04-board-components/snapshot.md` was missing. Per router instructions, this is a one-time manual snapshot from the known epic scope.
6
-
7
- ## Router State
8
-
9
- ```yaml
10
- state: audit-pending
11
- release: v1
12
- epic: E04-board-components
13
- task: E04-board-components/T006-help-overlay
14
- next_action: "Epic E04-board-components complete. Start a new agent session for audit."
15
- ```
16
-
17
- ## Epic Scope
18
-
19
- Epic design: `.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md`
20
-
21
- Tasks:
22
-
23
- - `.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md`
24
- - `.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md`
25
- - `.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md`
26
- - `.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md`
27
- - `.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md`
28
- - `.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md`
29
-
30
- ## Files Listed By Epic Design
31
-
32
- - `internal/board/column.go`
33
- - `internal/board/card.go`
34
- - `internal/board/epic_panel.go`
35
- - `internal/board/detail.go`
36
- - `internal/board/dropdown.go` (planned; no live file found)
37
- - `internal/board/help.go`
38
- - `internal/board/card_test.go`
39
- - `internal/board/column_test.go`
40
-
41
- ## Additional Files Touched By Task Logs
42
-
43
- - `internal/board/model.go`
44
- - `internal/board/update.go`
45
- - `internal/board/view.go`
46
- - `internal/board/layout.go`
47
- - `internal/board/detail_test.go`
48
- - `internal/board/epic_panel_test.go`
49
- - `internal/board/help_test.go`
50
- - `internal/board/release.go`
51
- - `internal/board/release_test.go`
52
- - `internal/board/update_test.go`
53
- - `internal/board/view_test.go`
54
- - `internal/styles/styles.go`
55
- - `internal/styles/palette.go`
56
-
57
- ## Verification Re-run During Audit
58
-
59
- - `go test ./internal/board/...` passed.
60
- - `go test ./...` passed.
61
-
62
- ## Scoped Review Notes
63
-
64
- - `RenderCard` is implemented and tested, but `RenderColumn` still renders plain task labels through `taskLabel`, and `rg RenderCard internal/board` shows no production call site outside `card.go`.
65
- - Epic and release selection currently mutate `SelectedEpic` / `SelectedRelease` only. There is no data reload or regrouping path in `internal/board/update.go`, so the task-list update acceptance criteria are not yet satisfied.
66
- - Detail/help overlays are composited over dimmed base board. Epic/release dropdowns use `lipgloss.Place` over a blank canvas, so the board is not visible behind those overlays.
67
-
68
- ## Post-Audit Implementation
69
-
70
- Updated after user request to implement all audit findings:
71
-
72
- - `RenderColumn` now renders `RenderCard` for each task.
73
- - `Model` now stores `AllTasks` and regroups visible tasks when epic/release selection changes.
74
- - Base board `up`/`k` and `down`/`j` move focused task selection.
75
- - Epic/release dropdowns now composite over the dimmed board.
76
- - Detail overlay text now wraps long rows, description, and acceptance criteria.
77
- - Verification after implementation: `go build ./...`, `go vet ./...`, and `go test ./...` passed.
@@ -1,115 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E04-templates-and-prompts
4
- created: 2026-04-27
5
- manual: true
6
- ---
7
-
8
- # Audit Snapshot: E04-templates-and-prompts
9
-
10
- Manual snapshot generated because `savepoint audit` is not implemented yet.
11
-
12
- ## Source file tree
13
-
14
- ```text
15
- src/
16
- templates/
17
- index.ts - public export surface for template helpers
18
- load.ts - async template file loader with path-aware not_found errors
19
- manifest.ts - typed manifest of project, release, and prompt templates
20
- paths.ts - template root discovery and template path resolution
21
- render.ts - small placeholder interpolation helper
22
- templates/
23
- project/
24
- AGENTS.md
25
- .savepoint/
26
- router.md
27
- PRD.md
28
- Design.md
29
- config.yml
30
- visual-identity.md
31
- release/
32
- v1/
33
- PRD.md
34
- prompts/
35
- audit-reconciliation.prompt.md
36
- design.prompt.md
37
- epic-design.prompt.md
38
- prd.prompt.md
39
- task-breakdown.prompt.md
40
- task-building.prompt.md
41
- task-planning.prompt.md
42
- test/
43
- templates/
44
- project-templates.test.ts
45
- prompt-templates.test.ts
46
- render-integrity.test.ts
47
- router-template.test.ts
48
- template-registry.test.ts
49
- ```
50
-
51
- ## Config / metadata changes
52
-
53
- | Path | Purpose |
54
- | --------------------------------------------------------- | ------------------------------------------- |
55
- | `.savepoint/router.md` | Router state points to E04 audit-pending. |
56
- | `E04-templates-and-prompts/tasks/T001-T005.md` | Five completed E04 task files. |
57
- | `.savepoint/audit/E04-templates-and-prompts/snapshot.md` | Manual audit snapshot for this epic. |
58
- | `.savepoint/audit/E04-templates-and-prompts/proposals.md` | Single audit proposal bundle for this epic. |
59
-
60
- ## New files introduced by E04
61
-
62
- - `src/templates/index.ts`
63
- - `src/templates/load.ts`
64
- - `src/templates/manifest.ts`
65
- - `src/templates/paths.ts`
66
- - `src/templates/render.ts`
67
- - `templates/project/AGENTS.md`
68
- - `templates/project/.savepoint/router.md`
69
- - `templates/project/.savepoint/PRD.md`
70
- - `templates/project/.savepoint/Design.md`
71
- - `templates/project/.savepoint/config.yml`
72
- - `templates/project/.savepoint/visual-identity.md`
73
- - `templates/release/v1/PRD.md`
74
- - `templates/prompts/audit-reconciliation.prompt.md`
75
- - `templates/prompts/design.prompt.md`
76
- - `templates/prompts/epic-design.prompt.md`
77
- - `templates/prompts/prd.prompt.md`
78
- - `templates/prompts/task-breakdown.prompt.md`
79
- - `templates/prompts/task-building.prompt.md`
80
- - `templates/prompts/task-planning.prompt.md`
81
- - `test/templates/project-templates.test.ts`
82
- - `test/templates/prompt-templates.test.ts`
83
- - `test/templates/render-integrity.test.ts`
84
- - `test/templates/router-template.test.ts`
85
- - `test/templates/template-registry.test.ts`
86
-
87
- ## Quality gates
88
-
89
- - `npm run build` passed. Output: `dist/cli.js` 4.83 KB.
90
- - `npm run typecheck` passed.
91
- - `npm run lint` passed.
92
- - `npm run format:check` passed.
93
- - `npm test` passed: 26 test files, 299 tests.
94
-
95
- ## Coverage summary
96
-
97
- | Branch / behavior | Test file |
98
- | ---------------------------------------- | --------------------------------------------------- |
99
- | Template path routing by template family | template-registry.test.ts |
100
- | Missing template boundary error | template-registry.test.ts |
101
- | Placeholder interpolation | template-registry.test.ts, render-integrity.test.ts |
102
- | Required project template files/markers | project-templates.test.ts |
103
- | Router states and read-order markers | router-template.test.ts |
104
- | Prompt template set and required markers | prompt-templates.test.ts |
105
- | Audit prompt single-bundle guidance | prompt-templates.test.ts |
106
-
107
- ## Deviations from epic Design
108
-
109
- | Item | Status | Note |
110
- | ------------------------- | ------ | ------------------------------------------------------------------------------------------------------ |
111
- | Audit snapshot | manual | Generated by the agent because the audit CLI does not exist yet. |
112
- | Template loader errors | done | Loader currently reports missing read failures as `not_found`. |
113
- | Interpolation variables | done | Implemented for `projectName`, `releaseNumber`, and `releaseName`. |
114
- | Audit proposal output | done | E04 prompt locks audit reconciliation to one `proposals.md` bundle. |
115
- | Audit initiation friction | found | The router assumed the snapshot existed; this caused an unnecessary missing-file probe at audit start. |
@@ -1,125 +0,0 @@
1
- ---
2
- type: audit-snapshot
3
- epic: E05-init-command
4
- created: 2026-04-27
5
- manual: true
6
- ---
7
-
8
- # Audit Snapshot: E05-init-command
9
-
10
- Manual snapshot generated because `savepoint audit` is not implemented yet.
11
-
12
- ## Source file tree
13
-
14
- ```text
15
- src/
16
- cli.ts - async process entrypoint delegates to runCli()
17
- cli/
18
- args.ts - init option parsing and validation
19
- exit-codes.ts - shared CLI exit code constants, including boundary errors
20
- help.ts - init help text
21
- run.ts - async command dispatcher and init dependency injection
22
- commands/
23
- init.ts - init command orchestration
24
- init/
25
- clipboard.ts - best-effort clipboard command selection and execution
26
- dev-deps.ts - package manager detection and optional install execution
27
- magic-prompt.ts - post-init prompt generation from template assets
28
- validate-target.ts - target directory safety checks
29
- write-scaffold.ts - template-backed scaffold writer
30
- templates/
31
- manifest.ts - project and prompt template registry entries
32
- templates/
33
- project/
34
- AGENTS.md
35
- .savepoint/
36
- router.md
37
- metrics/
38
- context-bench.md
39
- prompts/
40
- magic-prompt.prompt.md
41
- test/
42
- cli/
43
- args.test.ts
44
- commands.test.ts
45
- run.test.ts
46
- init/
47
- clipboard.test.ts
48
- dev-deps.test.ts
49
- init-command.test.ts
50
- magic-prompt.test.ts
51
- validate-target.test.ts
52
- write-scaffold.test.ts
53
- templates/
54
- project-templates.test.ts
55
- ```
56
-
57
- ## Config / metadata changes
58
-
59
- | Path | Purpose |
60
- | --------------------------------------------------------- | --------------------------------------- |
61
- | `.savepoint/router.md` | Router state reached E05 audit handoff. |
62
- | `E05-init-command/tasks/T001-T006.md` | Six completed E05 task files. |
63
- | `.savepoint/audit/E05-init-command/snapshot.md` | Manual audit snapshot for this epic. |
64
- | `.savepoint/audit/E05-init-command/proposals.md` | Single audit proposal bundle, pending. |
65
- | `.savepoint/metrics/context-bench.md` | Context rows for E05 task building. |
66
- | `AGENTS.md` | Codebase Map needs E05 module refresh. |
67
- | `.savepoint/releases/v1/epics/E05-init-command/E05-Detail.md` | Epic Design needs implemented-as notes. |
68
-
69
- ## New files introduced by E05
70
-
71
- - `src/init/clipboard.ts`
72
- - `src/init/dev-deps.ts`
73
- - `src/init/magic-prompt.ts`
74
- - `src/init/validate-target.ts`
75
- - `src/init/write-scaffold.ts`
76
- - `templates/project/.savepoint/metrics/context-bench.md`
77
- - `templates/prompts/magic-prompt.prompt.md`
78
- - `test/init/clipboard.test.ts`
79
- - `test/init/dev-deps.test.ts`
80
- - `test/init/init-command.test.ts`
81
- - `test/init/magic-prompt.test.ts`
82
- - `test/init/validate-target.test.ts`
83
- - `test/init/write-scaffold.test.ts`
84
-
85
- ## Changed files in scope
86
-
87
- - `src/cli.ts`
88
- - `src/cli/args.ts`
89
- - `src/cli/exit-codes.ts`
90
- - `src/cli/help.ts`
91
- - `src/cli/run.ts`
92
- - `src/commands/init.ts`
93
- - `src/templates/manifest.ts`
94
- - `templates/project/AGENTS.md`
95
- - `templates/project/.savepoint/router.md`
96
- - `test/cli/args.test.ts`
97
- - `test/cli/commands.test.ts`
98
- - `test/cli/run.test.ts`
99
- - `test/templates/project-templates.test.ts`
100
-
101
- ## Quality gates
102
-
103
- - Focused init tests passed during task closeout.
104
- - Full quality gate suite passed during T006 closeout per task context.
105
-
106
- ## Coverage summary
107
-
108
- | Branch / behavior | Test file |
109
- | ----------------------------------------- | --------------------------------------- |
110
- | Init CLI option parsing and invalid flags | args.test.ts |
111
- | Init command dispatch and async runner | run.test.ts, init-command.test.ts |
112
- | Target directory validation | validate-target.test.ts |
113
- | Scaffold writing and overwrite behavior | write-scaffold.test.ts |
114
- | Magic prompt generation | magic-prompt.test.ts |
115
- | Clipboard success, skip, and failure | clipboard.test.ts, init-command.test.ts |
116
- | Dev-dependency install path | dev-deps.test.ts, init-command.test.ts |
117
- | Template registry and project assets | project-templates.test.ts |
118
-
119
- ## Deviations from epic Design
120
-
121
- | Item | Status | Note |
122
- | --------------------- | ------ | --------------------------------------------------------------------------------------------- |
123
- | Audit snapshot | manual | Generated by the agent because the audit CLI does not exist yet. |
124
- | Init command boundary | done | `runCli()` and init orchestration became async to support clipboard and install subprocesses. |
125
- | Optional install | done | Implemented as explicit flag-driven behavior with package manager detection. |
@@ -1,83 +0,0 @@
1
- # Audit Proposals: E05-phase-transitions
2
-
3
- ## Target File
4
-
5
- `.savepoint/Design.md`
6
-
7
- ## Insert After
8
-
9
- ```md
10
- - **Board command** (`savepoint board`) reads project, non-TTY fallback, Ink TUI, transition gates, mtime writes, audit signaling (epic E06).
11
- ```
12
-
13
- ## With
14
-
15
- ```md
16
- - **Phase transitions** are owned by the Go board/data boundary: `internal/board/transitions.go` defines planned/in_progress/done phase movement and gate checks; `internal/data/write.go` owns mtime-checked task and router frontmatter writes.
17
- ```
18
-
19
- ## Target File
20
-
21
- `AGENTS.md`
22
-
23
- ## Insert After
24
-
25
- ```md
26
- | `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md) | Shared data-reader boundary error sentinels |
27
- ```
28
-
29
- ## With
30
-
31
- ```md
32
- | `internal/data/write.go` | [E05-phase-transitions](.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md) | Mtime-checked task status/phase and router current-state write helpers |
33
- | `internal/board/transitions.go` | [E05-phase-transitions](.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md) | Board phase advance/retreat lifecycle and dependency gate checks |
34
- ```
35
-
36
- ## Target File
37
-
38
- `.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md`
39
-
40
- ## Insert After
41
-
42
- ```md
43
- ## Definition of Done
44
- ```
45
-
46
- ## With
47
-
48
- ```md
49
- ## Implemented As
50
-
51
- - `internal/board/transitions.go` implements in-memory phase movement and `CanAdvance` gate checks.
52
- - `internal/board/update.go` maps Space and Backspace to transition helpers and displays gate-block reasons in the status bar.
53
- - `internal/data/write.go` adds mtime-checked write helpers for task frontmatter and router current state.
54
- - `internal/board/model.go` carries `Root` and writes selected release/epic changes back to `router.md`.
55
-
56
- ## Audit Delta
57
-
58
- - The task write helper exists, but board Space/Backspace does not yet call it, so task markdown write-back is not implemented on the live interaction path.
59
- - Router write-back is implemented only for release/epic overlay selection, preserving the existing `next_action` value.
60
- ```
61
-
62
- ## Quality Review
63
-
64
- ## Must Fix Before Close
65
-
66
- - `internal/board/update.go:47` and `internal/board/update.go:64`: Space/Backspace mutate `m.AllTasks` and refresh the grouped view, but never call `data.WriteTaskStatus`. The epic Definition of Done says task `.md` files are updated and mtime conflicts are detected/reported. The current live board path is memory-only, so the central write-back acceptance criteria from T003 are not satisfied outside isolated helper tests.
67
- - `internal/board/update.go:47`: the update path has no way to know a selected task file path or expected task mtime. `data.Task` carries task metadata but not source path/mtime, and the board model does not keep a side table for them. That means mtime conflict detection cannot be enforced for task status transitions as designed.
68
-
69
- ## Must Fix Before Next Epic
70
-
71
- - Add reducer/integration tests for Space and Backspace that verify the board either writes through `WriteTaskStatus` successfully or reports `ErrMtimeConflict` without mutating local state. Current tests cover `Advance`, `Retreat`, and `WriteTaskStatus` independently, but not the user-facing transition workflow.
72
- - Harden `WriteTaskStatus` body preservation. `internal/data/write.go:54` computes the body offset from the trimmed frontmatter returned by `extractFrontmatter`; frontmatter with extra blank lines or trailing whitespace can shift the splice point. Prefer deriving the body boundary from delimiter indexes in the original normalized content.
73
-
74
- ## Carry Forward
75
-
76
- - Keep `WriteRouterState` as the data-layer boundary for router YAML updates, but document that callers must preserve `next_action` by reading existing router state first.
77
- - Consider splitting `internal/data/write.go` if task writes and router writes grow separate validation rules; for now it is still small enough to remain a single file.
78
-
79
- ## Already Fixed
80
-
81
- - Phase order helpers cover planned -> in_progress/build -> test -> audit -> done and the reverse path.
82
- - Dependency gates block audit -> done when dependencies are missing or not done.
83
- - Router release/epic selection writes through the data-layer mtime helper and reports errors via `StatusMessage`.
@@ -1,36 +0,0 @@
1
- # Audit Snapshot: E05-phase-transitions
2
-
3
- Manual snapshot created because `.savepoint/audit/E05-phase-transitions/snapshot.md` was missing when the router was already in `audit-pending`.
4
-
5
- ## Router State
6
-
7
- ```yaml
8
- state: audit-pending
9
- release: v1
10
- epic: E05-phase-transitions
11
- task: ""
12
- next_action: "Epic E05-phase-transitions is complete. Start a new agent session for the audit."
13
- ```
14
-
15
- ## Epic Scope
16
-
17
- - `.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md`
18
- - `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md`
19
- - `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md`
20
- - `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md`
21
- - `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md`
22
-
23
- ## Changed Files Reviewed
24
-
25
- - `internal/board/transitions.go`
26
- - `internal/board/transitions_test.go`
27
- - `internal/board/update.go`
28
- - `internal/board/model.go`
29
- - `internal/data/write.go`
30
- - `internal/data/write_test.go`
31
-
32
- ## Audit Notes
33
-
34
- - The repository has a broad dirty worktree unrelated to this audit. This snapshot is intentionally scoped to the active epic design, task context logs, and files named by the E05 design/tasks.
35
- - Task closeout logs report `go build ./...`, `go vet ./...`, and `go test ./...` passing during implementation.
36
- - The audit did not rerun quality gates; this artifact is the semantic reconciliation snapshot.