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,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E01-scaffolding/T002-typescript-build
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Add the strict TypeScript source layout and `tsup` build that emits the placeholder `savepoint` CLI binary."
|
|
5
|
+
depends_on: [E01-scaffolding/T001-package-baseline]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Task T002: TypeScript Build
|
|
9
|
+
|
|
10
|
+
## Implementation Plan
|
|
11
|
+
|
|
12
|
+
- [x] Add `tsconfig.json` with strict NodeNext compilation settings for the scaffold.
|
|
13
|
+
- [x] Add `tsup.config.ts` and a minimal `src/cli.ts` entrypoint that builds to `dist/cli.js`.
|
|
14
|
+
- [x] Add `src/version.ts` as the single source of version metadata used by the CLI placeholder.
|
|
15
|
+
- [x] Add TypeScript and build dependencies to `package.json`.
|
|
16
|
+
- [x] Generate `package-lock.json` from the updated manifest.
|
|
17
|
+
- [x] Verify `npm run build` and `npm run typecheck` pass.
|
|
18
|
+
|
|
19
|
+
## Scope
|
|
20
|
+
|
|
21
|
+
Create the minimal source tree and build configuration needed for a compiled CLI placeholder.
|
|
22
|
+
|
|
23
|
+
Expected files:
|
|
24
|
+
|
|
25
|
+
- `tsconfig.json`
|
|
26
|
+
- `tsup.config.ts`
|
|
27
|
+
- `src/cli.ts`
|
|
28
|
+
- `src/version.ts`
|
|
29
|
+
- `package-lock.json`
|
|
30
|
+
|
|
31
|
+
Expected `package.json` updates:
|
|
32
|
+
|
|
33
|
+
- Add TypeScript/build dependencies.
|
|
34
|
+
- Add `build` and `typecheck` scripts.
|
|
35
|
+
|
|
36
|
+
## Acceptance Criteria
|
|
37
|
+
|
|
38
|
+
- `npm run build` emits `dist/cli.js`.
|
|
39
|
+
- The emitted CLI file has a Node shebang.
|
|
40
|
+
- `npm run typecheck` passes under strict TypeScript settings.
|
|
41
|
+
- The placeholder CLI can print version/help placeholder output.
|
|
42
|
+
- No real command dispatch is implemented.
|
|
43
|
+
|
|
44
|
+
## Out Of Scope
|
|
45
|
+
|
|
46
|
+
- Argument parsing beyond minimal placeholder output.
|
|
47
|
+
- `init`, `board`, `audit`, or `doctor` behavior.
|
|
48
|
+
- Tests beyond whatever is necessary to validate the build manually.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E01-scaffolding/T003-vitest-smoke
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Add Vitest configuration and a smoke test that proves the scaffolded package can run automated tests."
|
|
5
|
+
depends_on: [E01-scaffolding/T002-typescript-build]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Task T003: Vitest Smoke Test
|
|
9
|
+
|
|
10
|
+
## Implementation Plan
|
|
11
|
+
|
|
12
|
+
- [x] Add Vitest configuration and include pattern for the scaffold smoke test.
|
|
13
|
+
- [x] Add a smoke test that imports scaffolded source and asserts the exported version.
|
|
14
|
+
- [x] Add the Vitest dependency and `test` script to `package.json`.
|
|
15
|
+
- [x] Adjust the scaffold for the Windows runner path so `npm test` executes reliably in this environment.
|
|
16
|
+
- [x] Verify `npm test` and `npm run typecheck` pass.
|
|
17
|
+
|
|
18
|
+
## Scope
|
|
19
|
+
|
|
20
|
+
Introduce the test runner and a small smoke test for the existing scaffolded source.
|
|
21
|
+
|
|
22
|
+
Expected files:
|
|
23
|
+
|
|
24
|
+
- `vitest.config.ts`
|
|
25
|
+
- `test/smoke.test.ts`
|
|
26
|
+
|
|
27
|
+
Expected `package.json` updates:
|
|
28
|
+
|
|
29
|
+
- Add Vitest dependency.
|
|
30
|
+
- Add `test` script.
|
|
31
|
+
|
|
32
|
+
## Acceptance Criteria
|
|
33
|
+
|
|
34
|
+
- `npm test` runs Vitest.
|
|
35
|
+
- The smoke test imports TypeScript source.
|
|
36
|
+
- The smoke test verifies stable placeholder behavior such as exported version metadata.
|
|
37
|
+
- Tests do not depend on generated `dist/` output.
|
|
38
|
+
|
|
39
|
+
## Out Of Scope
|
|
40
|
+
|
|
41
|
+
- CLI integration tests.
|
|
42
|
+
- Command behavior tests.
|
|
43
|
+
- Filesystem fixture tests.
|
package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E01-scaffolding/T004-lint-format-gates
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Add ESLint and Prettier configuration so the scaffold has mechanical quality gates from the first epic."
|
|
5
|
+
depends_on: [E01-scaffolding/T003-vitest-smoke]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Task T004: Lint And Format Gates
|
|
9
|
+
|
|
10
|
+
## Implementation Plan
|
|
11
|
+
|
|
12
|
+
- [x] Add ESLint, TypeScript ESLint, Prettier, and supporting config dependencies to `package.json`.
|
|
13
|
+
- [x] Add `eslint.config.js` with flat-config rules that reject `any` in TypeScript.
|
|
14
|
+
- [x] Add `.prettierrc.json` and ignore rules for generated output.
|
|
15
|
+
- [x] Add `lint` and `format:check` scripts to `package.json`.
|
|
16
|
+
- [x] Verify `npm run lint` and `npm run format:check` pass on the current scaffold.
|
|
17
|
+
- [x] Verify the existing scaffold still passes `npm run build`, `npm test`, and `npm run typecheck`.
|
|
18
|
+
|
|
19
|
+
## Scope
|
|
20
|
+
|
|
21
|
+
Add lint and formatting configuration for the TypeScript project.
|
|
22
|
+
|
|
23
|
+
Expected files:
|
|
24
|
+
|
|
25
|
+
- `eslint.config.js`
|
|
26
|
+
- `.prettierrc.json`
|
|
27
|
+
|
|
28
|
+
Expected `package.json` updates:
|
|
29
|
+
|
|
30
|
+
- Add ESLint, TypeScript ESLint, and Prettier dependencies.
|
|
31
|
+
- Add `lint` and `format:check` scripts.
|
|
32
|
+
|
|
33
|
+
## Acceptance Criteria
|
|
34
|
+
|
|
35
|
+
- `npm run lint` passes.
|
|
36
|
+
- `npm run format:check` passes.
|
|
37
|
+
- ESLint is configured with the flat config format.
|
|
38
|
+
- ESLint rejects `any` usage in project TypeScript.
|
|
39
|
+
- Prettier covers source, test, config, and markdown files.
|
|
40
|
+
|
|
41
|
+
## Out Of Scope
|
|
42
|
+
|
|
43
|
+
- Language-specific quality presets beyond TypeScript.
|
|
44
|
+
- Dependency boundary tooling.
|
|
45
|
+
- Auto-format command requirements beyond a check script.
|
package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E01-scaffolding/T005-scaffold-verification
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Verify the complete scaffold through the agreed npm scripts and make any final minimal adjustments needed for the first audit baseline."
|
|
5
|
+
depends_on: [E01-scaffolding/T004-lint-format-gates]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Task T005: Scaffold Verification
|
|
9
|
+
|
|
10
|
+
## Implementation Plan
|
|
11
|
+
|
|
12
|
+
- [x] Run the full scaffold command set: build, typecheck, lint, format check, and tests.
|
|
13
|
+
- [x] Inspect the repo for any missing scaffold artifacts or generated files that should stay ignored.
|
|
14
|
+
- [x] Make only minimal corrections if the baseline is still inconsistent.
|
|
15
|
+
- [x] Mark the scaffold task complete once the verification set passes.
|
|
16
|
+
|
|
17
|
+
## Scope
|
|
18
|
+
|
|
19
|
+
Run the full scaffold command set and make small corrective edits if any setup task left the baseline inconsistent.
|
|
20
|
+
|
|
21
|
+
Expected verification commands:
|
|
22
|
+
|
|
23
|
+
- `npm run build`
|
|
24
|
+
- `npm run typecheck`
|
|
25
|
+
- `npm run lint`
|
|
26
|
+
- `npm run format:check`
|
|
27
|
+
- `npm test`
|
|
28
|
+
|
|
29
|
+
## Acceptance Criteria
|
|
30
|
+
|
|
31
|
+
- All expected verification commands pass.
|
|
32
|
+
- `package-lock.json` is present and consistent with `package.json`.
|
|
33
|
+
- `dist/` remains generated output and is not committed as source.
|
|
34
|
+
- The repo is ready for the first epic audit to populate the `AGENTS.md` codebase map.
|
|
35
|
+
|
|
36
|
+
## Out Of Scope
|
|
37
|
+
|
|
38
|
+
- Updating `AGENTS.md` codebase map before audit.
|
|
39
|
+
- Implementing command behavior.
|
|
40
|
+
- Public release packaging polish.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: epic-design
|
|
3
|
+
status: audited
|
|
4
|
+
audited: 2026-04-27
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Epic E02: data-model
|
|
8
|
+
|
|
9
|
+
## Context Budget
|
|
10
|
+
|
|
11
|
+
For implementation tasks in this epic, read only:
|
|
12
|
+
|
|
13
|
+
- `.savepoint/router.md`
|
|
14
|
+
- this epic `Design.md`
|
|
15
|
+
- the active task file
|
|
16
|
+
- directly touched source/test files
|
|
17
|
+
|
|
18
|
+
Read `.savepoint/Design.md` only if the task changes architecture. Read `.savepoint/releases/v1/PRD.md`, prior epic docs, audit proposals, or `.savepoint/visual-identity.md` only when the active task explicitly requires them.
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
|
|
22
|
+
Build the core file-backed model for releases, epics, tasks, statuses, dependencies, and project configuration. This epic gives later CLI and TUI work a typed domain layer instead of each command parsing markdown independently.
|
|
23
|
+
|
|
24
|
+
## What this epic adds
|
|
25
|
+
|
|
26
|
+
- Typed models for releases, epics, tasks, task statuses, dependency IDs, config, and router state.
|
|
27
|
+
- Markdown frontmatter parsing for task and planning files.
|
|
28
|
+
- Readers for `.savepoint/releases/{release}/PRD.md`, epic `Design.md`, and task files.
|
|
29
|
+
- Status transition validation for `planned`, `in_progress`, and `done`, with legacy `backlog` and `review` normalized on read.
|
|
30
|
+
- Dependency resolution, missing dependency detection, and cycle detection.
|
|
31
|
+
- Shared filesystem helpers for scoped `.savepoint` reads.
|
|
32
|
+
- Unit tests for parsing, validation, dependency logic, and state transitions.
|
|
33
|
+
|
|
34
|
+
## Implementation strategy
|
|
35
|
+
|
|
36
|
+
- Use structured parsers for YAML/frontmatter and Markdown boundaries.
|
|
37
|
+
- Keep domain types and validation pure; filesystem reads belong in `src/fs/*` and `src/readers/*`.
|
|
38
|
+
- Keep writes out of scope except temporary test fixtures.
|
|
39
|
+
- Make ID parsing understand prefixed epic and task IDs such as `E02-data-model/T001-readers`.
|
|
40
|
+
- Return boundary errors that include the path and reason without forcing callers to parse error text.
|
|
41
|
+
|
|
42
|
+
## Components and files
|
|
43
|
+
|
|
44
|
+
Expected files introduced or extended by this epic:
|
|
45
|
+
|
|
46
|
+
| Path | Purpose |
|
|
47
|
+
| ----------------------- | --------------------------------------------------- |
|
|
48
|
+
| `src/domain/status.ts` | Status values and transition rules. |
|
|
49
|
+
| `src/domain/ids.ts` | Release, epic, and task ID parsing/formatting. |
|
|
50
|
+
| `src/domain/task.ts` | Task frontmatter and task document types. |
|
|
51
|
+
| `src/domain/release.ts` | Release PRD metadata types. |
|
|
52
|
+
| `src/domain/config.ts` | `config.yml` type and defaults. |
|
|
53
|
+
| `src/fs/markdown.ts` | Markdown/frontmatter read helpers. |
|
|
54
|
+
| `src/fs/project.ts` | Project root and `.savepoint` path helpers. |
|
|
55
|
+
| `src/readers/*.ts` | Release, epic, task, router, and config readers. |
|
|
56
|
+
| `src/validation/*.ts` | Status, dependency, duplicate ID, and cycle checks. |
|
|
57
|
+
| `test/**/*.test.ts` | Unit tests for the model and validation behavior. |
|
|
58
|
+
|
|
59
|
+
## Architectural delta
|
|
60
|
+
|
|
61
|
+
Before this epic, Savepoint has only a package scaffold. After this epic, it has a reusable domain and read-only persistence layer for the file-based state machine.
|
|
62
|
+
|
|
63
|
+
This epic intentionally avoids write operations except where tests create fixtures. Writes belong to later command/TUI/audit work once behavior exists.
|
|
64
|
+
|
|
65
|
+
## Boundaries
|
|
66
|
+
|
|
67
|
+
In scope:
|
|
68
|
+
|
|
69
|
+
- Parse markdown frontmatter with clear boundary errors.
|
|
70
|
+
- Model task dependencies using repo-relative task IDs.
|
|
71
|
+
- Detect cycles and broken dependencies.
|
|
72
|
+
- Expose pure validation functions usable by CLI, TUI, audit, and doctor.
|
|
73
|
+
|
|
74
|
+
Out of scope:
|
|
75
|
+
|
|
76
|
+
- Creating or editing tasks.
|
|
77
|
+
- Rendering any TUI.
|
|
78
|
+
- Implementing command dispatch.
|
|
79
|
+
- Running quality gates.
|
|
80
|
+
- Writing audit proposals.
|
|
81
|
+
|
|
82
|
+
## Quality gates
|
|
83
|
+
|
|
84
|
+
- Branching parser and validator logic must have unit tests.
|
|
85
|
+
- Fixture files should be small and local to tests.
|
|
86
|
+
- Errors should identify the file path and failure reason.
|
|
87
|
+
|
|
88
|
+
## Design constraints
|
|
89
|
+
|
|
90
|
+
- Prefer structured parsers over ad hoc string splitting.
|
|
91
|
+
- Keep filesystem access at boundaries; domain validation should be pure.
|
|
92
|
+
- Use one source of truth for status transitions and dependency rules.
|
|
93
|
+
|
|
94
|
+
## Implemented as
|
|
95
|
+
|
|
96
|
+
Implemented on 2026-04-27 across tasks T001-T007. The read-only data model landed with focused unit tests and passing mechanical gates after formatting the E02 task markdown.
|
|
97
|
+
|
|
98
|
+
**Implemented components:**
|
|
99
|
+
|
|
100
|
+
| Path | Result |
|
|
101
|
+
| -------------------------------- | ----------------------------------------------------------------------- |
|
|
102
|
+
| `src/domain/ids.ts` | Release, epic, and full task ID parsing plus formatting helpers. |
|
|
103
|
+
| `src/domain/status.ts` | Canonical task status values and transition validation. |
|
|
104
|
+
| `src/domain/task.ts` | Task frontmatter and task document validation. |
|
|
105
|
+
| `src/domain/release.ts` | Release PRD frontmatter validation. |
|
|
106
|
+
| `src/domain/epic.ts` | Epic Design frontmatter validation. |
|
|
107
|
+
| `src/domain/router.ts` | Router state value and Current state validation. |
|
|
108
|
+
| `src/domain/config.ts` | Config defaults and merge behavior. |
|
|
109
|
+
| `src/fs/markdown.ts` | Structured YAML frontmatter parsing with path-aware boundary errors. |
|
|
110
|
+
| `src/fs/project.ts` | `.savepoint` root discovery and scoped path construction. |
|
|
111
|
+
| `src/readers/*.ts` | Read-only release, epic, router, config, and task-set readers. |
|
|
112
|
+
| `src/validation/dependencies.ts` | Duplicate task ID, missing dependency, and cycle detection. |
|
|
113
|
+
| `test/**/*.test.ts` | Branch coverage for parser, reader, status, config, and graph behavior. |
|
|
114
|
+
|
|
115
|
+
**Deviations from original design:**
|
|
116
|
+
|
|
117
|
+
| Item | Deviation | Reason / follow-up |
|
|
118
|
+
| ----------------------------- | -------------------- | --------------------------------------------------------------------------------------- |
|
|
119
|
+
| `done` status transitions | Fixed during audit | `done -> review` is allowed so completed work can be reopened for audit-stale rechecks. |
|
|
120
|
+
| Config accent validation | Fixed during audit | Non-string custom accent values are ignored before merging defaults. |
|
|
121
|
+
| Audit snapshot/router flip | Manual | Expected until E07 implements the audit CLI pipeline. |
|
|
122
|
+
| `.claude/settings.local.json` | Local untracked file | Decide whether to add `.claude/` to `.gitignore` before commit. |
|
|
123
|
+
|
|
124
|
+
**Quality gates:**
|
|
125
|
+
|
|
126
|
+
| Gate | Result |
|
|
127
|
+
| ---------------------- | ---------------------------------------------------------------------------------------- |
|
|
128
|
+
| `npm run build` | Passed. |
|
|
129
|
+
| `npm run typecheck` | Passed. |
|
|
130
|
+
| `npm run lint` | Passed. |
|
|
131
|
+
| `npm run format:check` | Passed after formatting E02 task markdown. |
|
|
132
|
+
| `npm test` | Passed outside sandbox: 16 test files, 176 tests. Sandbox run hit esbuild `spawn EPERM`. |
|
|
133
|
+
|
|
134
|
+
## Close Criteria
|
|
135
|
+
|
|
136
|
+
- All `E02-data-model` tasks are `done`.
|
|
137
|
+
- `npm run build`, `npm run typecheck`, `npm run lint`, `npm run format:check`, and `npm test` pass.
|
|
138
|
+
- Tests cover parser errors, valid documents, invalid statuses, allowed and disallowed status transitions, missing dependencies, duplicate IDs, and dependency cycles.
|
|
139
|
+
- Audit snapshot exists at `.savepoint/audit/E02-data-model/snapshot.md`.
|
|
140
|
+
- Audit proposals are accepted, rejected, or explicitly carried forward.
|
|
141
|
+
- This epic `Design.md` has `status: audited`.
|
|
142
|
+
- Router points to the next epic state.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T001-domain-ids-status
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Define pure domain primitives for release, epic, task IDs, task statuses, and allowed status transitions."
|
|
5
|
+
depends_on: []
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T001: Domain IDs and Statuses
|
|
9
|
+
|
|
10
|
+
## Scope
|
|
11
|
+
|
|
12
|
+
Introduce the core domain types and validation helpers that later readers and validators can share.
|
|
13
|
+
|
|
14
|
+
## Acceptance Criteria
|
|
15
|
+
|
|
16
|
+
- Release, epic, and task ID parsing accepts the E02 design's expected ID shapes.
|
|
17
|
+
- Task status values are represented from one source of truth.
|
|
18
|
+
- Status transition validation covers allowed and disallowed transitions.
|
|
19
|
+
- Branching validation behavior has focused unit tests.
|
|
20
|
+
|
|
21
|
+
## Implementation Plan
|
|
22
|
+
|
|
23
|
+
- [x] Inspect existing package/test conventions needed to place domain modules and focused unit tests.
|
|
24
|
+
- [x] Add pure ID parsing and formatting helpers for release IDs, epic IDs, task numbers, and full task IDs.
|
|
25
|
+
- [x] Add task status constants/types and one transition rule table for `backlog`, `planned`, `in_progress`, `review`, and `done`.
|
|
26
|
+
- [x] Add validation helpers that return typed success/failure results without filesystem access.
|
|
27
|
+
- [x] Add unit tests for valid and invalid ID shapes plus allowed and disallowed status transitions.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T002-markdown-frontmatter-boundary
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Add scoped markdown/frontmatter read helpers that return typed boundary errors with file path and reason."
|
|
5
|
+
depends_on:
|
|
6
|
+
- E02-data-model/T001-domain-ids-status
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# T002: Markdown Frontmatter Boundary
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
Create the filesystem boundary for reading markdown documents with structured frontmatter parsing.
|
|
14
|
+
|
|
15
|
+
## Acceptance Criteria
|
|
16
|
+
|
|
17
|
+
- Markdown documents can be read from scoped project paths.
|
|
18
|
+
- Frontmatter is parsed with a structured YAML/frontmatter parser.
|
|
19
|
+
- Missing, malformed, or invalid frontmatter returns errors that include path and reason.
|
|
20
|
+
- Parser success and failure branches have focused unit tests.
|
|
21
|
+
|
|
22
|
+
## Implementation Plan
|
|
23
|
+
|
|
24
|
+
- [x] Review the T001 domain result/error style and existing test fixture conventions.
|
|
25
|
+
- [x] Add a scoped project path helper for locating `.savepoint` documents without exposing arbitrary filesystem reads.
|
|
26
|
+
- [x] Add a markdown/frontmatter reader that uses a structured parser and preserves markdown body content.
|
|
27
|
+
- [x] Define path-aware boundary errors for missing files, missing frontmatter, malformed frontmatter, and schema rejection.
|
|
28
|
+
- [x] Add focused unit tests for successful reads and each parser/boundary failure branch using small temporary fixtures.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T003-task-documents
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Parse task markdown files into typed task documents with validated IDs, statuses, objectives, and dependency IDs."
|
|
5
|
+
depends_on:
|
|
6
|
+
- E02-data-model/T001-domain-ids-status
|
|
7
|
+
- E02-data-model/T002-markdown-frontmatter-boundary
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# T003: Task Documents
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Build the task reader and task document model on top of the markdown/frontmatter boundary.
|
|
15
|
+
|
|
16
|
+
## Acceptance Criteria
|
|
17
|
+
|
|
18
|
+
- Task frontmatter maps into a typed task document.
|
|
19
|
+
- Invalid task IDs, statuses, objectives, or dependency IDs are rejected with path-aware errors.
|
|
20
|
+
- Markdown body content remains available to callers.
|
|
21
|
+
- Valid and invalid task document cases have focused unit tests.
|
|
22
|
+
|
|
23
|
+
## Implementation Plan
|
|
24
|
+
|
|
25
|
+
- [x] Reuse the T001 ID/status validators and the T002 markdown/frontmatter boundary as the only parsing inputs.
|
|
26
|
+
- [x] Define the typed task frontmatter and task document model, including validated dependency IDs and markdown body.
|
|
27
|
+
- [x] Implement task document parsing that rejects invalid IDs, statuses, missing objectives, and malformed `depends_on` values with path-aware errors.
|
|
28
|
+
- [x] Keep task parsing read-only and separate pure frontmatter validation from filesystem access.
|
|
29
|
+
- [x] Add focused unit tests for valid task files and each invalid frontmatter branch.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T004-release-epic-router-config-readers
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Add read-only models and readers for release PRDs, epic designs, router state, and project configuration."
|
|
5
|
+
depends_on:
|
|
6
|
+
- E02-data-model/T001-domain-ids-status
|
|
7
|
+
- E02-data-model/T002-markdown-frontmatter-boundary
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# T004: Release, Epic, Router, and Config Readers
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Expose typed read-only access for the remaining Savepoint planning documents and config state.
|
|
15
|
+
|
|
16
|
+
## Acceptance Criteria
|
|
17
|
+
|
|
18
|
+
- Release PRD, epic Design, router state, and config data have typed models.
|
|
19
|
+
- Readers keep filesystem access at the boundary.
|
|
20
|
+
- Config defaults are applied from one place.
|
|
21
|
+
- Missing or malformed input returns path-aware boundary errors.
|
|
22
|
+
- Reader branches and config default behavior have focused unit tests.
|
|
23
|
+
|
|
24
|
+
## Implementation Plan
|
|
25
|
+
|
|
26
|
+
- [x] Reuse the T001 domain primitives and T002 markdown/frontmatter boundary for all document reads.
|
|
27
|
+
- [x] Define typed models for release PRD metadata, epic Design metadata, router state, and project config defaults.
|
|
28
|
+
- [x] Implement read-only readers that keep path resolution and file IO at the boundary.
|
|
29
|
+
- [x] Apply config defaults from one exported source of truth before returning typed config data.
|
|
30
|
+
- [x] Add focused unit tests for valid reads, malformed or missing input, router-state validation, and config default behavior.
|
package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T005-dependency-validation
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Validate task dependency graphs for missing dependencies, duplicate IDs, and cycles using pure domain functions."
|
|
5
|
+
depends_on:
|
|
6
|
+
- E02-data-model/T003-task-documents
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# T005: Dependency Validation
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
Implement dependency resolution and graph validation over parsed task documents.
|
|
14
|
+
|
|
15
|
+
## Acceptance Criteria
|
|
16
|
+
|
|
17
|
+
- Missing dependency IDs are reported with the dependent task ID.
|
|
18
|
+
- Duplicate task IDs are detected.
|
|
19
|
+
- Dependency cycles are detected and reported with enough IDs to explain the cycle.
|
|
20
|
+
- Validation functions are pure and do not read files.
|
|
21
|
+
- Missing dependency, duplicate ID, and cycle branches have focused unit tests.
|
|
22
|
+
|
|
23
|
+
## Implementation Plan
|
|
24
|
+
|
|
25
|
+
- [x] Build on the T003 task document model and keep validation functions independent of filesystem access.
|
|
26
|
+
- [x] Implement duplicate task ID detection over a task document collection.
|
|
27
|
+
- [x] Implement missing dependency detection that reports the dependent task ID and unresolved dependency ID.
|
|
28
|
+
- [x] Implement dependency cycle detection that returns enough task IDs to explain the cycle.
|
|
29
|
+
- [x] Add focused unit tests for valid graphs, missing dependencies, duplicate IDs, simple cycles, and longer cycles.
|
package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T006-epic-task-set-reader
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Read an epic task directory into a validated task set using the task reader and dependency validation."
|
|
5
|
+
depends_on:
|
|
6
|
+
- E02-data-model/T003-task-documents
|
|
7
|
+
- E02-data-model/T005-dependency-validation
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# T006: Epic Task Set Reader
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Connect the file-backed task reader to dependency validation for an entire epic's task directory.
|
|
15
|
+
|
|
16
|
+
## Acceptance Criteria
|
|
17
|
+
|
|
18
|
+
- An epic task directory is read into a typed task set.
|
|
19
|
+
- Dependency validation runs after all task files are parsed.
|
|
20
|
+
- File boundary errors and graph validation errors remain distinguishable.
|
|
21
|
+
- Valid task sets and invalid graph cases have focused unit tests with small fixtures.
|
|
22
|
+
|
|
23
|
+
## Implementation Plan
|
|
24
|
+
|
|
25
|
+
- [x] Reuse the T003 task reader and T005 dependency validation without duplicating parsing or graph logic.
|
|
26
|
+
- [x] Add an epic task directory reader that discovers task markdown files and parses each into typed task documents.
|
|
27
|
+
- [x] Run dependency validation only after all readable task files have been parsed.
|
|
28
|
+
- [x] Return distinguishable results for file boundary failures versus dependency graph validation failures.
|
|
29
|
+
- [x] Add focused fixture tests for a valid task set, parse failures, missing dependencies, duplicate IDs, and cycles.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-data-model/T007-quality-gates
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Run and fix the E02 data-model quality gates so the read-only domain layer is buildable and covered."
|
|
5
|
+
depends_on:
|
|
6
|
+
- E02-data-model/T004-release-epic-router-config-readers
|
|
7
|
+
- E02-data-model/T006-epic-task-set-reader
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# T007: Quality Gates
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Close the epic implementation by running the required checks and making any small fixes needed by the data-model work.
|
|
15
|
+
|
|
16
|
+
## Acceptance Criteria
|
|
17
|
+
|
|
18
|
+
- `npm run build` passes.
|
|
19
|
+
- `npm run typecheck` passes.
|
|
20
|
+
- `npm run lint` passes.
|
|
21
|
+
- `npm run format:check` passes.
|
|
22
|
+
- `npm test` passes.
|
|
23
|
+
- E02 parser, validator, reader, and transition test coverage matches the epic Design close criteria.
|
|
24
|
+
|
|
25
|
+
## Implementation Plan
|
|
26
|
+
|
|
27
|
+
- [x] Run `npm run build` and fix any compile or packaging failures introduced by E02.
|
|
28
|
+
- [x] Run `npm run typecheck` and fix strict TypeScript issues without weakening domain types.
|
|
29
|
+
- [x] Run `npm run lint` and fix lint findings without broad refactors.
|
|
30
|
+
- [x] Run `npm run format:check` and apply formatting only where needed.
|
|
31
|
+
- [x] Run `npm test` and add or adjust focused tests until E02 close-criteria coverage is represented.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: epic-design
|
|
3
|
+
status: planned
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Epic E02: Domain Phase Model
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Extend the domain layer to support the build/test/audit phase model within the `in_progress` status. Simplify the config model to theme-only and collapse the router state machine from 6 to 3 states.
|
|
11
|
+
|
|
12
|
+
## What this epic adds
|
|
13
|
+
|
|
14
|
+
- `TaskPhase` type with constants and transition rules.
|
|
15
|
+
- Phase validation in task frontmatter parsing.
|
|
16
|
+
- Phase-to-accent color mapping for TUI rendering.
|
|
17
|
+
- Simplified config model (theme-only, no quality gates or audit config).
|
|
18
|
+
- Collapsed router domain (3 states: planning, building, reviewing).
|
|
19
|
+
|
|
20
|
+
## Definition of Done
|
|
21
|
+
|
|
22
|
+
- `status.ts` defines `TaskPhase`, phase transitions, and `PHASE_ACCENTS`.
|
|
23
|
+
- `task.ts` validates `phase?: TaskPhase` in frontmatter.
|
|
24
|
+
- `config.ts` contains only `ThemeConfig` and `SavepointConfig` (no quality_gates, audit, verify_strict).
|
|
25
|
+
- `router.ts` defines 3 states (`planning`, `building`, `reviewing`).
|
|
26
|
+
- All existing domain tests compile and pass (or are updated).
|
|
27
|
+
- No references to old 6-state model remain in domain code.
|
|
28
|
+
|
|
29
|
+
## Components and files
|
|
30
|
+
|
|
31
|
+
| Path | Purpose |
|
|
32
|
+
|------|---------|
|
|
33
|
+
| `src/domain/status.ts` | TaskPhase type, phase transitions, accent mapping |
|
|
34
|
+
| `src/domain/task.ts` | Phase frontmatter field and validation |
|
|
35
|
+
| `src/domain/config.ts` | Simplified theme-only config model |
|
|
36
|
+
| `src/domain/router.ts` | 3-state router domain |
|
|
37
|
+
| `test/domain/status.test.ts` | Phase transition tests |
|
|
38
|
+
| `test/domain/task.test.ts` | Phase frontmatter validation tests |
|
|
39
|
+
| `test/domain/config.test.ts` | Simplified config tests |
|
|
40
|
+
| `test/domain/router.test.ts` | 3-state router tests |
|
package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-domain-phase-model/T001-phase-types
|
|
3
|
+
status: planned
|
|
4
|
+
objective: "Add TaskPhase type, constants, transitions, and accent color mapping to status.ts"
|
|
5
|
+
depends_on: []
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T001: Phase Types
|
|
9
|
+
|
|
10
|
+
## Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
- `status.ts` exports `TaskPhase` type (`build | test | audit`).
|
|
13
|
+
- Phase order constant exists: `['build', 'test', 'audit']`.
|
|
14
|
+
- `getNextPhase(current)` and `getPreviousPhase(current)` functions exist.
|
|
15
|
+
- `PHASE_ACCENTS` maps each phase to a hex color string.
|
|
16
|
+
- Phase transition validation: `isPhaseTransitionAllowed(from, to)` returns boolean.
|
|
17
|
+
- All phase functions have unit tests.
|
|
18
|
+
|
|
19
|
+
## Implementation Plan
|
|
20
|
+
|
|
21
|
+
- [ ] Read existing `status.ts` to understand current structure.
|
|
22
|
+
- [ ] Add `TaskPhase` type and `TASK_PHASES` constant array.
|
|
23
|
+
- [ ] Add `getNextPhase` and `getPreviousPhase` helpers.
|
|
24
|
+
- [ ] Add `PHASE_ACCENTS` mapping.
|
|
25
|
+
- [ ] Add `isPhaseTransitionAllowed` with no-skipping rule.
|
|
26
|
+
- [ ] Write/update `test/domain/status.test.ts` with phase tests.
|
|
27
|
+
- [ ] Run `npm test` and verify phase tests pass.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-domain-phase-model/T002-phase-frontmatter
|
|
3
|
+
status: planned
|
|
4
|
+
objective: "Add phase field to TaskFrontmatter and update validation in task.ts"
|
|
5
|
+
depends_on: [E02-domain-phase-model/T001-phase-types]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T002: Phase Frontmatter
|
|
9
|
+
|
|
10
|
+
## Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
- `TaskFrontmatter` interface includes optional `phase?: TaskPhase`.
|
|
13
|
+
- `validateTaskFrontmatter` accepts and validates `phase` as optional string.
|
|
14
|
+
- Invalid phase values are rejected with clear error messages.
|
|
15
|
+
- `phase` is absent when `status` is not `in_progress`.
|
|
16
|
+
- All task validation tests pass.
|
|
17
|
+
|
|
18
|
+
## Implementation Plan
|
|
19
|
+
|
|
20
|
+
- [ ] Read existing `task.ts` and `test/domain/task.test.ts`.
|
|
21
|
+
- [ ] Add `phase?: TaskPhase` to `TaskFrontmatter` interface.
|
|
22
|
+
- [ ] Update `validateTaskFrontmatter` to parse optional `phase` field.
|
|
23
|
+
- [ ] Validate that phase is one of `build`, `test`, `audit` if present.
|
|
24
|
+
- [ ] Update `test/domain/task.test.ts` with phase validation cases.
|
|
25
|
+
- [ ] Run `npm test` and verify.
|
package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E02-domain-phase-model/T003-simplify-config
|
|
3
|
+
status: planned
|
|
4
|
+
objective: "Remove quality_gates, audit, verify_strict from config model; keep theme only"
|
|
5
|
+
depends_on: []
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T003: Simplify Config
|
|
9
|
+
|
|
10
|
+
## Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
- `config.ts` contains only `ThemeConfig` and a minimal `SavepointConfig` wrapper.
|
|
13
|
+
- `CONFIG_DEFAULTS` has no `quality_gates`, `audit`, or `verify_strict` fields.
|
|
14
|
+
- `applyConfigDefaults` only processes theme keys.
|
|
15
|
+
- `readers/config.ts` still reads and returns a valid config (theme defaults if missing).
|
|
16
|
+
- All config tests pass.
|
|
17
|
+
|
|
18
|
+
## Implementation Plan
|
|
19
|
+
|
|
20
|
+
- [ ] Read existing `config.ts` and `test/domain/config.test.ts`.
|
|
21
|
+
- [ ] Remove `QualityGates`, `AuditConfig` interfaces.
|
|
22
|
+
- [ ] Remove `quality_gates`, `audit`, `verify_strict` from `SavepointConfig`.
|
|
23
|
+
- [ ] Update `CONFIG_DEFAULTS` to theme-only.
|
|
24
|
+
- [ ] Simplify `applyConfigDefaults` to only handle theme fields.
|
|
25
|
+
- [ ] Update `test/domain/config.test.ts`.
|
|
26
|
+
- [ ] Run `npm test`.
|