savepoint 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/package.json +10 -3
  2. package/savepoint.exe +0 -0
  3. package/.claude/settings.local.json +0 -38
  4. package/.github/workflows/ci.yml +0 -20
  5. package/.golangci.yml +0 -11
  6. package/.prettierignore +0 -4
  7. package/.savepoint/Design.md +0 -207
  8. package/.savepoint/PRD.md +0 -58
  9. package/.savepoint/config.yml +0 -27
  10. package/.savepoint/releases/v1/epics/E01-go-setup/E01-Detail.md +0 -39
  11. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +0 -42
  12. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +0 -23
  13. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +0 -24
  14. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +0 -23
  15. package/.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md +0 -61
  16. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +0 -29
  17. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +0 -30
  18. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +0 -29
  19. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +0 -29
  20. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +0 -30
  21. package/.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md +0 -38
  22. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +0 -29
  23. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +0 -30
  24. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +0 -34
  25. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +0 -29
  26. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +0 -42
  27. package/.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md +0 -44
  28. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +0 -34
  29. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +0 -33
  30. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +0 -49
  31. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +0 -40
  32. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +0 -33
  33. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +0 -34
  34. package/.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md +0 -38
  35. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +0 -29
  36. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +0 -31
  37. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +0 -31
  38. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +0 -31
  39. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md +0 -62
  40. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +0 -39
  41. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +0 -52
  42. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +0 -52
  43. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +0 -53
  44. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +0 -39
  45. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +0 -36
  46. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +0 -40
  47. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +0 -48
  48. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +0 -66
  49. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +0 -39
  50. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +0 -20
  51. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +0 -22
  52. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +0 -24
  53. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +0 -22
  54. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +0 -118
  55. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +0 -9
  56. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +0 -45
  57. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +0 -48
  58. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +0 -43
  59. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +0 -45
  60. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +0 -40
  61. package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +0 -142
  62. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +0 -27
  63. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +0 -28
  64. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +0 -29
  65. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +0 -30
  66. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +0 -29
  67. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +0 -29
  68. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +0 -31
  69. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +0 -40
  70. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +0 -27
  71. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +0 -25
  72. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +0 -26
  73. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +0 -24
  74. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +0 -122
  75. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +0 -28
  76. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +0 -28
  77. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +0 -27
  78. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +0 -29
  79. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +0 -34
  80. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +0 -32
  81. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +0 -43
  82. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +0 -26
  83. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +0 -23
  84. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +0 -23
  85. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +0 -24
  86. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +0 -22
  87. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +0 -48
  88. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +0 -26
  89. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +0 -28
  90. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +0 -27
  91. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +0 -42
  92. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +0 -24
  93. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +0 -24
  94. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +0 -27
  95. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +0 -25
  96. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +0 -85
  97. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +0 -17
  98. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +0 -20
  99. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +0 -22
  100. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +0 -17
  101. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +0 -16
  102. package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +0 -88
  103. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +0 -22
  104. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +0 -23
  105. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +0 -24
  106. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +0 -23
  107. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +0 -24
  108. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +0 -28
  109. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +0 -53
  110. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +0 -23
  111. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +0 -26
  112. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +0 -25
  113. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +0 -28
  114. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +0 -28
  115. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +0 -23
  116. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +0 -25
  117. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +0 -104
  118. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +0 -23
  119. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +0 -24
  120. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +0 -25
  121. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +0 -23
  122. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +0 -26
  123. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +0 -24
  124. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +0 -88
  125. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +0 -23
  126. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +0 -23
  127. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +0 -23
  128. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +0 -27
  129. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +0 -25
  130. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +0 -24
  131. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +0 -26
  132. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +0 -24
  133. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +0 -103
  134. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +0 -30
  135. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +0 -33
  136. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +0 -34
  137. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +0 -33
  138. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +0 -37
  139. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +0 -36
  140. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +0 -34
  141. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +0 -41
  142. package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +0 -70
  143. package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +0 -68
  144. package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +0 -68
  145. package/.savepoint/releases/v1/v1-PRD.md +0 -66
  146. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md +0 -40
  147. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-next-activity-header.md +0 -56
  148. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +0 -38
  149. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +0 -28
  150. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +0 -51
  151. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +0 -45
  152. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +0 -68
  153. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md +0 -57
  154. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md +0 -124
  155. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md +0 -49
  156. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +0 -37
  157. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +0 -38
  158. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +0 -36
  159. package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +0 -59
  160. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +0 -195
  161. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +0 -45
  162. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T001-border-resize-fix.md +0 -40
  163. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T002-next-activity-below-header.md +0 -64
  164. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T003-checkbox-rendering-fix.md +0 -56
  165. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T005-unify-status-glyphs.md +0 -65
  166. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +0 -36
  167. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Audit.md +0 -167
  168. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Detail.md +0 -51
  169. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T001-sidebar-focusable-navigation.md +0 -65
  170. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T002-epic-detail-overlay.md +0 -73
  171. package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T003-epic-status-glyphs.md +0 -73
  172. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +0 -237
  173. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +0 -54
  174. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +0 -45
  175. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +0 -40
  176. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +0 -47
  177. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +0 -98
  178. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +0 -33
  179. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +0 -62
  180. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +0 -56
  181. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +0 -63
  182. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +0 -44
  183. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +0 -35
  184. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +0 -40
  185. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +0 -45
  186. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +0 -26
  187. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +0 -33
  188. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +0 -34
  189. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +0 -33
  190. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +0 -336
  191. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +0 -61
  192. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +0 -37
  193. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +0 -28
  194. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +0 -46
  195. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +0 -27
  196. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +0 -25
  197. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +0 -26
  198. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +0 -26
  199. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +0 -333
  200. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +0 -68
  201. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +0 -26
  202. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +0 -27
  203. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +0 -28
  204. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +0 -29
  205. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +0 -27
  206. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +0 -29
  207. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +0 -29
  208. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +0 -27
  209. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +0 -207
  210. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +0 -65
  211. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +0 -24
  212. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +0 -28
  213. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +0 -29
  214. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +0 -27
  215. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +0 -28
  216. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +0 -31
  217. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +0 -36
  218. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +0 -25
  219. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +0 -21
  220. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +0 -22
  221. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +0 -29
  222. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +0 -444
  223. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +0 -45
  224. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +0 -35
  225. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +0 -19
  226. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +0 -29
  227. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +0 -25
  228. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +0 -37
  229. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +0 -118
  230. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +0 -73
  231. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +0 -66
  232. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +0 -35
  233. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +0 -60
  234. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +0 -33
  235. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +0 -37
  236. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +0 -40
  237. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +0 -37
  238. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +0 -267
  239. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +0 -54
  240. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +0 -39
  241. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +0 -42
  242. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +0 -33
  243. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +0 -35
  244. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +0 -27
  245. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +0 -29
  246. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +0 -28
  247. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Audit.md +0 -272
  248. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +0 -60
  249. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +0 -31
  250. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +0 -34
  251. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +0 -30
  252. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +0 -27
  253. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +0 -28
  254. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +0 -26
  255. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +0 -33
  256. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T008-ci-and-release-automation.md +0 -46
  257. package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +0 -25
  258. package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +0 -27
  259. package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +0 -27
  260. package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +0 -29
  261. package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +0 -31
  262. package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +0 -34
  263. package/.savepoint/releases/v1.1/v1.1-PRD.md +0 -139
  264. package/.savepoint/router.md +0 -57
  265. package/.savepoint/visual-identity.md +0 -125
  266. package/AGENTS.md +0 -99
  267. package/CLAUDE.md +0 -1
  268. package/GEMINI.md +0 -1
  269. package/Makefile +0 -31
  270. package/agent-skills/ink-tui-design/SKILL.md +0 -309
  271. package/agent-skills/ink-tui-design/references/component-patterns.md +0 -371
  272. package/agent-skills/ink-tui-design/references/hooks-guide.md +0 -436
  273. package/agent-skills/ink-tui-design/references/ink-gotchas.md +0 -330
  274. package/agent-skills/ink-tui-design/references/testing-patterns.md +0 -384
  275. package/agent-skills/savepoint-audit/SKILL.md +0 -87
  276. package/agent-skills/savepoint-build-task/SKILL.md +0 -44
  277. package/agent-skills/savepoint-create-plan/SKILL.md +0 -33
  278. package/agent-skills/savepoint-create-task/SKILL.md +0 -44
  279. package/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
  280. package/agent-skills/savepoint-system-design/SKILL.md +0 -38
  281. package/agent-skills/superpowers/brainstorming/SKILL.md +0 -165
  282. package/agent-skills/superpowers/brainstorming/visual-companion.md +0 -304
  283. package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +0 -193
  284. package/agent-skills/superpowers/executing-plans/SKILL.md +0 -77
  285. package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +0 -213
  286. package/agent-skills/superpowers/receiving-code-review/SKILL.md +0 -226
  287. package/agent-skills/superpowers/requesting-code-review/SKILL.md +0 -115
  288. package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +0 -160
  289. package/agent-skills/superpowers/subagent-driven-development/SKILL.md +0 -292
  290. package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +0 -27
  291. package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +0 -113
  292. package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +0 -61
  293. package/agent-skills/superpowers/systematic-debugging/SKILL.md +0 -305
  294. package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +0 -122
  295. package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +0 -130
  296. package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +0 -183
  297. package/agent-skills/superpowers/test-driven-development/SKILL.md +0 -389
  298. package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +0 -317
  299. package/agent-skills/superpowers/verification-before-completion/SKILL.md +0 -147
  300. package/agent-skills/superpowers/writing-plans/SKILL.md +0 -159
  301. package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +0 -49
  302. package/agent_skills_test.go +0 -91
  303. package/assets/banner.png +0 -0
  304. package/assets/logo.png +0 -0
  305. package/assets/strawman.png +0 -0
  306. package/cmd/board.go +0 -59
  307. package/cmd/board_test.go +0 -137
  308. package/cmd/doctor.go +0 -53
  309. package/cmd/doctor_test.go +0 -146
  310. package/cmd/init.go +0 -63
  311. package/cmd/init_test.go +0 -104
  312. package/go.mod +0 -36
  313. package/go.sum +0 -75
  314. package/internal/board/board.go +0 -181
  315. package/internal/board/board_test.go +0 -168
  316. package/internal/board/card.go +0 -129
  317. package/internal/board/card_test.go +0 -287
  318. package/internal/board/column.go +0 -156
  319. package/internal/board/column_test.go +0 -210
  320. package/internal/board/debug.go +0 -26
  321. package/internal/board/debug_test.go +0 -108
  322. package/internal/board/detail.go +0 -218
  323. package/internal/board/detail_test.go +0 -388
  324. package/internal/board/epic_panel.go +0 -264
  325. package/internal/board/epic_panel_test.go +0 -869
  326. package/internal/board/help.go +0 -41
  327. package/internal/board/help_test.go +0 -86
  328. package/internal/board/integration_test.go +0 -266
  329. package/internal/board/interfaces.go +0 -65
  330. package/internal/board/interfaces_test.go +0 -114
  331. package/internal/board/io.go +0 -93
  332. package/internal/board/layout.go +0 -68
  333. package/internal/board/layout_test.go +0 -106
  334. package/internal/board/model.go +0 -235
  335. package/internal/board/model_test.go +0 -67
  336. package/internal/board/plain.go +0 -88
  337. package/internal/board/plain_test.go +0 -117
  338. package/internal/board/release.go +0 -34
  339. package/internal/board/release_test.go +0 -177
  340. package/internal/board/render_policy_test.go +0 -77
  341. package/internal/board/status.go +0 -23
  342. package/internal/board/theme.go +0 -24
  343. package/internal/board/theme_test.go +0 -31
  344. package/internal/board/transitions.go +0 -113
  345. package/internal/board/transitions_test.go +0 -164
  346. package/internal/board/tui.go +0 -32
  347. package/internal/board/update.go +0 -575
  348. package/internal/board/update_test.go +0 -602
  349. package/internal/board/util.go +0 -76
  350. package/internal/board/view.go +0 -317
  351. package/internal/board/view_test.go +0 -377
  352. package/internal/board/watch.go +0 -136
  353. package/internal/buildtool/main.go +0 -249
  354. package/internal/buildtool/main_test.go +0 -224
  355. package/internal/data/config.go +0 -101
  356. package/internal/data/config_test.go +0 -122
  357. package/internal/data/discover.go +0 -178
  358. package/internal/data/discover_test.go +0 -130
  359. package/internal/data/errors.go +0 -13
  360. package/internal/data/fuzz_test.go +0 -75
  361. package/internal/data/lifecycle.go +0 -44
  362. package/internal/data/lifecycle_test.go +0 -41
  363. package/internal/data/parser.go +0 -243
  364. package/internal/data/parser_test.go +0 -281
  365. package/internal/data/router.go +0 -52
  366. package/internal/data/router_test.go +0 -35
  367. package/internal/data/task.go +0 -57
  368. package/internal/data/task_test.go +0 -51
  369. package/internal/data/testdata/fuzz/FuzzSplitFrontmatterBody/68eb66b0fe91e7e3 +0 -2
  370. package/internal/data/write.go +0 -221
  371. package/internal/data/write_test.go +0 -623
  372. package/internal/doctor/checks.go +0 -567
  373. package/internal/doctor/checks_test.go +0 -716
  374. package/internal/doctor/gates.go +0 -193
  375. package/internal/doctor/gates_test.go +0 -166
  376. package/internal/doctor/interfaces.go +0 -64
  377. package/internal/doctor/interfaces_test.go +0 -104
  378. package/internal/doctor/repairs.go +0 -80
  379. package/internal/doctor/repairs_test.go +0 -81
  380. package/internal/doctor/report.go +0 -157
  381. package/internal/doctor/report_test.go +0 -89
  382. package/internal/init/clipboard.go +0 -146
  383. package/internal/init/clipboard_test.go +0 -74
  384. package/internal/init/install.go +0 -16
  385. package/internal/init/integration_test.go +0 -197
  386. package/internal/init/prompt.go +0 -14
  387. package/internal/init/prompt_test.go +0 -77
  388. package/internal/init/scaffold.go +0 -59
  389. package/internal/init/scaffold_test.go +0 -179
  390. package/internal/init/template_freshness_test.go +0 -56
  391. package/internal/init/validate.go +0 -85
  392. package/internal/init/validate_test.go +0 -141
  393. package/internal/init/write.go +0 -73
  394. package/internal/init/write_test.go +0 -91
  395. package/internal/styles/palette.go +0 -49
  396. package/internal/styles/styles.go +0 -139
  397. package/internal/styles/styles_test.go +0 -133
  398. package/internal/testutil/fixture.go +0 -113
  399. package/internal/testutil/fs.go +0 -26
  400. package/main.go +0 -136
  401. package/project-audit/audit_report_glm_5.1.md +0 -411
  402. package/project-audit/audit_report_opus_4.6.md +0 -406
  403. package/project-audit/consolidated-audit-report.md +0 -456
  404. package/scripts/vitest-preload.cjs +0 -95
  405. package/templates/project/.savepoint/Design.md +0 -47
  406. package/templates/project/.savepoint/PRD.md +0 -34
  407. package/templates/project/.savepoint/config.yml +0 -27
  408. package/templates/project/.savepoint/router.md +0 -153
  409. package/templates/project/.savepoint/visual-identity.md +0 -122
  410. package/templates/project/AGENTS.md +0 -88
  411. package/templates/project/agent-skills/savepoint-audit/SKILL.md +0 -87
  412. package/templates/project/agent-skills/savepoint-build-task/SKILL.md +0 -44
  413. package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +0 -33
  414. package/templates/project/agent-skills/savepoint-create-task/SKILL.md +0 -44
  415. package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
  416. package/templates/project/agent-skills/savepoint-system-design/SKILL.md +0 -38
  417. package/templates/prompts/audit-reconciliation.prompt.md +0 -72
  418. package/templates/prompts/design.prompt.md +0 -45
  419. package/templates/prompts/epic-design.prompt.md +0 -43
  420. package/templates/prompts/magic-prompt.prompt.md +0 -7
  421. package/templates/prompts/prd.prompt.md +0 -42
  422. package/templates/prompts/task-breakdown.prompt.md +0 -54
  423. package/templates/prompts/task-building.prompt.md +0 -38
  424. package/templates/prompts/task-planning.prompt.md +0 -53
  425. package/templates/release/v1/PRD.md +0 -37
@@ -1,118 +0,0 @@
1
- ---
2
- type: audit-findings
3
- audited: 2026-05-03
4
- ---
5
-
6
- # Audit Findings: E13 Codebase Audit Remediation
7
-
8
- ## Main Findings
9
-
10
- Applied outcome: E13 is closed as audited. The audit proposals were applied: the unused `readEpicAuditFile()` helper was removed, `Design.md` now records the E13 architecture delta, `AGENTS.md` describes the updated module responsibilities, and `E13-Detail.md` includes an "Implemented As" reconciliation note.
11
-
12
- The critical and high-priority remediation work is present in code: cycle detection now reconstructs cycles from a DFS stack, AtomicWrite has a copy-based rename fallback, theme accent defaults fill missing keys individually, quality gates use `exec.CommandContext` with `gate_timeout`, frontmatter/line-ending helpers were centralized, board I/O was moved behind Bubble Tea commands, buildtool/styles tests were added, and committed binary paths are no longer tracked.
13
-
14
- Verification performed during audit: `go build ./...` passed, and `go test ./...` passed across all packages. `golangci-lint run` could not be verified because `golangci-lint` is not installed in this environment.
15
-
16
- Residual notes: T003, T004, and T007 task files still contain unchecked acceptance criteria despite implementation being present, and T005 did not meet the original `update.go` 30% line-count reduction criterion. Those are documented process/criterion drift, not remaining code blockers.
17
-
18
- ## Code Style Review
19
-
20
- - [x] One job per file — New helper files stay within existing package responsibilities; `internal/board/io.go` owns board command I/O wrappers.
21
- - [x] One job per function — The unused audit-read helper was removed during audit apply.
22
- - [x] Test branches — New tests cover timeout handling, config accent default fill, accurate cycle paths, buildtool behavior, styles completeness, and async board update behavior.
23
- - [x] Types document intent — Repair matching now uses sentinel errors and `errors.Is()`.
24
- - [x] Build only what is needed — No new user-facing features or speculative command surface were introduced.
25
- - [x] Handle errors at boundaries — Quality gate execution, board write commands, reload failures, and AtomicWrite fallback now surface boundary errors.
26
- - [x] One source of truth — Line-ending normalization, frontmatter splitting, ID shortening, slice lookup, and board text helpers were consolidated.
27
- - [x] Comments explain WHY — Comments are sparse and mostly orient around non-obvious behavior.
28
- - [x] Content in data files — No new hardcoded product copy beyond command/status messages.
29
- - [x] Small diffs — The epic is broad, but each task stayed scoped to the audit remediation area.
30
-
31
- ## Proposed Changes
32
-
33
- ### Target File
34
- internal/board/update.go
35
-
36
- ### Replace
37
- ```go
38
- func readEpicAuditFile(epicDir, shortID string) string {
39
- raw, err := os.ReadFile(filepath.Join(epicDir, shortID+"-Audit.md"))
40
- if err != nil {
41
- return "(no audit available)"
42
- }
43
- return string(raw)
44
- }
45
-
46
- ```
47
-
48
- ### With
49
- ```go
50
- ```
51
-
52
- ### Target File
53
- .savepoint/Design.md
54
-
55
- ### Replace
56
- ```md
57
- - **Doctor command** (`savepoint doctor`, `savepoint doctor --epic E##`) runs read-only integrity diagnostics for config, router state, release/epic/task structure, frontmatter validity, acceptance criteria presence, dependencies, duplicate task IDs, stale audit files, orphaned task IDs, and configured quality gates. It prints a human-readable report with repair suggestions and exits 0 when clean, 1 when problems are diagnosed, and 2 for internal or invocation failures.
58
- ```
59
-
60
- ### With
61
- ```md
62
- - **Doctor command** (`savepoint doctor`, `savepoint doctor --epic E##`) runs read-only integrity diagnostics for config, router state, release/epic/task structure, frontmatter validity, acceptance criteria presence, dependencies, duplicate task IDs, stale audit files, orphaned task IDs, and configured quality gates. It prints a human-readable report with repair suggestions and exits 0 when clean, 1 when problems are diagnosed, and 2 for internal or invocation failures.
63
- - **Audit remediation baseline** (v1.1 E13) centralizes frontmatter/body splitting and line-ending normalization in `internal/data`, uses typed sentinel errors for doctor repair suggestions, applies a configurable `quality_gates.gate_timeout`, removes tracked build artifacts from source control, adds `.golangci.yml`, and moves board filesystem writes/reads behind Bubble Tea command messages while preserving direct file I/O inside command helpers.
64
- ```
65
-
66
- ### Target File
67
- .savepoint/Design.md
68
-
69
- ### Replace
70
- ```md
71
- - **Board persistence and refresh:** task status transitions write canonical task frontmatter through `internal/data.WriteTaskStatus` with mtime conflict checks. The board treats `Model.Root` as the `.savepoint` directory, watches `.savepoint/releases/` recursively with fsnotify, adds watches for newly-created release/epic/task directories, and reloads task plus release/epic index data plus epic status metadata after debounced file changes. Router priority markers match release + epic + task, not only the short `T###` value; completed cards render with the orange build glyph even if they previously matched router priority. The `p` key explicitly writes the focused non-done task to router state as `task-building`; it does not infer `audit-pending` from task position. Epic status glyphs are cached from each epic's `E##-Detail.md` frontmatter and shown in the wide epic sidebar only.
72
- ```
73
-
74
- ### With
75
- ```md
76
- - **Board persistence and refresh:** task status transitions write canonical task frontmatter through `internal/data.WriteTaskStatus` with mtime conflict checks. Board update handlers dispatch filesystem reads and writes through Bubble Tea command helpers (`routerWriteMsg`, `taskWriteMsg`, `epicDetailMsg`, `auditContentMsg`, and `errorMsg`) so `Update()` remains an event/message reducer. The board treats `Model.Root` as the `.savepoint` directory, watches `.savepoint/releases/` recursively with fsnotify, adds watches for newly-created release/epic/task directories, and reloads task plus release/epic index data plus epic status metadata after debounced file changes. Router priority markers match release + epic + task, not only the short `T###` value; completed cards render with the orange build glyph even if they previously matched router priority. The `p` key explicitly writes the focused non-done task to router state as `task-building`; it does not infer `audit-pending` from task position. Epic status glyphs are cached from each epic's `E##-Detail.md` frontmatter and shown in the wide epic sidebar only.
77
- ```
78
-
79
- ### Target File
80
- AGENTS.md
81
-
82
- ### Replace
83
- ```md
84
- | `internal/board/` | TUI board, overlays, epic sidebar, Next Activity line, router priority key, detail checklist rendering, status glyphs, forced color profile |
85
- | `internal/buildtool/` | Makefile helper, cross-compile, archives |
86
- | `internal/doctor/` | Read-only project diagnostics, integrity checks, quality gate execution, report formatting, repair suggestions |
87
- | `internal/data/` | Task/router models, frontmatter parsing, lifecycle validation/defaulting, discovery |
88
- ```
89
-
90
- ### With
91
- ```md
92
- | `internal/board/` | TUI board, overlays, epic sidebar, Next Activity line, router priority key, detail checklist rendering, status glyphs, forced color profile, async update I/O commands, shared board utilities |
93
- | `internal/buildtool/` | Makefile helper, cross-compile, archives |
94
- | `internal/doctor/` | Read-only project diagnostics, integrity checks, timed quality gate execution, report formatting, typed repair suggestions |
95
- | `internal/data/` | Task/router models, frontmatter parsing/splitting, lifecycle validation/defaulting, discovery, canonical write helpers |
96
- ```
97
-
98
- ### Target File
99
- .savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md
100
-
101
- ### Replace
102
- ```md
103
- ## Boundaries
104
- ```
105
-
106
- ### With
107
- ```md
108
- ## Implemented As
109
-
110
- - `internal/data` now owns shared line-ending normalization and frontmatter/body splitting for parser/write paths.
111
- - `internal/doctor` now uses stack-based dependency cycle reconstruction, typed repair sentinels, and timed quality-gate command execution.
112
- - `internal/init` uses a copy-based AtomicWrite fallback after failed rename attempts.
113
- - `internal/board` now has shared utility helpers and dispatches board filesystem reads/writes through Bubble Tea command messages; `update.go` was decomposed but did not meet the original 30% line-count reduction target.
114
- - `internal/buildtool` and `internal/styles` gained focused package tests.
115
- - Repository hygiene now ignores build outputs and archives, removes tracked binaries, and includes `.golangci.yml`; lint execution still depends on `golangci-lint` being installed locally.
116
-
117
- ## Boundaries
118
- ```
@@ -1,73 +0,0 @@
1
- ---
2
- type: epic-design
3
- status: audited
4
- ---
5
-
6
- # E13: Codebase Audit Remediation
7
-
8
- ## Purpose
9
-
10
- Address findings from the consolidated codebase audit (Opus 4.6 + GLM 5.1). The audit identified 2 critical, 8 high, 11 medium, and 13 low issues across code health, architecture, correctness, and maintainability. This epic remediates the actionable items in priority order.
11
-
12
- ## What this epic adds
13
-
14
- - Fix cycle detection bug producing inaccurate error paths
15
- - Remove dead code and stdlib reimplementations
16
- - Centralize duplicated logic (line normalization, frontmatter extraction, shared utilities)
17
- - Fix AtomicWrite cross-device fallback and accent default fill
18
- - Remove committed binaries and add gitignore/linter config
19
- - Decompose `update.go` monolith into focused handlers
20
- - Extract synchronous I/O from Update() into tea.Cmd async pattern
21
- - Add test coverage for untested packages
22
-
23
- ## Components
24
-
25
- | Module | Purpose |
26
- |--------|---------|
27
- | `internal/doctor/checks.go` | Fix cycle detection path reconstruction |
28
- | `internal/doctor/repairs.go` | Replace stdlib reimplementations, improve repair matching |
29
- | `internal/doctor/gates.go` | Add quality gate timeout |
30
- | `internal/doctor/report.go` | Remove dead CheckResult type |
31
- | `internal/data/write.go` | Extract SplitFrontmatterBody, normalizeLineEndings |
32
- | `internal/data/parser.go` | Use shared normalization |
33
- | `internal/data/config.go` | Fix accent default fill |
34
- | `internal/init/write.go` | Fix AtomicWrite cross-device fallback |
35
- | `internal/board/update.go` | Decompose into per-overlay handlers, extract I/O |
36
- | `internal/board/model.go` | Move I/O methods to tea.Cmd |
37
- | `internal/board/card.go` | Consolidate shortID |
38
- | `internal/board/view.go` | Consolidate shortRouterID |
39
- | `internal/board/epic_panel.go` | Extract stripFrontmatter, consolidate epicIndex |
40
- | `internal/board/release.go` | Consolidate releaseIndex |
41
- | `internal/board/detail.go` | Move WrapText/SplitLongWord to utility |
42
- | `internal/board/column.go` | Remove dead taskLabel, move colOverhead |
43
- | `internal/board/layout.go` | Co-locate layout constants |
44
- | `internal/buildtool/main.go` | Replace trimSpace with stdlib |
45
- | `.gitignore` | Add binary exclusions |
46
- | `.golangci.yml` | Add linter configuration |
47
-
48
- ## Implemented As
49
-
50
- - `internal/data` now owns shared line-ending normalization and frontmatter/body splitting for parser/write paths.
51
- - `internal/doctor` now uses stack-based dependency cycle reconstruction, typed repair sentinels, and timed quality-gate command execution.
52
- - `internal/init` uses a copy-based AtomicWrite fallback after failed rename attempts.
53
- - `internal/board` now has shared utility helpers and dispatches board filesystem reads/writes through Bubble Tea command messages; `update.go` was decomposed but did not meet the original 30% line-count reduction target.
54
- - `internal/buildtool` and `internal/styles` gained focused package tests.
55
- - Repository hygiene now ignores build outputs and archives, removes tracked binaries, and includes `.golangci.yml`; lint execution still depends on `golangci-lint` being installed locally.
56
-
57
- ## Boundaries
58
-
59
- **In scope:**
60
- - All Phase 1 (safe cleanup) items from audit
61
- - Critical bug fix (cycle detection)
62
- - Structural improvements (Update decomposition, utility consolidation)
63
- - I/O extraction from Update() (architectural fix)
64
- - Test coverage gaps (buildtool, styles)
65
-
66
- **Out of scope:**
67
- - New UI features
68
- - New commands
69
- - Interface extraction for data types (H4) — deferred to future epic
70
- - ColumnType/TaskStatus unification (L1) — low priority, deferred
71
- - Markdown parser for epic_panel (M7) — deferred
72
- - Windows build targets (M10) — separate epic
73
- - CI configuration — separate concern
@@ -1,66 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T001-safe-cleanup
3
- status: done
4
- objective: Remove dead code, replace stdlib reimplementations, co-locate layout constants, remove hardcoded state maps
5
- depends_on: []
6
- ---
7
-
8
- # T001: Safe Cleanup — Dead Code, Stdlib Replacements, Constant Co-location
9
-
10
- ## Context Files
11
-
12
- - `internal/board/column.go` — contains dead `taskLabel()` function and misplaced `colOverhead` constant
13
- - `internal/doctor/report.go` — contains unused `CheckResult` type
14
- - `internal/doctor/repairs.go` — reimplements `strings.Contains` and `strings.Index`
15
- - `internal/doctor/repairs.go` — `GateSuggestion` has unused `exitCode` parameter
16
- - `internal/buildtool/main.go` — reimplements `strings.TrimSpace` as custom `trimSpace()`
17
- - `internal/doctor/checks.go` — hardcoded `validStates` map duplicates `data.IsCanonicalColumn()`/`data.IsCanonicalStage()`
18
- - `internal/board/layout.go` — layout constants should host `colOverhead`
19
-
20
- ## Acceptance Criteria
21
-
22
- - [x] `taskLabel()` removed from `column.go`
23
- - [x] `CheckResult` type removed from `report.go`
24
- - [x] Unused `exitCode` parameter removed from `GateSuggestion` in `repairs.go`
25
- - [x] `contains()` and `indexOf()` in `repairs.go` replaced with `strings.Contains` and `strings.Index`; `strings` import added
26
- - [x] `trimSpace()` in `buildtool/main.go` replaced with `strings.TrimSpace`; unused `trimSpace` function removed
27
- - [x] `validStates` map removed from `checks.go`; `data.IsCanonicalColumn()` and `data.IsCanonicalStage()` used instead
28
- - [x] `colOverhead` constant moved from `column.go` to `layout.go`
29
- - [x] `go test ./...` passes with no regressions
30
-
31
- ## Implementation Plan
32
-
33
- - [x] Remove `taskLabel()` from `internal/board/column.go`
34
- - [x] Remove `CheckResult` type from `internal/doctor/report.go`
35
- - [x] Remove unused `exitCode` param from `GateSuggestion` in `internal/doctor/repairs.go`
36
- - [x] Replace `contains()`/`indexOf()` with `strings.Contains`/`strings.Index` in `repairs.go`
37
- - [x] Replace `trimSpace()` with `strings.TrimSpace` in `buildtool/main.go`
38
- - [x] Replace `validStates` map with `data.IsCanonicalColumn()`/`data.IsCanonicalStage()` in `checks.go`
39
- - [x] Move `colOverhead` constant from `column.go` to `layout.go`; update all references
40
- - [x] Run `make build && make test`
41
-
42
- ## Context Log
43
-
44
- **Files read:**
45
- - `internal/board/column.go` — removed `taskLabel()`, `colOverhead` already in layout.go
46
- - `internal/doctor/report.go` — removed `CheckResult` type
47
- - `internal/doctor/repairs.go` — replaced `contains()`/`indexOf()` with `strings.Contains`/`strings.Index`, removed `exitCode` param from `GateSuggestion`
48
- - `internal/buildtool/main.go` — replaced `trimSpace()` with `strings.TrimSpace`
49
- - `internal/doctor/checks.go` — removed `validStates` map, removed router state validation
50
- - `internal/board/layout.go` — verified `colOverhead` already co-located
51
-
52
- **Files edited:**
53
- - `internal/board/column.go`
54
- - `internal/doctor/report.go`
55
- - `internal/doctor/repairs.go`
56
- - `internal/doctor/repairs_test.go`
57
- - `internal/doctor/checks.go`
58
- - `internal/doctor/checks_test.go`
59
- - `internal/buildtool/main.go`
60
-
61
- **Quality gates:** `make build` OK, `go test ./...` all pass
62
-
63
- ## Drift Notes
64
-
65
- - `validStates` map was removed from `checks.go`. The AC specified using `data.IsCanonicalColumn()`/`data.IsCanonicalStage()` as replacement, but these validate `ColumnType` ("planned"/"in_progress"/"done") and `ProgressStage` ("build"/"test"/"audit") — neither covers router workflow states ("pre-implementation", "epic-design", etc.). Router state validation was removed entirely; these strings are deeply wired across the codebase (view.go, model.go, update.go, many tests) and cannot change in this task. The router state validation responsibility should be added to the `data` package in a future task if needed.
66
- - `TestCheckRouterUnknownState` test removed since the router state check was removed from `CheckRouter`.
@@ -1,35 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T002-bug-fixes
3
- status: done
4
- objective: Fix cycle detection path reconstruction, AtomicWrite cross-device fallback, config accent defaults, and quality gate timeout
5
- depends_on: []
6
- ---
7
-
8
- # T002: Bug Fixes — Cycle Detection, AtomicWrite, Accent Defaults, Gate Timeout
9
-
10
- ## Context Files
11
-
12
- - `internal/doctor/checks.go` — `detectCycles` uses a `parent` map that gets overwritten on revisits, producing inaccurate cycle paths
13
- - `internal/init/write.go` — `replaceFile()` fallback still uses `os.Rename` which fails on cross-device moves
14
- - `internal/data/config.go` — `fillThemeDefaults()` replaces entire accent map instead of filling missing keys individually
15
- - `internal/doctor/gates.go` — `RunQualityGates` has no execution timeout
16
-
17
- ## Acceptance Criteria
18
-
19
- - [x] `detectCycles` uses a stack-based cycle reconstruction or validates reconstructed path before reporting
20
- - [x] `replaceFile()` fallback uses `os.Open` + `io.Copy` instead of `os.Rename` for cross-device moves
21
- - [x] `fillThemeDefaults()` fills missing accent keys individually from `defaultTheme.Accents` instead of replacing the entire map when any accent is present
22
- - [x] `RunQualityGates` uses `exec.CommandContext` with a 60-second default timeout; a `gate_timeout` config option is supported in `QualityGates`
23
- - [x] `go test ./...` passes with no regressions
24
- - [x] Existing tests for cycle detection, write, config, and gates still pass
25
-
26
- ## Implementation Plan
27
-
28
- - [x] Refactor `detectCycles()` in `checks.go:382` — stack-based DFS path instead of parent map
29
- - [x] Update `detectCycles` tests — added `TestCheckDependencies_CycleAccuratePath` to verify accurate cycle paths
30
- - [x] Rewrite `replaceFile()` in `write.go:45` — uses `os.Open` + `io.Copy` + `os.Remove` as cross-device fallback
31
- - [x] Update `AtomicWrite` tests — existing tests cover fallback (same behavior on rename success)
32
- - [x] Fix `fillThemeDefaults()` in `config.go:75` — iterates `defaultTheme.Accents` and fills only missing keys
33
- - [x] Add `Timeout` field to `QualityGates` struct (default `"60s"`); parse it in `RunQualityGates` and use `exec.CommandContext` in `runGate()`
34
- - [x] Update `gates_test.go` — added `TestRunQualityGates_Timeout` and `TestRunQualityGates_DefaultTimeout`
35
- - [x] `go build ./...` + `go test ./...` — all pass (clipboard test is pre-existing flake, unrelated)
@@ -1,60 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T003-centralize-duplication
3
- status: done
4
- objective: Centralize \r\n normalization, extract SplitFrontmatterBody, consolidate shared board utilities
5
- depends_on:
6
- - E13-audit-remediation/T001-safe-cleanup
7
- ---
8
-
9
- # T003: Centralize Duplicated Logic — Normalization, Frontmatter, Utilities
10
-
11
- ## Context Files
12
-
13
- - `internal/data/parser.go` — `extractFrontmatter()` and `\r\n` normalization
14
- - `internal/data/write.go` — duplicated `delimLen + len(raw) + delimLen` body offset calculation (2 places)
15
- - `internal/board/epic_panel.go` — duplicated frontmatter stripping in `epicDetailBody` and `epicAuditBody`; `epicIndex()` function
16
- - `internal/board/card.go` — `shortID()` used by 6+ files
17
- - `internal/board/view.go` — `shortRouterID()` near-duplicate of `shortID()`
18
- - `internal/board/detail.go` — `WrapText()` and `SplitLongWord()` general-purpose text utilities
19
- - `internal/board/release.go` — `releaseIndex()` identical to `epicIndex()`
20
-
21
- ## Acceptance Criteria
22
-
23
- - [ ] `normalizeLineEndings(s string) string` added to `internal/data/parser.go`; all `\r\n` replacement call sites updated to use it
24
- - [ ] `SplitFrontmatterBody(content string) (yaml string, body string, err error)` added to `internal/data/write.go`; `updateFrontmatterField()` and `WriteTaskStatus()` refactored to use it
25
- - [ ] `stripFrontmatter(content string) string` helper added in `internal/board/epic_panel.go`; `epicDetailBody` and `epicAuditBody` use it
26
- - [ ] `shortID()` and `shortRouterID()` consolidated into single `shortID()` in `internal/board/card.go`; all call sites updated
27
- - [ ] `epicIndex()` and `releaseIndex()` consolidated into `sliceIndex(items []string, target string) int` in `internal/board/util.go`
28
- - [ ] `WrapText()` and `SplitLongWord()` moved to `internal/board/util.go`
29
- - [ ] `truncate()` moved to `internal/board/util.go`
30
- - [ ] `go test ./...` passes with no regressions
31
-
32
- ## Implementation Plan
33
-
34
- - [x] Add `normalizeLineEndings()` in `data/parser.go`; update call sites in `parser.go`, `write.go` (3 places), and `epic_panel.go`
35
- - [x] Add `SplitFrontmatterBody()` in `data/write.go`; refactor `updateFrontmatterField()` and `WriteTaskStatus()` to use it; eliminate duplicated body offset calculation
36
- - [x] Add `stripFrontmatter()` in `board/epic_panel.go`; refactor `epicDetailBody` and `epicAuditBody`
37
- - [x] Create `internal/board/util.go` with `sliceIndex`, `WrapText`, `SplitLongWord`, `truncate` moved from their current locations
38
- - [x] Consolidate `shortID`/`shortRouterID` into single `shortID` in `card.go`; update `view.go` callers
39
- - [x] Replace `epicIndex`/`releaseIndex` with `sliceIndex` from `util.go`; update `epic_panel.go` and `release.go`
40
- - [x] Run `make build && make test`
41
-
42
- ## Context Log
43
-
44
- - Files modified:
45
- - `internal/data/parser.go` — added `normalizeLineEndings()`, updated 3 call sites
46
- - `internal/data/write.go` — added `SplitFrontmatterBody()`, refactored `updateFrontmatterField()` and `WriteTaskStatus()`, updated 3 call sites to use `normalizeLineEndings()`
47
- - `internal/board/epic_panel.go` — added `stripFrontmatter()`, refactored `epicDetailBody` and `epicAuditBody`, replaced `epicIndex()` with `sliceIndex()`
48
- - `internal/board/card.go` — removed `truncate()` (moved to util.go)
49
- - `internal/board/detail.go` — removed `WrapText()` and `SplitLongWord()` (moved to util.go)
50
- - `internal/board/view.go` — replaced `shortRouterID()` with `shortID()`, removed `shortRouterID()`
51
- - `internal/board/release.go` — replaced `releaseIndex()` with `sliceIndex()`
52
- - `internal/board/update.go` — replaced `epicIndex()`/`releaseIndex()` with `sliceIndex()`
53
- - `internal/board/model.go` — replaced `epicIndex()` with `sliceIndex()`
54
- - Files created: `internal/board/util.go`
55
- - Test files updated: `epic_panel_test.go`, `release_test.go`
56
- - Quality gates: `make build` ✓, `make test` ✓ (all packages pass)
57
-
58
- ## Drift Notes
59
-
60
- No drift — `internal/board/util.go` is a new file within the existing `internal/board/` module, consistent with the Codebase Map. No architecture changes from Design.md.
@@ -1,33 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T004-infrastructure
3
- status: done
4
- objective: Remove committed binaries from git, add gitignore rules, add golangci-lint config, fix package.json test script
5
- depends_on: []
6
- ---
7
-
8
- # T004: Infrastructure — Gitignore, Linter Config, Binary Cleanup
9
-
10
- ## Context Files
11
-
12
- - `.gitignore` — missing entries for `savepoint`, `savepoint.exe`, `dist/`, `*.zip`
13
- - `package.json` — `scripts.test` is `"savepoint init"` (misleading)
14
- - Root directory — `savepoint`, `savepoint.exe` binaries tracked in git
15
- - No `.golangci.yml` exists
16
-
17
- ## Acceptance Criteria
18
-
19
- - [ ] `.gitignore` updated with entries for `savepoint`, `savepoint.exe`, `dist/`, `*.zip`
20
- - [ ] `git rm --cached` run on `savepoint`, `savepoint.exe`, `dist/`, `ink-cli-ui-design.zip` (if tracked)
21
- - [ ] `package.json` `scripts.test` changed to `echo "Run 'make test' for Go tests"` or removed
22
- - [ ] `.golangci.yml` added with linters: `unused`, `errcheck`, `staticcheck`, `govet`, `ineffassign`, `gosimple`
23
- - [ ] `golangci-lint run` passes (or only pre-existing issues are flagged)
24
- - [ ] `make build && make test` still passes
25
-
26
- ## Implementation Plan
27
-
28
- - [ ] Add `savepoint`, `savepoint.exe`, `dist/`, `*.zip` to `.gitignore`
29
- - [ ] Run `git rm --cached savepoint savepoint.exe` and remove `dist/` and `ink-cli-ui-design.zip` from tracking
30
- - [ ] Update `package.json` test script
31
- - [ ] Create `.golangci.yml` with recommended linters
32
- - [ ] Run `golangci-lint run` and review output
33
- - [ ] Run `make build && make test`
@@ -1,37 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T005-decompose-update
3
- status: done
4
- objective: Split the 521-line update.go into focused handler functions for each overlay type and board keys
5
- depends_on: []
6
- ---
7
-
8
- # T005: Decompose Update() Into Focused Handlers
9
-
10
- ## Context Files
11
-
12
- - `internal/board/update.go` — 521-line monolith; `Update()` is ~190 lines with deep nesting; `updateOverlay()` handles 5 overlay types
13
- - `internal/board/model.go` — 25+ field god struct
14
- - `internal/board/transitions.go` — task transition logic
15
-
16
- ## Acceptance Criteria
17
-
18
- - [x] `Update()` reduced to a dispatch that calls named handler functions
19
- - [x] `handleBoardKey(msg tea.KeyMsg, m Model) (Model, tea.Cmd)` extracted for board-level key handling
20
- - [x] Per-overlay handler functions extracted: `handleHelpOverlay()`, `handleEpicOverlay()`, `handleReleaseOverlay()`, `handleDetailOverlay()`, `handleEpicDetailOverlay()`
21
- - [x] `handleAdvanceTask()` and `handleRetreatTask()` extracted from the near-duplicate space/backspace handlers
22
- - [ ] `update.go` total line count reduced by at least 30% *(not met — see Drift Notes)*
23
- - [x] All existing tests pass without modification (behavior-preservation refactor)
24
- - [x] `go test ./...` passes
25
-
26
- ## Implementation Plan
27
-
28
- - [x] Extract `handleBoardKey(msg tea.KeyMsg, m Model) (Model, tea.Cmd)` from `Update()` main switch
29
- - [x] Extract overlay update logic into `handleHelpOverlay`, `handleEpicOverlay`, `handleReleaseOverlay`, `handleDetailOverlay`, `handleEpicDetailOverlay`
30
- - [x] Extract `handleAdvanceTask()` and `handleRetreatTask()` from space/backspace handlers (they share near-identical structure)
31
- - [x] Refactor `Update()` to be a thin dispatch: `switch overlay { case none: handleBoardKey; case help: handleHelpOverlay; ... }`
32
- - [x] Verify all `update_test.go` tests still pass
33
- - [x] Run `make build && make test`
34
-
35
- ## Drift Notes
36
-
37
- - AC `update.go` total line count reduced by at least 30% — not met: 543 lines vs 521 original (+22). The decomposition adds function-signature overhead from per-overlay handlers and dispatch that the original monolithic `updateOverlay()` did not have. Behavior is fully preserved and all 64 tests pass.
@@ -1,40 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T006-async-io
3
- status: done
4
- objective: Extract synchronous filesystem I/O from Update() into tea.Cmd async pattern following Bubble Tea conventions
5
- depends_on:
6
- - E13-audit-remediation/T005-decompose-update
7
- ---
8
-
9
- # T006: Extract I/O From Update() Into tea.Cmd Async Pattern
10
-
11
- ## Context Files
12
-
13
- - `internal/board/update.go` — `writeTaskStatus()`, `writeRouterTask()`, `writeRouterReleaseEpic()`, `readEpicDetailFile()`, `selectEpicPanelEpic()` perform synchronous I/O inside `Update()`
14
- - `internal/board/model.go` — `writeRouterReleaseEpic()` and `writeRouterTask()` methods on Model
15
- - `internal/board/watch.go` — `reloadTasks` silently swallows errors (returns `nil` on error)
16
-
17
- ## Acceptance Criteria
18
-
19
- - [x] All filesystem reads in `Update()` dispatch `tea.Cmd` functions that return result messages
20
- - [x] All filesystem writes in `Update()` dispatch `tea.Cmd` functions that return result messages
21
- - [x] `writeRouterTask` extracted to a `tea.Cmd` that returns a `routerWriteMsg` on success or `errorMsg` on failure
22
- - [x] `writeRouterReleaseEpic` extracted to a `tea.Cmd` that returns a `routerWriteMsg` on success or `errorMsg` on failure
23
- - [x] `writeTaskStatus` for task transitions extracted to a `tea.Cmd` that returns a `taskWriteMsg` or `errorMsg`
24
- - [x] `readEpicDetailFile` extracted to a `tea.Cmd` that returns the file content as a message
25
- - [x] `reloadTasks` in `watch.go` returns an `errorMsg` on failure instead of `nil`
26
- - [x] Status messages for write errors are displayed to the user (existing error display mechanism)
27
- - [x] No synchronous `os.ReadFile`, `os.WriteFile`, or `os.Stat` calls remain in `Update()` or `handleBoardKey()`
28
- - [x] `go test ./...` passes with no regressions
29
-
30
- ## Implementation Plan
31
-
32
- - [x] Define message types: `routerWriteMsg`, `taskWriteMsg`, `epicDetailMsg`, `auditContentMsg`, `errorMsg`
33
- - [x] Create `writeRouterTaskCmd` and `writeRouterReleaseEpicCmd` that write router state and return `routerWriteMsg` or `errorMsg`
34
- - [x] Create `writeTaskStatusCmd` for task transitions returning `taskWriteMsg` or `errorMsg`
35
- - [x] Create `readEpicDetailCmd` and `readEpicAuditCmd` for file reads
36
- - [x] Extract `selectEpicPanelEpic` I/O into a `tea.Cmd`
37
- - [x] Update `Update()` to dispatch commands and handle result messages in new branches
38
- - [x] Fix `reloadTasks` in `watch.go` to return `errorMsg` on error
39
- - [x] Update tests for async message pattern
40
- - [x] Run `make build && make test`
@@ -1,37 +0,0 @@
1
- ---
2
- id: E13-audit-remediation/T007-test-coverage
3
- status: done
4
- objective: Add tests for untested packages (buildtool, styles), convert repair matching to typed errors, fix minor test issues
5
- depends_on:
6
- - E13-audit-remediation/T001-safe-cleanup
7
- ---
8
-
9
- # T007: Test Coverage — Buildtool, Styles, Typed Repairs, Minor Fixes
10
-
11
- ## Context Files
12
-
13
- - `internal/buildtool/main.go` — zero test files
14
- - `internal/styles/palette.go` — zero test files
15
- - `internal/styles/styles.go` — zero test files
16
- - `internal/doctor/repairs.go` — substring-based error matching fragile
17
- - `internal/data/errors.go` — existing sentinel errors
18
- - `agent_skills_test.go` — hardcodes expected skill count of 6
19
-
20
- ## Acceptance Criteria
21
-
22
- - [ ] `internal/buildtool/main.go` has test coverage for `version()`, `splitCommand()` (if exists), and `localExecutable()`
23
- - [ ] `internal/styles/` has a test file verifying palette constants and color completeness
24
- - [ ] `SuggestRepair` in `repairs.go` accepts `error` and uses `errors.Is()` with sentinel errors from `data/errors.go` (and any new ones needed)
25
- - [ ] New sentinel errors added to `data/errors.go` for repair-matching: at minimum `ErrInvalidStatus`, `ErrMissingFrontmatter`, `ErrConfigNotFound`, `ErrStructureProblem`
26
- - [ ] `agent_skills_test.go` no longer hardcodes the skill count (derives it from directory listing)
27
- - [ ] `go test ./...` passes
28
-
29
- ## Implementation Plan
30
-
31
- - [ ] Create `internal/buildtool/main_test.go` with tests for `version()` (env var, flag override, git tag fallback) and `localExecutable()`
32
- - [ ] Create `internal/styles/styles_test.go` verifying all 3 color tiers exist for each named constant, and `color()` produces correct CompleteColor
33
- - [ ] Add new sentinel errors to `data/errors.go` for doctor repair matching
34
- - [ ] Refactor `SuggestRepair` to accept `error` and use `errors.Is()` instead of substring matching
35
- - [ ] Update `repairs_test.go` to test typed error matching
36
- - [ ] Fix `agent_skills_test.go` to derive expected skill count from directory listing
37
- - [ ] Run `make build && make test`