savepoint 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/.claude/settings.local.json +20 -0
  2. package/.prettierignore +4 -0
  3. package/.savepoint/Design.md +196 -0
  4. package/.savepoint/PRD.md +58 -0
  5. package/.savepoint/audit/E01-go-setup/proposals.md +166 -0
  6. package/.savepoint/audit/E01-go-setup/snapshot.md +71 -0
  7. package/.savepoint/audit/E01-scaffolding/proposals/AGENTS.md +66 -0
  8. package/.savepoint/audit/E01-scaffolding/proposals/Design.md +210 -0
  9. package/.savepoint/audit/E01-scaffolding/proposals/epic-Design.md +117 -0
  10. package/.savepoint/audit/E01-scaffolding/proposals/quality-review.md +101 -0
  11. package/.savepoint/audit/E01-scaffolding/snapshot.md +54 -0
  12. package/.savepoint/audit/E02-data-model/snapshot.md +128 -0
  13. package/.savepoint/audit/E02-data-readers/proposals.md +123 -0
  14. package/.savepoint/audit/E02-data-readers/snapshot.md +54 -0
  15. package/.savepoint/audit/E03-board-tui-core/proposals.md +146 -0
  16. package/.savepoint/audit/E03-board-tui-core/snapshot.md +57 -0
  17. package/.savepoint/audit/E03-cli-foundation/snapshot.md +106 -0
  18. package/.savepoint/audit/E04-board-components/proposals.md +118 -0
  19. package/.savepoint/audit/E04-board-components/snapshot.md +77 -0
  20. package/.savepoint/audit/E04-templates-and-prompts/snapshot.md +115 -0
  21. package/.savepoint/audit/E05-init-command/snapshot.md +125 -0
  22. package/.savepoint/audit/E05-phase-transitions/proposals.md +83 -0
  23. package/.savepoint/audit/E05-phase-transitions/snapshot.md +36 -0
  24. package/.savepoint/audit/E06-tui-board/snapshot.md +64 -0
  25. package/.savepoint/audit/E07-audit-pipeline/snapshot.md +165 -0
  26. package/.savepoint/audit/E08-board-workflow-cleanup/snapshot.md +65 -0
  27. package/.savepoint/config.yml +27 -0
  28. package/.savepoint/releases/v1/PRD.md +66 -0
  29. package/.savepoint/releases/v1/epics/E01-go-setup/Design.md +39 -0
  30. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +42 -0
  31. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +23 -0
  32. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +24 -0
  33. package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +23 -0
  34. package/.savepoint/releases/v1/epics/E02-data-readers/Design.md +61 -0
  35. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +29 -0
  36. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +30 -0
  37. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +29 -0
  38. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +29 -0
  39. package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +30 -0
  40. package/.savepoint/releases/v1/epics/E03-board-tui-core/Design.md +38 -0
  41. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +29 -0
  42. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +30 -0
  43. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +34 -0
  44. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +29 -0
  45. package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +42 -0
  46. package/.savepoint/releases/v1/epics/E04-board-components/Design.md +44 -0
  47. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +34 -0
  48. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +33 -0
  49. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +49 -0
  50. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +40 -0
  51. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +33 -0
  52. package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +34 -0
  53. package/.savepoint/releases/v1/epics/E05-phase-transitions/Design.md +38 -0
  54. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +29 -0
  55. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +31 -0
  56. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +31 -0
  57. package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +31 -0
  58. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/Design.md +42 -0
  59. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +39 -0
  60. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +52 -0
  61. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +52 -0
  62. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +53 -0
  63. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +39 -0
  64. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +36 -0
  65. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +38 -0
  66. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +41 -0
  67. package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +61 -0
  68. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +39 -0
  69. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +20 -0
  70. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +22 -0
  71. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +24 -0
  72. package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +22 -0
  73. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +118 -0
  74. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +9 -0
  75. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +45 -0
  76. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +48 -0
  77. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +43 -0
  78. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +45 -0
  79. package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +40 -0
  80. package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +142 -0
  81. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +27 -0
  82. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +28 -0
  83. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +29 -0
  84. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +30 -0
  85. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +29 -0
  86. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +29 -0
  87. package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +31 -0
  88. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +40 -0
  89. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +27 -0
  90. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +25 -0
  91. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +26 -0
  92. package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +24 -0
  93. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +122 -0
  94. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +28 -0
  95. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +28 -0
  96. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +27 -0
  97. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +29 -0
  98. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +34 -0
  99. package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +32 -0
  100. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +43 -0
  101. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +26 -0
  102. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +23 -0
  103. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +23 -0
  104. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +24 -0
  105. package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +22 -0
  106. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +48 -0
  107. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +26 -0
  108. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +28 -0
  109. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +27 -0
  110. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +42 -0
  111. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +24 -0
  112. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +24 -0
  113. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +27 -0
  114. package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +25 -0
  115. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +85 -0
  116. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +17 -0
  117. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +20 -0
  118. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +22 -0
  119. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +17 -0
  120. package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +16 -0
  121. package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +88 -0
  122. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +22 -0
  123. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +23 -0
  124. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +24 -0
  125. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +23 -0
  126. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +24 -0
  127. package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +28 -0
  128. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +53 -0
  129. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +23 -0
  130. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +26 -0
  131. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +25 -0
  132. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +28 -0
  133. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +28 -0
  134. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +23 -0
  135. package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +25 -0
  136. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +104 -0
  137. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +23 -0
  138. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +24 -0
  139. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +25 -0
  140. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +23 -0
  141. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +26 -0
  142. package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +24 -0
  143. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +88 -0
  144. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +23 -0
  145. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +23 -0
  146. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +23 -0
  147. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +27 -0
  148. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +25 -0
  149. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +24 -0
  150. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +26 -0
  151. package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +24 -0
  152. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +103 -0
  153. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +30 -0
  154. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +33 -0
  155. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +34 -0
  156. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +33 -0
  157. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +37 -0
  158. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +36 -0
  159. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +34 -0
  160. package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +41 -0
  161. package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +70 -0
  162. package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +68 -0
  163. package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +68 -0
  164. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/Design.md +26 -0
  165. package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +35 -0
  166. package/.savepoint/router.md +136 -0
  167. package/.savepoint/visual-identity.md +124 -0
  168. package/AGENTS.md +141 -0
  169. package/CLAUDE.md +1 -0
  170. package/GEMINI.md +1 -0
  171. package/LICENSE +21 -0
  172. package/Makefile +13 -0
  173. package/README.md +78 -0
  174. package/agent-skills/ink-tui-design/SKILL.md +309 -0
  175. package/agent-skills/ink-tui-design/references/component-patterns.md +371 -0
  176. package/agent-skills/ink-tui-design/references/hooks-guide.md +436 -0
  177. package/agent-skills/ink-tui-design/references/ink-gotchas.md +330 -0
  178. package/agent-skills/ink-tui-design/references/testing-patterns.md +384 -0
  179. package/agent-skills/savepoint-audit/SKILL.md +35 -0
  180. package/agent-skills/savepoint-build-task/SKILL.md +39 -0
  181. package/agent-skills/savepoint-create-plan/SKILL.md +28 -0
  182. package/agent-skills/savepoint-create-task/SKILL.md +31 -0
  183. package/agent-skills/savepoint-draft-prd/SKILL.md +32 -0
  184. package/agent-skills/savepoint-system-design/SKILL.md +33 -0
  185. package/agent-skills/superpowers/brainstorming/SKILL.md +165 -0
  186. package/agent-skills/superpowers/brainstorming/visual-companion.md +304 -0
  187. package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +193 -0
  188. package/agent-skills/superpowers/executing-plans/SKILL.md +77 -0
  189. package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +213 -0
  190. package/agent-skills/superpowers/receiving-code-review/SKILL.md +226 -0
  191. package/agent-skills/superpowers/requesting-code-review/SKILL.md +115 -0
  192. package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +160 -0
  193. package/agent-skills/superpowers/subagent-driven-development/SKILL.md +292 -0
  194. package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +27 -0
  195. package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +113 -0
  196. package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  197. package/agent-skills/superpowers/systematic-debugging/SKILL.md +305 -0
  198. package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +122 -0
  199. package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +130 -0
  200. package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +183 -0
  201. package/agent-skills/superpowers/test-driven-development/SKILL.md +389 -0
  202. package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +317 -0
  203. package/agent-skills/superpowers/verification-before-completion/SKILL.md +147 -0
  204. package/agent-skills/superpowers/writing-plans/SKILL.md +159 -0
  205. package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
  206. package/assets/banner.png +0 -0
  207. package/assets/logo.png +0 -0
  208. package/assets/strawman.png +0 -0
  209. package/go.mod +33 -0
  210. package/go.sum +73 -0
  211. package/ink-cli-ui-design.zip +0 -0
  212. package/internal/board/board.go +121 -0
  213. package/internal/board/board_test.go +99 -0
  214. package/internal/board/card.go +72 -0
  215. package/internal/board/card_test.go +111 -0
  216. package/internal/board/column.go +61 -0
  217. package/internal/board/column_test.go +81 -0
  218. package/internal/board/detail.go +140 -0
  219. package/internal/board/detail_test.go +233 -0
  220. package/internal/board/epic_panel.go +69 -0
  221. package/internal/board/epic_panel_test.go +246 -0
  222. package/internal/board/help.go +40 -0
  223. package/internal/board/help_test.go +85 -0
  224. package/internal/board/layout.go +58 -0
  225. package/internal/board/layout_test.go +89 -0
  226. package/internal/board/model.go +151 -0
  227. package/internal/board/model_test.go +67 -0
  228. package/internal/board/release.go +42 -0
  229. package/internal/board/release_test.go +177 -0
  230. package/internal/board/transitions.go +88 -0
  231. package/internal/board/transitions_test.go +141 -0
  232. package/internal/board/update.go +155 -0
  233. package/internal/board/update_test.go +128 -0
  234. package/internal/board/view.go +190 -0
  235. package/internal/board/view_test.go +147 -0
  236. package/internal/data/config.go +87 -0
  237. package/internal/data/config_test.go +73 -0
  238. package/internal/data/discover.go +152 -0
  239. package/internal/data/discover_test.go +106 -0
  240. package/internal/data/errors.go +9 -0
  241. package/internal/data/lifecycle.go +37 -0
  242. package/internal/data/lifecycle_test.go +38 -0
  243. package/internal/data/parser.go +189 -0
  244. package/internal/data/parser_test.go +216 -0
  245. package/internal/data/router.go +52 -0
  246. package/internal/data/router_test.go +35 -0
  247. package/internal/data/task.go +46 -0
  248. package/internal/data/task_test.go +51 -0
  249. package/internal/data/write.go +144 -0
  250. package/internal/data/write_test.go +456 -0
  251. package/internal/styles/palette.go +47 -0
  252. package/internal/styles/styles.go +122 -0
  253. package/main.exe +0 -0
  254. package/main.go +11 -0
  255. package/package.json +25 -0
  256. package/savepoint +0 -0
  257. package/savepoint.exe +0 -0
  258. package/scripts/vitest-preload.cjs +95 -0
  259. package/templates/project/.savepoint/Design.md +47 -0
  260. package/templates/project/.savepoint/PRD.md +34 -0
  261. package/templates/project/.savepoint/config.yml +27 -0
  262. package/templates/project/.savepoint/router.md +152 -0
  263. package/templates/project/.savepoint/visual-identity.md +122 -0
  264. package/templates/project/AGENTS.md +130 -0
  265. package/templates/prompts/audit-reconciliation.prompt.md +67 -0
  266. package/templates/prompts/design.prompt.md +43 -0
  267. package/templates/prompts/epic-design.prompt.md +43 -0
  268. package/templates/prompts/magic-prompt.prompt.md +7 -0
  269. package/templates/prompts/prd.prompt.md +42 -0
  270. package/templates/prompts/task-breakdown.prompt.md +54 -0
  271. package/templates/prompts/task-building.prompt.md +38 -0
  272. package/templates/prompts/task-planning.prompt.md +53 -0
  273. package/templates/release/v1/PRD.md +37 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run *)",
5
+ "Bash(npx prettier *)",
6
+ "Bash(npm test *)",
7
+ "Bash(npm install *)",
8
+ "Bash(npx vitest *)",
9
+ "Bash(echo \"lint exit: $?\")",
10
+ "Bash(echo \"format exit: $?\")",
11
+ "Bash(npx tsc *)",
12
+ "Bash(node --require ./scripts/vitest-preload.cjs ./node_modules/vitest/vitest.mjs run --configLoader runner --config vitest.config.js --reporter=verbose test/tui/components/Board.test.tsx)",
13
+ "Bash(node --require ./scripts/vitest-preload.cjs ./node_modules/vitest/vitest.mjs run --configLoader runner --config vitest.config.js --reporter=verbose test/tui/components/Board.test.tsx test/tui/components/App.test.tsx test/tui/components/DetailPane.test.tsx)",
14
+ "Bash(node --require ./scripts/vitest-preload.cjs ./node_modules/vitest/vitest.mjs run --configLoader runner --config vitest.config.js)",
15
+ "Bash(go test *)",
16
+ "Bash(go build *)",
17
+ "Bash(go vet *)"
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1,4 @@
1
+ dist/
2
+ coverage/
3
+ node_modules/
4
+ .claude/
@@ -0,0 +1,196 @@
1
+ ---
2
+ type: project-design
3
+ status: active
4
+ last_audited: E02-data-readers (2026-05-01)
5
+ ---
6
+
7
+ # Savepoint — System Architecture
8
+
9
+ > Project-level architecture. Audit-kept fresh: every epic's audit step merges its delta into this document.
10
+ >
11
+ > **Visual identity** lives separately in `.savepoint/visual-identity.md` and is loaded only for TUI/theme/visual tasks.
12
+
13
+ ## 1. Architecture model
14
+
15
+ - **File-only.** No MCP server in v1. Agents read and edit Markdown + YAML files directly using their native file tools.
16
+ - **Agent routing:** AGENTS.md → `.savepoint/router.md` → template prompts. See AGENTS.md Workflow section.
17
+ - **Bundled Agent Skills:** Savepoint ships with custom skills (`draft-prd`, `system-design`, `create-plan`, `create-task`, `build-task`, `audit`) to enforce each phase of the state machine.
18
+ - **Token-efficiency principle.**
19
+ - Cold session bootstrap: ~5–7K tokens (one-time per conversation).
20
+ - Per-task incremental: <2KB.
21
+ - Audit: 5–15KB.
22
+ - Anything that breaks these bounds violates the wedge.
23
+ - **Go data-reader boundary:** established in epic `E02-data-readers` (2026-05-01). `internal/data` owns Savepoint file parsing and discovery for the Go implementation: task frontmatter models, markdown YAML extraction, router state parsing, config theme defaults, release/epic/task directory listing, and boundary error sentinels.
24
+ - **Template assets** live under `templates/` with helpers in `src/templates/` (epic E04).
25
+ - **Init command** (`savepoint init`) validates, scaffolds, prints prompt, clipboard, optional install (epic E05).
26
+ - **Board command** (`savepoint board`) reads project, non-TTY fallback, Ink TUI, transition gates, mtime writes, audit signaling (epic E06).
27
+ - **Audit pipeline** (`savepoint audit`) resolves epic, skips, quality gates, snapshots, router transition, proposal review (epic E07).
28
+
29
+ ## 2. Directory layout
30
+
31
+ ```
32
+ <project-root>/
33
+ ├── AGENTS.md ← agent entry point
34
+ └── .savepoint/
35
+ ├── PRD.md ← project vision (rare changes)
36
+ ├── Design.md ← project architecture (this file)
37
+ ├── visual-identity.md ← design system; loaded conditionally for TUI work
38
+ ├── router.md ← state-machine routing
39
+ ├── config.yml ← theme, quality_gates, verify_strict
40
+ ├── audit/
41
+ │ └── {E##-epic}/
42
+ │ ├── snapshot.md
43
+ │ └── proposals/
44
+ │ └── proposals.md
45
+ └── releases/
46
+ └── v1/
47
+ ├── PRD.md ← release-scoped PRD
48
+ └── epics/
49
+ └── E##-{epic-name}/
50
+ ├── Design.md ← epic delta
51
+ └── tasks/
52
+ └── T001-slug.md
53
+ ```
54
+
55
+ AGENTS.md at root (uppercase, cross-vendor spec). Design.md in `.savepoint/` (working doc, not public-facing). visual-identity.md conditional — only loaded for TUI/theme/visual tasks. Subtasks are inline checklists inside task `.md` — never separate files. Epic folders and task files use `E##`/`T##` prefix. Scaffold assets live under `templates/`; generated projects receive rendered copies, not hardcoded strings.
56
+
57
+ ## 3. Hierarchy semantics
58
+
59
+ | Level | Definition |
60
+ | ------------ | -------------------------------------------------------------------------------------- |
61
+ | **Release** | The thing being built. One PRD per release. v1 = MVP. |
62
+ | **Epic** | A major feature within a release. Has its own Design.md (delta from project Design). |
63
+ | **Task** | Independently buildable. Objective-led. **Requires implementation plan before build.** |
64
+ | **Sub-task** | Inline checklist item — _evidence of the implementation plan_, not standalone work. |
65
+
66
+ ## 4. Status model & gates
67
+
68
+ Three statuses, with explicit gates:
69
+
70
+ | Status | Meaning | Entry gate |
71
+ | ------------- | -------------------------- | --------------------------------------------------------------- |
72
+ | `planned` | Ready to build | plan section non-empty |
73
+ | `in_progress` | AI building | all `depends_on` are `done` |
74
+ | `done` | Complete for current scope | all implementation items checked; verification per project mode |
75
+
76
+ - `blocked` is a **flag**, not a status — `in_progress` + `blocked: "reason"` is valid.
77
+ - `done -> in_progress` is allowed so completed work can be reopened when follow-up work is required.
78
+ - Verification mode: see `config.yml`.
79
+
80
+ ## 5. Dependencies
81
+
82
+ - Declared in YAML frontmatter: `depends_on: [E##-epic/T###-task-id, ...]` (repo-relative IDs).
83
+ - `src/validation/dependencies.ts` detects duplicate task IDs, missing dependencies, and dependency cycles.
84
+ - Cross-epic deps allowed but warned (signal that epic boundaries may be wrong).
85
+
86
+ ## 6. CLI surface (4 commands, no extras)
87
+
88
+ | Command | Purpose |
89
+ | ---------------------- | --------------------------------------------------------------------------------- |
90
+ | `savepoint init` | Scaffold `.savepoint/`, print magic prompt to stdout + clipboard |
91
+ | `savepoint board` | Launch TUI; auto-falls-back to plain table on non-TTY |
92
+ | `savepoint audit` | Run audit pipeline (`--skip --reason`, `--epic`) |
93
+ | `savepoint doctor` | Integrity check + ad-hoc quality-gate run + Layer-2 prompt for AI semantic review |
94
+ | `--version` / `--help` | Standard global flags |
95
+
96
+ - Bare `savepoint` prints help.
97
+ - Source modules: see AGENTS.md Codebase Map.
98
+ - **Explicitly rejected:** `task new`, `epic new`, `release new`, `plan`, `next`, `status`, `task done`. All are file edits or TUI actions.
99
+
100
+ **Names:** npm package `savepoint`; binary `savepoint`. No `vk` alias.
101
+ ## 7. Audit pipeline (6 steps)
102
+
103
+ ```
104
+ 0. Quality Gates — CLI runs configured commands. Halts on failure if block_on_failure: true.
105
+ 1. Snapshot — CLI writes file tree (gitignore-respecting) + changed-files list. NO code contents.
106
+ 2. Diff Brief — State flips to audit_pending: {E##-epic}. Magic prompt printed to user.
107
+ 3. Reconcile — Agent reads epic Design + snapshot + scoped code. Writes one proposal bundle to
108
+ .savepoint/audit/{E##-epic}/proposals.md.
109
+ 4. Review — TUI shows side-by-side per-proposal diff. Approve / reject / edit each.
110
+ 5. Commit — Approved proposals overwrite live files. Epic gets status: audited. Next epic unlocks.
111
+ ```
112
+
113
+ - `audit_pending` is a **hard gate**: next epic's tasks cannot enter `in_progress` until prior epic is `audited`.
114
+ - **High-divergence guard:** if a proposal changes >50% of the live file, TUI requires extra confirmation (threshold tunable in `config.yml`).
115
+ - **Skip allowed** via `savepoint audit --skip --reason "..."`. Logged to `.savepoint/audit-log.md`. Permanent `⚠ skipped` badge in TUI.
116
+ - **Proposal bundles** use delta-shaped edits: `Insert After`, `Replace`, or `Delete` blocks anchored to exact text.
117
+ - **Quality review** is a section inside the proposal bundle.
118
+ - **Snapshot availability is an audit precondition.** The router should enter `audit-pending` only after `.savepoint/audit/{E##-epic}/snapshot.md` exists.
119
+
120
+ Three layers:
121
+
122
+ - **Layer 1 (mechanical):** user's chosen linter. Recommended: eslint+dependency-cruiser (TS), radon+pylint (Python), gocyclo+staticcheck (Go). Cross-language fallback: `lizard`. Quality gate config: see `.savepoint/config.yml`.
123
+ - **Layer 2 (AI semantic review):** baked into the audit reconcile prompt. Outputs a quality-review section in the proposal bundle. **Advisory, not blocking.**
124
+ - **Layer 3:** `savepoint doctor` runs Layer 1 + prints Layer 2 prompt for ad-hoc use.
125
+
126
+ ## 8. TUI
127
+
128
+ **Theming:** Atari-Noir is the default theme. **For full design tokens, palette, and rendering rules, see `.savepoint/visual-identity.md`** (loaded conditionally for TUI tasks). Live values in `config.yml` `theme:` section.
129
+
130
+ Acknowledged terminal limits: fonts, scanlines, glows, letter-spacing, mouse-driven motion don't translate. Lean on color discipline + box-drawing geometry + uppercase headings.
131
+
132
+ **Render fallbacks:** 256-color → 16-color hard-coded → `NO_COLOR=1` monochrome with glyphs → non-TTY plain table.
133
+
134
+ **Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
135
+
136
+ **Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
137
+
138
+ **Keybindings:** arrow/vim navigation, enter advances, backspace retreats, r/R refreshes, a/A exits toward audit review when proposals exist, q quits.
139
+
140
+ ## 9. Concurrency
141
+
142
+ - **mtime-based optimistic concurrency.** TUI status writes compare the expected task-file mtime before parsing and again immediately before a no-op or write; conflicts are reported as non-destructive messages that require manual refresh before retry.
143
+ - Agents edit freely; the TUI defers.
144
+ - **No lockfile.**
145
+
146
+ ## 10. Release versioning (PRDs)
147
+
148
+ - Sequential integer (`v1`, `v2`). Optional `name` in YAML.
149
+ - `savepoint doctor` warns when creating `v2` while `v1` has un-audited epics.
150
+
151
+ ## 11. Failure modes
152
+
153
+ All failure modes are diagnosed by `savepoint doctor`. Doctor diagnoses and proposes; never auto-destructive.
154
+
155
+ | Failure | Behavior |
156
+ | -------------------------------------------- | ----------------------------------------------------------- |
157
+ | Corrupt YAML | Doctor flags file:line. TUI marks `⚠ corrupt`, refuses ops. |
158
+ | Missing dep | Doctor flags. TUI shows `⚠ broken dep`. |
159
+ | Dependency cycle | Doctor refuses to start either side; prints cycle path. |
160
+ | Duplicate task ID | Doctor flags. |
161
+ | Audit proposals without `audit_pending` flag | Doctor offers cleanup or restore. |
162
+ | Task in nonexistent epic | Doctor moves to `.savepoint/orphans/`. |
163
+ | Missing `config.yml` | All commands except `init` refuse. |
164
+ | Unknown CLI flag | Show help, exit 1. |
165
+
166
+ ## 12. Distribution & build
167
+
168
+ > Audit note: the live repository is transitioning from the documented TypeScript/Node implementation to a Go module (`github.com/opencode/savepoint`). The architecture document still contains substantial TypeScript-era implementation detail and should be reconciled as Go epics are audited.
169
+
170
+ - **License:** MIT.
171
+ - **Install:** primary `npx savepoint init`, persistent `npm i -g savepoint` → `savepoint`.
172
+ - **Runtime:** Node 20.10+ LTS, ESM-only, no native deps. macOS / Linux / Windows-Terminal.
173
+ - **Repo:** single package. TypeScript strict. `tsup` build → `dist/`. Bin `dist/cli.js` shebanged.
174
+ - **No telemetry.** Ever.
175
+
176
+ ## 13. Testing
177
+
178
+ | Layer | Tool | Coverage |
179
+ | -------------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------- |
180
+ | Unit: file ops, YAML, frontmatter, snapshot gen | `vitest` | High |
181
+ | Unit: state transitions, dep resolution, cycle detection | `vitest` | High |
182
+ | Integration: CLI commands in temp dirs | `vitest` + `tmp` | Medium |
183
+ | TUI reducers (state, isolated from rendering) | `vitest` + `ink-testing-library` | Medium |
184
+ | TUI rendering (snapshot tests) | — | **None.** Brittle. |
185
+ | End-to-end with real AI agents | Manual matrix | Pre-release: `[Claude, Cursor, Gemini, Aider]` × `[init, plan, audit]` |
186
+
187
+ ~70% line coverage target; behavior coverage prioritized.
188
+
189
+ ## 14. Package versioning
190
+
191
+ - `0.1.0` — first public release: scaffolding, status model, CLI, basic TUI, audit (no AI semantic review).
192
+ - `0.2.0` — AI semantic review + broader quality-gate language presets.
193
+ - `0.3.0` — file watching, search.
194
+ - `1.0.0` — MCP server + production stability.
195
+
196
+ Strict semver. Pre-1.0 minors may break.
@@ -0,0 +1,58 @@
1
+ ---
2
+ type: project-prd
3
+ status: active
4
+ ---
5
+
6
+ # Savepoint — Product Vision
7
+
8
+ ## What it is
9
+
10
+ A public OSS CLI + Ink-based TUI that scaffolds an opinionated AI-driven development workflow. The user runs `npx savepoint init` in an empty directory, points any AI agent (Claude / Cursor / Cline / Gemini / Aider / Codex) at the project, and the embedded prompt templates carry the agent through:
11
+
12
+ > **PRD → Design → Epics → Tasks → Build → Audit**
13
+
14
+ …with hard gates at each transition.
15
+
16
+ run dev npm run build && node dist/cli.js board to test
17
+
18
+ ## Why
19
+
20
+ Three failure modes plague AI-driven development today:
21
+
22
+ 1. **Inconsistency.** No repeatable process from high-level intent to working MVP.
23
+ 2. **Token bloat.** Monolithic backlogs and MCP overhead burn context for everyone, but especially users on minimal AI plans.
24
+ 3. **Documentation drift.** `Design.md` and agent instructions go stale after the first iteration; nobody updates them.
25
+
26
+ Savepoint addresses all three with a single mechanism: **a file-based state machine that any agent can follow, where every epic completion forces a documentation audit before the next epic can start.**
27
+
28
+ ## Target user
29
+
30
+ **Vibe coders** — builders with minimal-to-moderate development experience, on minimal AI plans, who want AI agents to drive most of the implementation while a structured workflow keeps the project coherent.
31
+
32
+ Not: experienced engineers who already have their own systems. (They can still use it; they're not the audience.)
33
+
34
+ ## Headline differentiator
35
+
36
+ **The Audit Loop.** When the last task in an epic moves to `done`, the next epic cannot start until `Design.md`, `AGENTS.md`, and the epic's own design have been reconciled with the actual code that was built. No existing markdown-first task tool has this gate.
37
+
38
+ Token-efficient hierarchy and markdown-first storage are table stakes. The audit loop is the marketing-first feature.
39
+
40
+ ## Success metrics
41
+
42
+ - **Token usage:** AI agents complete tasks reading <2KB of context per task. Audit budget bounded to ~5–15KB.
43
+ - **Documentation accuracy:** zero drift — `AGENTS.md` always correctly maps the current codebase, enforced by gate.
44
+ - **Agent reach:** works with any agent that can read markdown and edit files (no MCP required, no per-agent adapters).
45
+ - **Time-to-first-PR:** a vibe coder can go from `npx savepoint init` to a merged epic in one weekend.
46
+
47
+ ## Constraints
48
+
49
+ - File-only architecture for v1. No MCP server.
50
+ - Agent-agnostic via the [Router Pattern](Design.md). No per-agent forks.
51
+ - Recommended planning model is top-tier (Opus / Gemini Pro / GPT-5.5 equivalent). Lighter models work for execution but planning fidelity drops.
52
+
53
+ ## Out of scope (forever or for now)
54
+
55
+ - Telemetry. Ever.
56
+ - Multi-user collaboration / cloud sync.
57
+ - Mouse / drag-and-drop in the TUI.
58
+ - Per-language adapter code (we recommend tools, don't ship them).
@@ -0,0 +1,166 @@
1
+ # E01-go-setup Audit Proposals
2
+
3
+ ## Target File
4
+
5
+ `.savepoint/Design.md`
6
+
7
+ ## Replace
8
+
9
+ ```md
10
+ ## 12. Distribution & build
11
+
12
+ - **License:** MIT.
13
+ - **Install:** primary `npx savepoint init`, persistent `npm i -g savepoint` → `savepoint`.
14
+ - **Runtime:** Node 20.10+ LTS, ESM-only, no native deps. macOS / Linux / Windows-Terminal.
15
+ - **Repo:** single package. TypeScript strict. `tsup` build → `dist/`. Bin `dist/cli.js` shebanged.
16
+ - **No telemetry.** Ever.
17
+ - **Baseline scaffold:** established in epic `E01-scaffolding` (2026-04-27). Package name `savepoint`, version `0.1.0`. Build, typecheck, lint, format, and test gates all pass.
18
+ ```
19
+
20
+ ## With
21
+
22
+ ```md
23
+ ## 12. Distribution & build
24
+
25
+ - **License:** MIT.
26
+ - **Install:** local Go build during the rewrite; public install channel remains release work.
27
+ - **Runtime:** Go 1.23+ target, single native binary. macOS / Linux / Windows-Terminal.
28
+ - **Repo:** Go module `github.com/opencode/savepoint`. Build with `go build`; test with `go test ./...`.
29
+ - **No telemetry.** Ever.
30
+ - **Go baseline scaffold:** established in epic `E01-go-setup` (2026-05-01). The project now has `go.mod`, `go.sum`, `main.go`, `internal/board`, and Makefile shortcuts for build/test/run/clean.
31
+ ```
32
+
33
+ ## Target File
34
+
35
+ `.savepoint/Design.md`
36
+
37
+ ## Insert After
38
+
39
+ ```md
40
+ ## 8. TUI
41
+ ```
42
+
43
+ ## With
44
+
45
+ ```md
46
+
47
+ **Go rewrite baseline:** E01 creates a minimal Bubble Tea shell in `internal/board`. The root `main.go` delegates process startup to `board.Run()`, which owns the Bubble Tea program lifecycle. Later board epics should move richer rendering, input state, and styling into focused packages rather than expanding `main.go`.
48
+ ```
49
+
50
+ ## Target File
51
+
52
+ `AGENTS.md`
53
+
54
+ ## Replace
55
+
56
+ ~~~~md
57
+ ## Build / Test / Run
58
+
59
+ ```bash
60
+ npm run build # compile src/ → dist/cli.js via tsup (ESM, node20)
61
+ npm run typecheck # tsc --noEmit strict check (NodeNext)
62
+ npm run lint # eslint flat config — rejects any in TypeScript
63
+ npm run format:check # prettier check across src, test, config, markdown
64
+ npm test # vitest smoke suite
65
+ ```
66
+ ~~~~
67
+
68
+ ## With
69
+
70
+ ````md
71
+ ## Build / Test / Run
72
+
73
+ ```bash
74
+ go build ./... # compile all Go packages
75
+ go test ./... # run Go test suite
76
+ make build # shortcut: go build -o savepoint main.go
77
+ make test # shortcut: go test ./...
78
+ make run # shortcut: go run main.go
79
+ ```
80
+ ````
81
+
82
+ ## Target File
83
+
84
+ `AGENTS.md`
85
+
86
+ ## Replace
87
+
88
+ ```md
89
+ <!-- AUTO-GENERATED BY savepoint audit. Do not edit manually. -->
90
+ ```
91
+
92
+ ## With
93
+
94
+ ```md
95
+ <!-- AUTO-GENERATED BY savepoint audit. Do not edit manually. -->
96
+
97
+ | Module | Epic | Purpose |
98
+ | ------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------- |
99
+ | `go.mod` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Go module definition for the Savepoint CLI rewrite |
100
+ | `go.sum` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Dependency checksums for Bubble Tea, Lip Gloss, YAML, and deps |
101
+ | `main.go` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Process entrypoint; delegates Bubble Tea startup to board.Run |
102
+ | `Makefile` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Local build, test, run, and clean shortcuts |
103
+ | `internal/board/board.go` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Minimal Bubble Tea model, quit handling, and program lifecycle |
104
+ ```
105
+
106
+ ## Target File
107
+
108
+ `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
109
+
110
+ ## Replace
111
+
112
+ ```md
113
+ status: planned
114
+ ```
115
+
116
+ ## With
117
+
118
+ ```md
119
+ status: audited
120
+ ```
121
+
122
+ ## Target File
123
+
124
+ `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
125
+
126
+ ## Insert After
127
+
128
+ ```md
129
+ ## Components and files
130
+ ```
131
+
132
+ ## With
133
+
134
+ ```md
135
+
136
+ ## Implemented as
137
+
138
+ - `go.mod` uses module path `github.com/opencode/savepoint` and Go `1.26.2` in the current local toolchain.
139
+ - `main.go` is intentionally thin and delegates to `internal/board.Run()`.
140
+ - `internal/board/board.go` contains the first Bubble Tea model, `q`/`ctrl+c` quit handling, and the program runner.
141
+ - `Makefile` provides build/test/run/clean shortcuts, but `make` is not available in the audited Windows environment.
142
+ - `cmd/` and `internal/styles/` currently exist as empty directories. Add placeholder files if those directories must survive git checkout before later epics add code.
143
+ ```
144
+
145
+ ## Quality Review
146
+
147
+ ## Must Fix Before Close
148
+
149
+ - `internal/data/discover_test.go` fails `go test ./...` because imports `os` and `path/filepath` are unused. This is active E02 work, not E01 code, but it blocks the repo-level quality gate.
150
+
151
+ ## Must Fix Before Next Epic
152
+
153
+ - `AGENTS.md` and `.savepoint/Design.md` still describe the old TypeScript/npm architecture and quality gates in several sections. Apply or refine the proposal sections above so future agents do not follow stale commands.
154
+ - `cmd/` and `internal/styles/` are empty directories. Git will not preserve them unless later code lands there or placeholders are added.
155
+
156
+ ## Carry Forward
157
+
158
+ - `internal/board/board.go` currently writes errors to stderr inside `Run()` and `main.go` panics on the returned error. Before the CLI grows real command handling, centralize boundary error presentation so failures do not double-report or emit stack-like panic output.
159
+ - `Makefile` uses `rm -f savepoint`, which is fine under POSIX shells but is not enough for native Windows cleanup of `savepoint.exe`. Consider making clean cross-platform or documenting the expected shell.
160
+
161
+ ## Already Fixed
162
+
163
+ - `go build ./...` passes outside the sandbox.
164
+ - The root TypeScript scaffold files are removed from the working tree as required by the E01 definition of done.
165
+ - `main.go` delegates to `internal/board`, and `q`/`ctrl+c` quit handling is implemented.
166
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md` now has checked implementation items and a `## Context Log`.
@@ -0,0 +1,71 @@
1
+ ---
2
+ type: audit-snapshot
3
+ epic: E01-go-setup
4
+ created: 2026-05-01
5
+ mode: manual
6
+ ---
7
+
8
+ # E01-go-setup Audit Snapshot
9
+
10
+ Manual snapshot created because the router was already on E02 and the audit CLI is not the source of truth for this Go rewrite state.
11
+
12
+ ## Epic Scope
13
+
14
+ - Initialize Go module `github.com/opencode/savepoint`.
15
+ - Add Bubble Tea, Lip Gloss, and YAML dependencies.
16
+ - Add root `main.go` entrypoint.
17
+ - Add `internal/board` Bubble Tea shell.
18
+ - Add `cmd/`, `internal/data/`, and `internal/styles/` directories.
19
+ - Add `Makefile` targets for build, test, run, and clean.
20
+ - Remove the old TypeScript/npm root scaffold.
21
+
22
+ ## Files Read
23
+
24
+ - `.savepoint/router.md`
25
+ - `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
26
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md`
27
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md`
28
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md`
29
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md`
30
+ - `agent-skills/ink-tui-design/SKILL.md`
31
+ - `.savepoint/visual-identity.md`
32
+ - `.savepoint/Design.md`
33
+ - `AGENTS.md`
34
+ - `go.mod`
35
+ - `go.sum`
36
+ - `main.go`
37
+ - `internal/board/board.go`
38
+ - `Makefile`
39
+
40
+ ## Changed Files in Epic Scope
41
+
42
+ - `go.mod`
43
+ - `go.sum`
44
+ - `main.go`
45
+ - `internal/board/board.go`
46
+ - `Makefile`
47
+ - `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
48
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md`
49
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md`
50
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md`
51
+ - `.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md`
52
+
53
+ ## Directory Checks
54
+
55
+ - `cmd/` exists.
56
+ - `internal/board/` exists and contains `board.go`.
57
+ - `internal/data/` exists but currently contains E02 data-reader work, outside E01 scope.
58
+ - `internal/styles/` exists but is empty.
59
+
60
+ ## Verification
61
+
62
+ - `go env GOVERSION`: `go1.26.2`
63
+ - `go build ./...`: pass when run outside the sandbox.
64
+ - `go test ./...`: fail. Failure is in `internal/data/discover_test.go` from active E02 work: unused imports `os` and `path/filepath`.
65
+ - `make test`: not runnable in this Windows environment because `make` is not installed.
66
+
67
+ ## Notes
68
+
69
+ - The router currently points to `E02-data-readers/T001-task-struct`, so this audit is an explicit manual override for E01.
70
+ - The working tree contains a broad TypeScript-to-Go rewrite. Deleted TypeScript files are not treated as E01 regressions because the E01 design explicitly requires removing the TypeScript root scaffold.
71
+ - Empty directories such as `cmd/` and `internal/styles/` are not represented by `git ls-files` unless placeholder files are added.
@@ -0,0 +1,66 @@
1
+ # Agents Guide
2
+
3
+ Welcome, AI agent. This project (`savepoint`) uses its own conventions to manage its own build. You are about to dogfood the workflow.
4
+
5
+ ## Workflow
6
+
7
+ Before doing anything, read `.savepoint/router.md`. That file routes you to the next file based on the project's current state.
8
+
9
+ When you are about to write code, you must first read, in order:
10
+
11
+ 1. `.savepoint/PRD.md` — what we are building and why
12
+ 2. `.savepoint/Design.md` — how the system is architected
13
+ 3. The release PRD: `.savepoint/releases/v1/PRD.md`
14
+ 4. The epic Design: `.savepoint/releases/v1/epics/{epic}/Design.md`
15
+ 5. The active task file: `.savepoint/releases/v1/epics/{epic}/tasks/{NNN}-*.md`
16
+
17
+ **Conditional read:** if the active task touches TUI rendering, theme, or visual design, also read `.savepoint/visual-identity.md`. Otherwise skip it — it's ~1.8K tokens you don't need.
18
+
19
+ **Do not load files outside the current task scope** unless the task requires it. Token discipline is the wedge of this product; we honor it on ourselves.
20
+
21
+ ## Build / Test / Run
22
+
23
+ ```bash
24
+ npm run build # compile src/ → dist/cli.js via tsup (ESM, node20)
25
+ npm run typecheck # tsc --noEmit strict check (NodeNext)
26
+ npm run lint # eslint flat config — rejects any in TypeScript
27
+ npm run format:check # prettier check across src, test, config, markdown
28
+ npm test # vitest smoke suite
29
+ ```
30
+
31
+ > **Windows note:** `npm test` uses a custom preload script (`scripts/vitest-preload.cjs`) and `vitest.config.js` (not `.ts`) to work around a Windows-specific child_process/esbuild issue. This is transparent when running through npm scripts.
32
+
33
+ ## Code Style
34
+
35
+ 1. **One job per file.** If a file does two things, split it.
36
+ 2. **One-sentence rule.** If you can't describe a function in one sentence, refactor.
37
+ 3. **Test what branches.** Logic with if/else/switch gets a test. Pure rendering: skip.
38
+ 4. **Types are documentation.** No `any`. Let the compiler help.
39
+ 5. **Build, don't speculate.** No code for hypothetical futures.
40
+ 6. **Errors at boundaries.** Handle failure where data enters or leaves the system.
41
+ 7. **One source of truth.** State lives in one place. No syncing copies.
42
+ 8. **Comments explain WHY,** not what. If removing the comment wouldn't confuse a future reader, delete it.
43
+ 9. **Content in data files.** Markdown/JSON/YAML, not strings in code.
44
+ 10. **Small diffs.** Each task touches as few files as possible.
45
+
46
+ ## Codebase Map
47
+
48
+ <!-- AUTO-GENERATED BY savepoint audit. Do not edit manually. -->
49
+
50
+ | Module | Epic | Purpose |
51
+ | -------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------- |
52
+ | `src/cli.ts` | [E01-scaffolding](.savepoint/releases/v1/epics/E01-scaffolding/Design.md) | CLI entrypoint; placeholder help/version output |
53
+ | `src/version.ts` | [E01-scaffolding](.savepoint/releases/v1/epics/E01-scaffolding/Design.md) | Single source for package version string |
54
+ | `test/smoke.test.ts` | [E01-scaffolding](.savepoint/releases/v1/epics/E01-scaffolding/Design.md) | Baseline Vitest smoke test proving test runner works |
55
+
56
+ <!-- END AUTO-GENERATED -->
57
+
58
+ ## CLI rules for agents
59
+
60
+ **Never run `savepoint` commands.** The CLI is for the human. Edit files directly.
61
+
62
+ (For this repo specifically: `savepoint` doesn't exist yet — we're building it. Even once it exists, this rule stands.)
63
+
64
+ ## Recommended planning models
65
+
66
+ For PRD/Design/Task planning, this workflow assumes a top-tier model: Claude Opus, Gemini 2.5 Pro, GPT-5.5, or equivalent. Lighter models may not follow embedded prompt instructions reliably. If you are not one of those, advise the user before proceeding with planning steps.