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.
- package/.claude/settings.local.json +20 -0
- package/.prettierignore +4 -0
- package/.savepoint/Design.md +196 -0
- package/.savepoint/PRD.md +58 -0
- package/.savepoint/audit/E01-go-setup/proposals.md +166 -0
- package/.savepoint/audit/E01-go-setup/snapshot.md +71 -0
- package/.savepoint/audit/E01-scaffolding/proposals/AGENTS.md +66 -0
- package/.savepoint/audit/E01-scaffolding/proposals/Design.md +210 -0
- package/.savepoint/audit/E01-scaffolding/proposals/epic-Design.md +117 -0
- package/.savepoint/audit/E01-scaffolding/proposals/quality-review.md +101 -0
- package/.savepoint/audit/E01-scaffolding/snapshot.md +54 -0
- package/.savepoint/audit/E02-data-model/snapshot.md +128 -0
- package/.savepoint/audit/E02-data-readers/proposals.md +123 -0
- package/.savepoint/audit/E02-data-readers/snapshot.md +54 -0
- package/.savepoint/audit/E03-board-tui-core/proposals.md +146 -0
- package/.savepoint/audit/E03-board-tui-core/snapshot.md +57 -0
- package/.savepoint/audit/E03-cli-foundation/snapshot.md +106 -0
- package/.savepoint/audit/E04-board-components/proposals.md +118 -0
- package/.savepoint/audit/E04-board-components/snapshot.md +77 -0
- package/.savepoint/audit/E04-templates-and-prompts/snapshot.md +115 -0
- package/.savepoint/audit/E05-init-command/snapshot.md +125 -0
- package/.savepoint/audit/E05-phase-transitions/proposals.md +83 -0
- package/.savepoint/audit/E05-phase-transitions/snapshot.md +36 -0
- package/.savepoint/audit/E06-tui-board/snapshot.md +64 -0
- package/.savepoint/audit/E07-audit-pipeline/snapshot.md +165 -0
- package/.savepoint/audit/E08-board-workflow-cleanup/snapshot.md +65 -0
- package/.savepoint/config.yml +27 -0
- package/.savepoint/releases/v1/PRD.md +66 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/Design.md +39 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +42 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +23 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +24 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +23 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/Design.md +61 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +29 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +30 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +29 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +29 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +30 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/Design.md +38 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +29 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +30 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +34 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +29 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +42 -0
- package/.savepoint/releases/v1/epics/E04-board-components/Design.md +44 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +34 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +33 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +49 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +40 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +33 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +34 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/Design.md +38 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +29 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +31 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +31 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +31 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/Design.md +42 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +39 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +52 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +52 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +53 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +39 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +36 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +38 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +41 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +61 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +39 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +20 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +118 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +9 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +45 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +48 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +43 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +45 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +40 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +142 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +30 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +31 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +40 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +122 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +34 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +32 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +43 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +48 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +42 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +85 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +17 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +20 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +17 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +16 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +88 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +53 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +104 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +88 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +103 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +30 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +33 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +34 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +33 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +37 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +36 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +34 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +41 -0
- package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +70 -0
- package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +68 -0
- package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +68 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/Design.md +26 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +35 -0
- package/.savepoint/router.md +136 -0
- package/.savepoint/visual-identity.md +124 -0
- package/AGENTS.md +141 -0
- package/CLAUDE.md +1 -0
- package/GEMINI.md +1 -0
- package/LICENSE +21 -0
- package/Makefile +13 -0
- package/README.md +78 -0
- package/agent-skills/ink-tui-design/SKILL.md +309 -0
- package/agent-skills/ink-tui-design/references/component-patterns.md +371 -0
- package/agent-skills/ink-tui-design/references/hooks-guide.md +436 -0
- package/agent-skills/ink-tui-design/references/ink-gotchas.md +330 -0
- package/agent-skills/ink-tui-design/references/testing-patterns.md +384 -0
- package/agent-skills/savepoint-audit/SKILL.md +35 -0
- package/agent-skills/savepoint-build-task/SKILL.md +39 -0
- package/agent-skills/savepoint-create-plan/SKILL.md +28 -0
- package/agent-skills/savepoint-create-task/SKILL.md +31 -0
- package/agent-skills/savepoint-draft-prd/SKILL.md +32 -0
- package/agent-skills/savepoint-system-design/SKILL.md +33 -0
- package/agent-skills/superpowers/brainstorming/SKILL.md +165 -0
- package/agent-skills/superpowers/brainstorming/visual-companion.md +304 -0
- package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +193 -0
- package/agent-skills/superpowers/executing-plans/SKILL.md +77 -0
- package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +213 -0
- package/agent-skills/superpowers/receiving-code-review/SKILL.md +226 -0
- package/agent-skills/superpowers/requesting-code-review/SKILL.md +115 -0
- package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +160 -0
- package/agent-skills/superpowers/subagent-driven-development/SKILL.md +292 -0
- package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +27 -0
- package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +113 -0
- package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/agent-skills/superpowers/systematic-debugging/SKILL.md +305 -0
- package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +122 -0
- package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +130 -0
- package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +183 -0
- package/agent-skills/superpowers/test-driven-development/SKILL.md +389 -0
- package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +317 -0
- package/agent-skills/superpowers/verification-before-completion/SKILL.md +147 -0
- package/agent-skills/superpowers/writing-plans/SKILL.md +159 -0
- package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/assets/banner.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/strawman.png +0 -0
- package/go.mod +33 -0
- package/go.sum +73 -0
- package/ink-cli-ui-design.zip +0 -0
- package/internal/board/board.go +121 -0
- package/internal/board/board_test.go +99 -0
- package/internal/board/card.go +72 -0
- package/internal/board/card_test.go +111 -0
- package/internal/board/column.go +61 -0
- package/internal/board/column_test.go +81 -0
- package/internal/board/detail.go +140 -0
- package/internal/board/detail_test.go +233 -0
- package/internal/board/epic_panel.go +69 -0
- package/internal/board/epic_panel_test.go +246 -0
- package/internal/board/help.go +40 -0
- package/internal/board/help_test.go +85 -0
- package/internal/board/layout.go +58 -0
- package/internal/board/layout_test.go +89 -0
- package/internal/board/model.go +151 -0
- package/internal/board/model_test.go +67 -0
- package/internal/board/release.go +42 -0
- package/internal/board/release_test.go +177 -0
- package/internal/board/transitions.go +88 -0
- package/internal/board/transitions_test.go +141 -0
- package/internal/board/update.go +155 -0
- package/internal/board/update_test.go +128 -0
- package/internal/board/view.go +190 -0
- package/internal/board/view_test.go +147 -0
- package/internal/data/config.go +87 -0
- package/internal/data/config_test.go +73 -0
- package/internal/data/discover.go +152 -0
- package/internal/data/discover_test.go +106 -0
- package/internal/data/errors.go +9 -0
- package/internal/data/lifecycle.go +37 -0
- package/internal/data/lifecycle_test.go +38 -0
- package/internal/data/parser.go +189 -0
- package/internal/data/parser_test.go +216 -0
- package/internal/data/router.go +52 -0
- package/internal/data/router_test.go +35 -0
- package/internal/data/task.go +46 -0
- package/internal/data/task_test.go +51 -0
- package/internal/data/write.go +144 -0
- package/internal/data/write_test.go +456 -0
- package/internal/styles/palette.go +47 -0
- package/internal/styles/styles.go +122 -0
- package/main.exe +0 -0
- package/main.go +11 -0
- package/package.json +25 -0
- package/savepoint +0 -0
- package/savepoint.exe +0 -0
- package/scripts/vitest-preload.cjs +95 -0
- package/templates/project/.savepoint/Design.md +47 -0
- package/templates/project/.savepoint/PRD.md +34 -0
- package/templates/project/.savepoint/config.yml +27 -0
- package/templates/project/.savepoint/router.md +152 -0
- package/templates/project/.savepoint/visual-identity.md +122 -0
- package/templates/project/AGENTS.md +130 -0
- package/templates/prompts/audit-reconciliation.prompt.md +67 -0
- package/templates/prompts/design.prompt.md +43 -0
- package/templates/prompts/epic-design.prompt.md +43 -0
- package/templates/prompts/magic-prompt.prompt.md +7 -0
- package/templates/prompts/prd.prompt.md +42 -0
- package/templates/prompts/task-breakdown.prompt.md +54 -0
- package/templates/prompts/task-building.prompt.md +38 -0
- package/templates/prompts/task-planning.prompt.md +53 -0
- package/templates/release/v1/PRD.md +37 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Audit Proposals: E02-data-readers
|
|
2
|
+
|
|
3
|
+
## Target File
|
|
4
|
+
|
|
5
|
+
`.savepoint/Design.md`
|
|
6
|
+
|
|
7
|
+
## Replace
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
- **Template asset boundary:** established in epic `E04-templates-and-prompts` (2026-04-27). Project scaffolding and workflow prompts now live as versioned markdown/YAML assets under `templates/`, with small TypeScript helpers in `src/templates/` for manifest lookup, path resolution, loading, and interpolation.
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## With
|
|
14
|
+
|
|
15
|
+
```md
|
|
16
|
+
- **Go data-reader boundary:** established in epic `E02-data-readers` (2026-05-01). `internal/data` owns Savepoint file parsing and discovery for the Go implementation: task frontmatter models, markdown YAML extraction, router state parsing, config theme defaults, and release/epic/task directory listing.
|
|
17
|
+
- **Template asset boundary:** established in epic `E04-templates-and-prompts` (2026-04-27). Project scaffolding and workflow prompts now live as versioned markdown/YAML assets under `templates/`, with small TypeScript helpers in `src/templates/` for manifest lookup, path resolution, loading, and interpolation.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Target File
|
|
21
|
+
|
|
22
|
+
`.savepoint/Design.md`
|
|
23
|
+
|
|
24
|
+
## Replace
|
|
25
|
+
|
|
26
|
+
```md
|
|
27
|
+
## 12. Distribution & build
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## With
|
|
31
|
+
|
|
32
|
+
```md
|
|
33
|
+
## 12. Distribution & build
|
|
34
|
+
|
|
35
|
+
> Audit note: the live repository is transitioning from the documented TypeScript/Node implementation to a Go module (`github.com/opencode/savepoint`). The architecture document still contains substantial TypeScript-era implementation detail and should be reconciled as Go epics are audited.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Target File
|
|
39
|
+
|
|
40
|
+
`AGENTS.md`
|
|
41
|
+
|
|
42
|
+
## Replace
|
|
43
|
+
|
|
44
|
+
```md
|
|
45
|
+
| `src/domain/config.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Config defaults and typed project config model |
|
|
46
|
+
| `src/domain/epic.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Epic Design frontmatter model and validation |
|
|
47
|
+
| `src/domain/ids.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Release, epic, and task ID parsing and formatting |
|
|
48
|
+
| `src/domain/release.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Release PRD frontmatter model and validation |
|
|
49
|
+
| `src/domain/router.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Router state values and validation |
|
|
50
|
+
| `src/domain/status.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Task status values and transition validation |
|
|
51
|
+
| `src/domain/task.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Task frontmatter/document model and validation |
|
|
52
|
+
| `src/fs/markdown.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Markdown/frontmatter reader with path-aware boundary errors |
|
|
53
|
+
| `src/fs/project.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Project root discovery and scoped `.savepoint` path helpers |
|
|
54
|
+
| `src/readers/config.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only `config.yml` reader with defaults |
|
|
55
|
+
| `src/readers/epic.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only epic Design reader |
|
|
56
|
+
| `src/readers/release.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only release PRD reader |
|
|
57
|
+
| `src/readers/router.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Read-only router Current state reader |
|
|
58
|
+
| `src/readers/tasks.ts` | [E02-data-model](.savepoint/releases/v1/epics/E02-data-model/Design.md) | Epic task-set reader with graph validation |
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## With
|
|
62
|
+
|
|
63
|
+
```md
|
|
64
|
+
| `internal/data/task.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Task, column, progress stage, dependency, and metadata structs for Go data readers |
|
|
65
|
+
| `internal/data/parser.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Markdown YAML frontmatter extraction and task frontmatter parsing |
|
|
66
|
+
| `internal/data/router.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Router current-state YAML block extraction and parsing |
|
|
67
|
+
| `internal/data/config.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Savepoint config/theme parsing with default theme fallback |
|
|
68
|
+
| `internal/data/discover.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | `.savepoint` root discovery and release, epic, and task directory listing |
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Target File
|
|
72
|
+
|
|
73
|
+
`.savepoint/releases/v1/epics/E02-data-readers/Design.md`
|
|
74
|
+
|
|
75
|
+
## Insert After
|
|
76
|
+
|
|
77
|
+
```md
|
|
78
|
+
## Components and files
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## With
|
|
82
|
+
|
|
83
|
+
```md
|
|
84
|
+
## Implemented As
|
|
85
|
+
|
|
86
|
+
- `internal/data/task.go` defines task metadata, column, progress stage, dependency, and progress structs.
|
|
87
|
+
- `internal/data/parser.go` extracts YAML frontmatter from markdown and currently maps the task ID and objective into `Task`.
|
|
88
|
+
- `internal/data/router.go` extracts and parses the `## Current state` fenced YAML block from `router.md`.
|
|
89
|
+
- `internal/data/config.go` reads `config.yml` theme values and falls back to a default theme when the config is missing.
|
|
90
|
+
- `internal/data/discover.go` finds the `.savepoint` root and lists release, epic, and task directories in stable order.
|
|
91
|
+
|
|
92
|
+
## Deltas From Plan
|
|
93
|
+
|
|
94
|
+
- The planned `internal/data/errors.go` was not created; errors currently use formatted `error` values.
|
|
95
|
+
- `ParseTaskFile` does not yet populate `Column`, `Stage`, `DependsOn`, `Priority`, `Points`, `Tags`, `Acceptance`, or `Notes` from YAML frontmatter.
|
|
96
|
+
- The parser uses a regular expression rather than a line-based frontmatter scanner.
|
|
97
|
+
- Config malformed YAML currently falls back to defaults instead of surfacing a parse error.
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Quality Review
|
|
101
|
+
|
|
102
|
+
## Must Fix Before Close
|
|
103
|
+
|
|
104
|
+
All close blockers resolved in audit closeout.
|
|
105
|
+
|
|
106
|
+
## Must Fix Before Next Epic
|
|
107
|
+
|
|
108
|
+
All next-epic blockers resolved in audit closeout.
|
|
109
|
+
|
|
110
|
+
## Carry Forward
|
|
111
|
+
|
|
112
|
+
- `.savepoint/Design.md` and `AGENTS.md` still mostly describe the previous TypeScript implementation. The Go architecture should be reconciled incrementally as each Go epic is audited.
|
|
113
|
+
|
|
114
|
+
## Already Fixed
|
|
115
|
+
|
|
116
|
+
- `go test ./internal/data/...` passed during audit.
|
|
117
|
+
- `go test ./...` passed during audit.
|
|
118
|
+
- `ParseTaskFile` now maps task frontmatter fields including `status`, `phase`, `depends_on`, priority, points, tags, acceptance, notes, release, epic, and progress.
|
|
119
|
+
- `ConfigReader.Read` now returns defaults only for missing config files and returns malformed YAML/read errors.
|
|
120
|
+
- Discovery tests now use temporary fixtures instead of the live repository tree.
|
|
121
|
+
- Parser tests now assert task metadata mapping and malformed YAML behavior.
|
|
122
|
+
- `internal/data/errors.go` now provides data-reader boundary error sentinels.
|
|
123
|
+
- E02 task files now include context logs.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: audit-snapshot
|
|
3
|
+
epic: E02-data-readers
|
|
4
|
+
created: 2026-05-01
|
|
5
|
+
mode: manual
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Audit Snapshot: E02-data-readers
|
|
9
|
+
|
|
10
|
+
Manual snapshot created because `.savepoint/audit/E02-data-readers/snapshot.md` was missing while the router was already in `audit-pending`.
|
|
11
|
+
|
|
12
|
+
## Router State
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
state: audit-pending
|
|
16
|
+
release: v1
|
|
17
|
+
epic: E02-data-readers
|
|
18
|
+
task: ~
|
|
19
|
+
next_action: "Audit E02-data-readers: all 5 tasks done. Start fresh session for audit."
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Epic Scope
|
|
23
|
+
|
|
24
|
+
- `.savepoint/releases/v1/epics/E02-data-readers/Design.md`
|
|
25
|
+
- `.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md`
|
|
26
|
+
- `.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md`
|
|
27
|
+
- `.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md`
|
|
28
|
+
- `.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md`
|
|
29
|
+
- `.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md`
|
|
30
|
+
|
|
31
|
+
## Changed Files In Scope
|
|
32
|
+
|
|
33
|
+
- `internal/data/task.go`
|
|
34
|
+
- `internal/data/parser.go`
|
|
35
|
+
- `internal/data/router.go`
|
|
36
|
+
- `internal/data/config.go`
|
|
37
|
+
- `internal/data/discover.go`
|
|
38
|
+
- `internal/data/task_test.go`
|
|
39
|
+
- `internal/data/parser_test.go`
|
|
40
|
+
- `internal/data/router_test.go`
|
|
41
|
+
- `internal/data/config_test.go`
|
|
42
|
+
- `internal/data/discover_test.go`
|
|
43
|
+
- `go.mod`
|
|
44
|
+
- `go.sum`
|
|
45
|
+
|
|
46
|
+
## Verification Observed During Audit
|
|
47
|
+
|
|
48
|
+
- `go test ./internal/data/...` passed.
|
|
49
|
+
- `go test ./...` passed.
|
|
50
|
+
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- The repository is in a broad TypeScript-to-Go transition. Many tracked TypeScript files are deleted or replaced, but this snapshot is intentionally scoped to the E02 data-reader epic.
|
|
54
|
+
- Task context logs are mostly absent except `T005-discovery.md`; this is audit process drift, not a source-code blocker.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Audit Proposals — E03-board-tui-core
|
|
2
|
+
|
|
3
|
+
## Target File
|
|
4
|
+
|
|
5
|
+
`.savepoint/Design.md`
|
|
6
|
+
|
|
7
|
+
## Replace
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
## 8. TUI
|
|
11
|
+
|
|
12
|
+
**Theming:** Atari-Noir is the default theme. **For full design tokens, palette, and rendering rules, see `.savepoint/visual-identity.md`** (loaded conditionally for TUI tasks). Live values in `config.yml` `theme:` section.
|
|
13
|
+
|
|
14
|
+
Acknowledged terminal limits: fonts, scanlines, glows, letter-spacing, mouse-driven motion don't translate. Lean on color discipline + box-drawing geometry + uppercase headings.
|
|
15
|
+
|
|
16
|
+
**Render fallbacks:** 256-color → 16-color hard-coded → `NO_COLOR=1` monochrome with glyphs → non-TTY plain table.
|
|
17
|
+
|
|
18
|
+
**Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
|
|
19
|
+
|
|
20
|
+
**Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
|
|
21
|
+
|
|
22
|
+
**Keybindings:** arrow/vim navigation, enter advances, backspace retreats, r/R refreshes, a/A exits toward audit review when proposals exist, q quits.
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## With
|
|
26
|
+
|
|
27
|
+
```md
|
|
28
|
+
## 8. TUI
|
|
29
|
+
|
|
30
|
+
**Theming:** Atari-Noir is the default theme. **For full design tokens, palette, and rendering rules, see `.savepoint/visual-identity.md`** (loaded conditionally for TUI tasks). Live values in `config.yml` `theme:` section.
|
|
31
|
+
|
|
32
|
+
Acknowledged terminal limits: fonts, scanlines, glows, letter-spacing, mouse-driven motion don't translate. Lean on color discipline + box-drawing geometry + uppercase headings.
|
|
33
|
+
|
|
34
|
+
**Go board core:** established in epic `E03-board-tui-core` (2026-05-01). `internal/board` owns the Bubble Tea model, update loop, responsive layout calculation, and Lip Gloss view composition. `internal/styles` owns the Atari-Noir terminal palette and reusable Lip Gloss styles with truecolor, 256-color, and 16-color fallbacks.
|
|
35
|
+
|
|
36
|
+
**Layout:** the Go board core currently renders a responsive 3-column grid. At `>=120` columns it includes a 28-cell epic panel plus 3 task columns; at `80-119` columns it renders 3 task columns; below `80` columns it renders only the focused column and supports left/right or h/l column switching.
|
|
37
|
+
|
|
38
|
+
**Render fallbacks:** truecolor → 256-color → 16-color are encoded in Go styles. A future non-TTY/plain renderer remains outside this epic.
|
|
39
|
+
|
|
40
|
+
**Implementation modules:** see AGENTS.md Codebase Map.
|
|
41
|
+
|
|
42
|
+
**Keybindings:** `q` and `ctrl+c` quit. Left/right arrows and h/l move the focused column in narrow layouts.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Target File
|
|
46
|
+
|
|
47
|
+
`AGENTS.md`
|
|
48
|
+
|
|
49
|
+
## Insert After
|
|
50
|
+
|
|
51
|
+
```md
|
|
52
|
+
| `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Shared data-reader boundary error sentinels |
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## With
|
|
56
|
+
|
|
57
|
+
```md
|
|
58
|
+
| `internal/board/board.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Bubble Tea board entrypoint and program launch |
|
|
59
|
+
| `internal/board/model.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Board model state, constructor, task grouping, and initialization |
|
|
60
|
+
| `internal/board/update.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Board key handling, quit behavior, column focus navigation, and terminal resize updates |
|
|
61
|
+
| `internal/board/view.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Lip Gloss view composition for header, responsive board columns, epic panel, tasks, and status bar |
|
|
62
|
+
| `internal/board/layout.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Responsive board breakpoint and column width calculations |
|
|
63
|
+
| `internal/styles/palette.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Atari-Noir terminal color constants and 256-color/16-color fallbacks |
|
|
64
|
+
| `internal/styles/styles.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Reusable Lip Gloss styles for board chrome, focused state, task rows, status, tags, and epic panel |
|
|
65
|
+
| `internal/board/*_test.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Unit tests for board model, update loop, layout breakpoints, and rendered output |
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Target File
|
|
69
|
+
|
|
70
|
+
`.savepoint/releases/v1/epics/E03-board-tui-core/Design.md`
|
|
71
|
+
|
|
72
|
+
## Replace
|
|
73
|
+
|
|
74
|
+
```md
|
|
75
|
+
type: epic-design
|
|
76
|
+
status: planned
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## With
|
|
80
|
+
|
|
81
|
+
```md
|
|
82
|
+
type: epic-design
|
|
83
|
+
status: implemented
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Target File
|
|
87
|
+
|
|
88
|
+
`.savepoint/releases/v1/epics/E03-board-tui-core/Design.md`
|
|
89
|
+
|
|
90
|
+
## Insert After
|
|
91
|
+
|
|
92
|
+
```md
|
|
93
|
+
## Components and files
|
|
94
|
+
|
|
95
|
+
| Path | Purpose |
|
|
96
|
+
|------|---------|
|
|
97
|
+
| `internal/board/model.go` | Model struct and Init |
|
|
98
|
+
| `internal/board/update.go` | Update loop, message handling |
|
|
99
|
+
| `internal/board/view.go` | View composition |
|
|
100
|
+
| `internal/styles/palette.go` | Atari-Noir hex colors |
|
|
101
|
+
| `internal/styles/styles.go` | Lip Gloss style definitions |
|
|
102
|
+
| `internal/board/layout.go` | Width/height calculations |
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## With
|
|
106
|
+
|
|
107
|
+
```md
|
|
108
|
+
|
|
109
|
+
## Implemented as
|
|
110
|
+
|
|
111
|
+
- `internal/board/model.go` defines exported board state, groups tasks by `data.ColumnType`, defaults empty task columns to `planned`, and initializes with no startup command.
|
|
112
|
+
- `internal/board/update.go` handles `q`, `ctrl+c`, terminal resize messages, and left/right or h/l focused-column navigation.
|
|
113
|
+
- `internal/board/layout.go` implements the requested 120/80 column breakpoints and returns explicit layout metadata for view rendering.
|
|
114
|
+
- `internal/board/view.go` composes the header, responsive task columns, optional epic panel, and status bar using Lip Gloss.
|
|
115
|
+
- `internal/styles/palette.go` and `internal/styles/styles.go` define Atari-Noir truecolor values plus 256-color and 16-color fallbacks.
|
|
116
|
+
|
|
117
|
+
## Audit deltas
|
|
118
|
+
|
|
119
|
+
- The implemented board core is wired into `internal/board/board.go`; `Run()` now launches the exported board model rather than the pre-epic placeholder screen.
|
|
120
|
+
- The layout currently uses rounded borders, while the visual identity prefers single-line quiet borders by default. This is acceptable if intentional, but should be normalized before the visual system hardens.
|
|
121
|
+
- Layout width coverage now lives on `CalculateLayout`; the dead `columnContentWidth()` helper was removed.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Quality Review
|
|
125
|
+
|
|
126
|
+
## Must Fix Before Close
|
|
127
|
+
|
|
128
|
+
None.
|
|
129
|
+
|
|
130
|
+
## Must Fix Before Next Epic
|
|
131
|
+
|
|
132
|
+
- `internal/board/layout.go:28` accepts height but ignores it. The epic originally calls for width/height calculations and no layout break at any width. Either incorporate height into visible task capacity or narrow the documented contract before components depend on it.
|
|
133
|
+
- `internal/board/view.go:65` renders task labels without truncation or width-aware clipping. Long IDs/titles can wrap and break the grid, conflicting with the visual guardrail that accidental wrapping is a bug.
|
|
134
|
+
|
|
135
|
+
## Carry Forward
|
|
136
|
+
|
|
137
|
+
- `internal/styles/styles.go` uses rounded borders for columns and the epic panel. The visual identity says single-line borders are the default and rounded borders are not called out as a signature style; decide whether rounded borders are an intentional product choice in E04.
|
|
138
|
+
- The Go implementation has replaced the older TypeScript architecture in active epics. Continue reconciling `.savepoint/Design.md` and AGENTS.md away from stale `src/` rows as each Go epic audits.
|
|
139
|
+
|
|
140
|
+
## Already Fixed
|
|
141
|
+
|
|
142
|
+
- Board state, resize handling, responsive breakpoints, Atari-Noir palette constants, color fallbacks, focused-column rendering, and focused-column navigation have focused tests.
|
|
143
|
+
- `internal/board/board.go` now launches `newProgramModel()`, which returns the exported `Model` created by `NewModel(...)`; the private placeholder model was removed.
|
|
144
|
+
- `internal/board/board_test.go` verifies the program model renders board columns and does not render the old welcome screen.
|
|
145
|
+
- The dead `columnContentWidth()` helper and its stale tests were removed; layout width coverage remains in `internal/board/layout_test.go`.
|
|
146
|
+
- `go test ./...` and `go build ./...` passed during audit.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: audit-snapshot
|
|
3
|
+
epic: E03-board-tui-core
|
|
4
|
+
release: v1
|
|
5
|
+
created: 2026-05-01
|
|
6
|
+
mode: manual
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Audit Snapshot — E03-board-tui-core
|
|
10
|
+
|
|
11
|
+
Manual snapshot created because `.savepoint/audit/E03-board-tui-core/snapshot.md` was missing while the audit CLI is unavailable.
|
|
12
|
+
|
|
13
|
+
## Router State
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
state: audit-pending
|
|
17
|
+
release: v1
|
|
18
|
+
epic: E03-board-tui-core
|
|
19
|
+
task: E03-board-tui-core/T005-layout
|
|
20
|
+
next_action: "E03-board-tui-core complete. Start a new agent session for the audit."
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Epic Scope
|
|
24
|
+
|
|
25
|
+
- `.savepoint/releases/v1/epics/E03-board-tui-core/Design.md`
|
|
26
|
+
- `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md`
|
|
27
|
+
- `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md`
|
|
28
|
+
- `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md`
|
|
29
|
+
- `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md`
|
|
30
|
+
- `.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md`
|
|
31
|
+
|
|
32
|
+
## Changed Files In Scope
|
|
33
|
+
|
|
34
|
+
- `main.go`
|
|
35
|
+
- `go.mod`
|
|
36
|
+
- `internal/board/board.go`
|
|
37
|
+
- `internal/board/model.go`
|
|
38
|
+
- `internal/board/update.go`
|
|
39
|
+
- `internal/board/view.go`
|
|
40
|
+
- `internal/board/layout.go`
|
|
41
|
+
- `internal/board/model_test.go`
|
|
42
|
+
- `internal/board/update_test.go`
|
|
43
|
+
- `internal/board/view_test.go`
|
|
44
|
+
- `internal/board/layout_test.go`
|
|
45
|
+
- `internal/styles/palette.go`
|
|
46
|
+
- `internal/styles/styles.go`
|
|
47
|
+
|
|
48
|
+
## Verification Observed During Audit
|
|
49
|
+
|
|
50
|
+
- `go test ./...` passed.
|
|
51
|
+
- `go build ./...` passed.
|
|
52
|
+
- Closeout fix verification: `go test ./internal/board`, `go test ./...`, and `go build ./...` passed after wiring the runtime model and removing dead layout code.
|
|
53
|
+
|
|
54
|
+
## Notes
|
|
55
|
+
|
|
56
|
+
- Repository contains a broad TypeScript-to-Go transition and many unrelated working-tree changes. This snapshot is intentionally limited to the E03 Board TUI Core scope declared by the epic design and task files.
|
|
57
|
+
- Closeout fix: `internal/board/board.go` now launches the exported `Model` implemented by this epic.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: audit-snapshot
|
|
3
|
+
epic: E03-cli-foundation
|
|
4
|
+
created: 2026-04-27
|
|
5
|
+
manual: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Audit Snapshot: E03-cli-foundation
|
|
9
|
+
|
|
10
|
+
Manual snapshot generated because `savepoint audit` is not implemented yet.
|
|
11
|
+
|
|
12
|
+
## Source file tree
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
src/
|
|
16
|
+
cli.ts - process entrypoint; delegates to runCli() with process globals
|
|
17
|
+
cli/
|
|
18
|
+
args.ts - argument parsing and normalization
|
|
19
|
+
environment.ts - TTY, color, and platform detection
|
|
20
|
+
exit-codes.ts - shared exit code constants
|
|
21
|
+
help.ts - help text generation (top-level and per-command)
|
|
22
|
+
run.ts - testable CLI runner with injectable argv/streams/env
|
|
23
|
+
commands/
|
|
24
|
+
audit.ts - stub: savepoint audit
|
|
25
|
+
board.ts - stub: savepoint board
|
|
26
|
+
doctor.ts - stub: savepoint doctor
|
|
27
|
+
init.ts - stub: savepoint init
|
|
28
|
+
test/
|
|
29
|
+
cli/
|
|
30
|
+
args.test.ts - parser unit tests
|
|
31
|
+
commands.test.ts - command stub dispatch tests
|
|
32
|
+
environment.test.ts - TTY/color detection tests
|
|
33
|
+
help.test.ts - help text generation tests
|
|
34
|
+
run.test.ts - full runner dispatch tests (35 tests)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Config / metadata changes
|
|
38
|
+
|
|
39
|
+
| Path | Purpose |
|
|
40
|
+
| --------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
41
|
+
| `.savepoint/router.md` | Router state still pointed at T001; E03 tasks were completed without router updates per task. |
|
|
42
|
+
| `E03-cli-foundation/tasks/T001-T006.md` | Six planned and completed E03 task files. |
|
|
43
|
+
|
|
44
|
+
## New files introduced by E03
|
|
45
|
+
|
|
46
|
+
- `src/cli/args.ts`
|
|
47
|
+
- `src/cli/environment.ts`
|
|
48
|
+
- `src/cli/exit-codes.ts`
|
|
49
|
+
- `src/cli/help.ts`
|
|
50
|
+
- `src/cli/run.ts`
|
|
51
|
+
- `src/commands/audit.ts`
|
|
52
|
+
- `src/commands/board.ts`
|
|
53
|
+
- `src/commands/doctor.ts`
|
|
54
|
+
- `src/commands/init.ts`
|
|
55
|
+
- `src/commands/result.ts`
|
|
56
|
+
- `test/cli/args.test.ts`
|
|
57
|
+
- `test/cli/commands.test.ts`
|
|
58
|
+
- `test/cli/environment.test.ts`
|
|
59
|
+
- `test/cli/help.test.ts`
|
|
60
|
+
- `test/cli/run.test.ts`
|
|
61
|
+
|
|
62
|
+
## Modified files
|
|
63
|
+
|
|
64
|
+
- `src/cli.ts` — replaced old placeholder with `runCli()` delegation; process globals isolated here.
|
|
65
|
+
- `src/cli/run.ts` — command-level unknown flags now return usage errors.
|
|
66
|
+
- `src/commands/audit.ts` — prettier formatting applied.
|
|
67
|
+
- `src/commands/board.ts` — prettier formatting applied.
|
|
68
|
+
- `src/commands/doctor.ts` — prettier formatting applied.
|
|
69
|
+
- `src/commands/init.ts` — prettier formatting applied.
|
|
70
|
+
- `test/cli/environment.test.ts` — prettier formatting applied.
|
|
71
|
+
- `test/cli/run.test.ts` — prettier formatting applied.
|
|
72
|
+
|
|
73
|
+
## Quality gates
|
|
74
|
+
|
|
75
|
+
- `npm run build` passed. Output: `dist/cli.js` 4.83 KB.
|
|
76
|
+
- `npm run typecheck` passed.
|
|
77
|
+
- `npm run lint` passed.
|
|
78
|
+
- `npm run format:check` initially failed on 6 pre-existing files (commands and CLI tests); fixed with `prettier --write`, then passed.
|
|
79
|
+
- During audit closeout, `npm.cmd test -- test/cli/run.test.ts` initially failed in the sandbox with esbuild `spawn EPERM`; rerunning outside the sandbox passed.
|
|
80
|
+
- `npm test` passed: 21 test files, 259 tests (0 failures).
|
|
81
|
+
|
|
82
|
+
## Coverage summary
|
|
83
|
+
|
|
84
|
+
| Branch | Test file | Tests |
|
|
85
|
+
| ------------------------- | ------------------- | ----- |
|
|
86
|
+
| Bare invocation | run.test.ts | 3 |
|
|
87
|
+
| Global help flags | run.test.ts | 4 |
|
|
88
|
+
| Version flags | run.test.ts | 4 |
|
|
89
|
+
| Command dispatch (4 cmds) | run.test.ts | 8 |
|
|
90
|
+
| Command-level help | run.test.ts | 7 |
|
|
91
|
+
| Unknown command | run.test.ts | 3 |
|
|
92
|
+
| Unknown flag | run.test.ts | 6 |
|
|
93
|
+
| Argument parsing | args.test.ts | 12 |
|
|
94
|
+
| Help text | help.test.ts | 13 |
|
|
95
|
+
| Environment detection | environment.test.ts | 15 |
|
|
96
|
+
| Command stubs | commands.test.ts | 8 |
|
|
97
|
+
|
|
98
|
+
## Deviations from epic Design
|
|
99
|
+
|
|
100
|
+
| Item | Status | Note |
|
|
101
|
+
| ------------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
|
|
102
|
+
| Audit snapshot | manual | Generated by the agent because the audit CLI does not exist yet. |
|
|
103
|
+
| Router state | manual | Router still shows T001 as active; router was not updated per-task during E03 implementation. |
|
|
104
|
+
| Prettier failures at gate | fixed | 6 command/test files had formatting issues at T006; fixed before gate closeout. |
|
|
105
|
+
| `src/cli.ts` entrypoint | done | Updated from placeholder to `runCli()` delegation with all process globals isolated at the boundary. |
|
|
106
|
+
| Command-level flags | fixed | Unknown command-level flags now return usage errors instead of dispatching command stubs. |
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
## Target File
|
|
2
|
+
|
|
3
|
+
`.savepoint/Design.md`
|
|
4
|
+
|
|
5
|
+
## Replace
|
|
6
|
+
|
|
7
|
+
```md
|
|
8
|
+
**Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
|
|
9
|
+
|
|
10
|
+
**Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
|
|
11
|
+
|
|
12
|
+
**Keybindings:** arrow/vim navigation, enter advances, backspace retreats, r/R refreshes, a/A exits toward audit review when proposals exist, q quits.
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## With
|
|
16
|
+
|
|
17
|
+
```md
|
|
18
|
+
**Layout:** Go Bubble Tea board with responsive columns: wide terminals (`>=120` cols) show an epic sidebar plus planned / in-progress / done columns; medium terminals show three columns; narrow terminals show the focused column only.
|
|
19
|
+
|
|
20
|
+
**Board components:** E04 adds Lip Gloss renderers for columns, task cards, epic sidebar/dropdown, release dropdown, task detail overlay, and help overlay. Selector, detail, and help overlays dim the current board and composite a centered panel over it.
|
|
21
|
+
|
|
22
|
+
**Implementation modules:** see AGENTS.md Codebase Map (`internal/board/*`, `internal/styles/*`, and `internal/data/*` rows).
|
|
23
|
+
|
|
24
|
+
**Keybindings:** h/left and l/right move columns; enter opens task detail or selects an overlay item; e opens the epic selector on narrow screens; r opens the release selector; ? opens help; esc/q close overlays; q/ctrl+c quit from the base board.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Target File
|
|
28
|
+
|
|
29
|
+
`AGENTS.md`
|
|
30
|
+
|
|
31
|
+
## Insert After
|
|
32
|
+
|
|
33
|
+
```md
|
|
34
|
+
| `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/Design.md) | Shared data-reader boundary error sentinels |
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## With
|
|
38
|
+
|
|
39
|
+
```md
|
|
40
|
+
| `internal/board/model.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Bubble Tea board state for grouped tasks, focused column/task, selected release/epic, responsive size, and active overlay |
|
|
41
|
+
| `internal/board/update.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Keyboard and window-size update handling for board navigation, overlays, selectors, and quit behavior |
|
|
42
|
+
| `internal/board/layout.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Responsive board geometry breakpoints and column/sidebar width calculation |
|
|
43
|
+
| `internal/board/view.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) | Board view composition, status bar, responsive columns, and overlay placement helpers |
|
|
44
|
+
| `internal/board/column.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Column renderer with status header, task count, empty state, and focused border styling |
|
|
45
|
+
| `internal/board/card.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Task card renderer with phase glyphs, metadata dimming, truncation, and focus styling |
|
|
46
|
+
| `internal/board/epic_panel.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Wide epic sidebar and narrow epic selector dropdown renderers |
|
|
47
|
+
| `internal/board/detail.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Task detail overlay renderer with task metadata, description, acceptance criteria, and phase labels |
|
|
48
|
+
| `internal/board/release.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Release selector dropdown renderer and current-release cursor lookup |
|
|
49
|
+
| `internal/board/help.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Keyboard shortcut help overlay renderer |
|
|
50
|
+
| `internal/styles/*.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Atari-Noir Lip Gloss palette and shared board, card, overlay, glyph, status, and tag styles |
|
|
51
|
+
| `internal/board/*_test.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/Design.md) / [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/Design.md) | Go board model, layout, update, view, component, selector, detail, and help tests |
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Target File
|
|
55
|
+
|
|
56
|
+
`.savepoint/releases/v1/epics/E04-board-components/Design.md`
|
|
57
|
+
|
|
58
|
+
## Insert After
|
|
59
|
+
|
|
60
|
+
```md
|
|
61
|
+
## Definition of Done
|
|
62
|
+
|
|
63
|
+
- Cards render with correct phase glyphs and colors.
|
|
64
|
+
- Focused card has orange accent border.
|
|
65
|
+
- Epic panel renders on wide screens; dropdown on narrow.
|
|
66
|
+
- Detail overlay opens with Enter, closes with Esc.
|
|
67
|
+
- Epic dropdown opens with `e`, release with `r`.
|
|
68
|
+
- Help overlay opens with `?`.
|
|
69
|
+
- All components render without wrapping or layout breaks.
|
|
70
|
+
- Component tests pass.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## With
|
|
74
|
+
|
|
75
|
+
```md
|
|
76
|
+
## Implemented As
|
|
77
|
+
|
|
78
|
+
- `internal/board/column.go` renders status columns with uppercase label, task count, empty state, focused border, and task cards.
|
|
79
|
+
- `internal/board/card.go` renders standalone task cards with build/test/audit glyphs, dim metadata, truncation, and focused styling.
|
|
80
|
+
- `internal/board/epic_panel.go` renders the wide epic sidebar and narrow epic dropdown; `e` opens the dropdown only below the wide breakpoint.
|
|
81
|
+
- `internal/board/release.go` renders the release dropdown; `r` opens it at all widths.
|
|
82
|
+
- `internal/board/detail.go` renders task detail panels with wrapped long text; `internal/board/view.go` dims the board and composites selector/detail/help overlays over the base board.
|
|
83
|
+
- `internal/board/help.go` renders the keyboard shortcut overlay.
|
|
84
|
+
- `internal/styles/styles.go` and `internal/styles/palette.go` add shared Lip Gloss styles for cards, overlays, metadata, glyphs, and dim text.
|
|
85
|
+
|
|
86
|
+
## Audit Deltas
|
|
87
|
+
|
|
88
|
+
- Planned `internal/board/dropdown.go` was not created; epic and release dropdowns are separate renderers.
|
|
89
|
+
- Task cards are integrated into column rendering; board columns now display card borders and phase glyphs.
|
|
90
|
+
- Selecting an epic or release updates `SelectedEpic` / `SelectedRelease` and regroups visible board tasks from `Model.AllTasks`.
|
|
91
|
+
- Selector/detail/help overlays keep the dimmed board visible behind the panel.
|
|
92
|
+
- Base board up/down navigation moves the focused task within the focused column.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Quality Review
|
|
96
|
+
|
|
97
|
+
## Must Fix Before Close
|
|
98
|
+
|
|
99
|
+
No open findings.
|
|
100
|
+
|
|
101
|
+
## Must Fix Before Next Epic
|
|
102
|
+
|
|
103
|
+
No open findings.
|
|
104
|
+
|
|
105
|
+
## Carry Forward
|
|
106
|
+
|
|
107
|
+
- The current project architecture and Codebase Map still contain substantial TypeScript-era rows. This proposal adds E04 Go rows as a delta, but a later audit should reconcile the stale TypeScript implementation sections once the Go transition is complete.
|
|
108
|
+
|
|
109
|
+
## Already Fixed
|
|
110
|
+
|
|
111
|
+
- Board columns render `RenderCard`, so phase glyphs, card borders, truncation, and focused card styling are visible in the actual board.
|
|
112
|
+
- Epic and release selections regroup visible tasks from `Model.AllTasks`.
|
|
113
|
+
- Epic and release dropdowns use the same dimmed-base overlay composition as detail/help.
|
|
114
|
+
- Base board up/down navigation moves `FocusedTask` and clamps at column bounds.
|
|
115
|
+
- Detail rows, descriptions, and acceptance criteria wrap long text within overlay width.
|
|
116
|
+
- Focused tests passed during audit: `go test ./internal/board/...`.
|
|
117
|
+
- Full Go suite passed during audit: `go test ./...`.
|
|
118
|
+
- Help and detail overlays use the dimmed-base compositing path and close on `esc` / `q`.
|