savepoint 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -3
- package/savepoint.exe +0 -0
- package/.claude/settings.local.json +0 -38
- package/.github/workflows/ci.yml +0 -20
- package/.golangci.yml +0 -11
- package/.prettierignore +0 -4
- package/.savepoint/Design.md +0 -207
- package/.savepoint/PRD.md +0 -58
- package/.savepoint/config.yml +0 -27
- package/.savepoint/releases/v1/epics/E01-go-setup/E01-Detail.md +0 -39
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +0 -42
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +0 -23
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +0 -24
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +0 -23
- package/.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md +0 -61
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +0 -29
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +0 -30
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +0 -29
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +0 -29
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +0 -30
- package/.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md +0 -38
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +0 -29
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +0 -30
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +0 -34
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +0 -29
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +0 -42
- package/.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md +0 -44
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +0 -34
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +0 -33
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +0 -49
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +0 -40
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +0 -33
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +0 -34
- package/.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md +0 -38
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +0 -29
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +0 -31
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +0 -31
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +0 -31
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md +0 -62
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +0 -39
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +0 -52
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +0 -52
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +0 -53
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +0 -39
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +0 -36
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +0 -40
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +0 -48
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +0 -66
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +0 -39
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +0 -20
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +0 -22
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +0 -22
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +0 -118
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +0 -9
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +0 -45
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +0 -48
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +0 -43
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +0 -45
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +0 -40
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +0 -142
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +0 -27
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +0 -29
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +0 -30
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +0 -29
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +0 -29
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +0 -31
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +0 -40
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +0 -27
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +0 -25
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +0 -26
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +0 -122
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +0 -27
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +0 -29
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +0 -34
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +0 -32
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +0 -43
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +0 -26
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +0 -22
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +0 -48
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +0 -26
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +0 -27
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +0 -42
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +0 -27
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +0 -25
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +0 -85
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +0 -17
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +0 -20
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +0 -22
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +0 -17
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +0 -16
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +0 -88
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +0 -22
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +0 -53
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +0 -26
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +0 -25
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +0 -28
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +0 -25
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +0 -104
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +0 -25
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +0 -26
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +0 -88
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +0 -23
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +0 -27
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +0 -25
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +0 -26
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +0 -24
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +0 -103
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +0 -30
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +0 -33
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +0 -34
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +0 -33
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +0 -37
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +0 -36
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +0 -34
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +0 -41
- package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +0 -70
- package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +0 -68
- package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +0 -68
- package/.savepoint/releases/v1/v1-PRD.md +0 -66
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md +0 -40
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-next-activity-header.md +0 -56
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +0 -38
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +0 -28
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +0 -51
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +0 -45
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +0 -68
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md +0 -57
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md +0 -124
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md +0 -49
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +0 -37
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +0 -38
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +0 -36
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +0 -59
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +0 -195
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +0 -45
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T001-border-resize-fix.md +0 -40
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T002-next-activity-below-header.md +0 -64
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T003-checkbox-rendering-fix.md +0 -56
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T005-unify-status-glyphs.md +0 -65
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +0 -36
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Audit.md +0 -167
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Detail.md +0 -51
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T001-sidebar-focusable-navigation.md +0 -65
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T002-epic-detail-overlay.md +0 -73
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T003-epic-status-glyphs.md +0 -73
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +0 -237
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +0 -54
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +0 -45
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +0 -40
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +0 -47
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +0 -98
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +0 -33
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +0 -62
- package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +0 -56
- package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +0 -63
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +0 -44
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +0 -35
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +0 -40
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +0 -45
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +0 -26
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +0 -33
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +0 -34
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +0 -33
- package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +0 -336
- package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +0 -61
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +0 -37
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +0 -28
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +0 -46
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +0 -27
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +0 -25
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +0 -26
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +0 -26
- package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +0 -333
- package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +0 -68
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +0 -26
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +0 -27
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +0 -28
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +0 -29
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +0 -27
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +0 -29
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +0 -29
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +0 -27
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +0 -207
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +0 -65
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +0 -24
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +0 -28
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +0 -29
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +0 -27
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +0 -28
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +0 -31
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +0 -36
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +0 -25
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +0 -21
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +0 -22
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +0 -29
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +0 -444
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +0 -45
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +0 -35
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +0 -19
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +0 -29
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +0 -25
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +0 -37
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +0 -118
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +0 -73
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +0 -66
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +0 -35
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +0 -60
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +0 -33
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +0 -37
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +0 -40
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +0 -37
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +0 -267
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +0 -54
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +0 -39
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +0 -42
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +0 -33
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +0 -35
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +0 -27
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +0 -29
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +0 -28
- package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Audit.md +0 -272
- package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +0 -60
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +0 -31
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +0 -34
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +0 -30
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +0 -27
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +0 -28
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +0 -26
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +0 -33
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T008-ci-and-release-automation.md +0 -46
- package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +0 -25
- package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +0 -27
- package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +0 -27
- package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +0 -29
- package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +0 -31
- package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +0 -34
- package/.savepoint/releases/v1.1/v1.1-PRD.md +0 -139
- package/.savepoint/router.md +0 -57
- package/.savepoint/visual-identity.md +0 -125
- package/AGENTS.md +0 -99
- package/CLAUDE.md +0 -1
- package/GEMINI.md +0 -1
- package/Makefile +0 -31
- package/agent-skills/ink-tui-design/SKILL.md +0 -309
- package/agent-skills/ink-tui-design/references/component-patterns.md +0 -371
- package/agent-skills/ink-tui-design/references/hooks-guide.md +0 -436
- package/agent-skills/ink-tui-design/references/ink-gotchas.md +0 -330
- package/agent-skills/ink-tui-design/references/testing-patterns.md +0 -384
- package/agent-skills/savepoint-audit/SKILL.md +0 -87
- package/agent-skills/savepoint-build-task/SKILL.md +0 -44
- package/agent-skills/savepoint-create-plan/SKILL.md +0 -33
- package/agent-skills/savepoint-create-task/SKILL.md +0 -44
- package/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
- package/agent-skills/savepoint-system-design/SKILL.md +0 -38
- package/agent-skills/superpowers/brainstorming/SKILL.md +0 -165
- package/agent-skills/superpowers/brainstorming/visual-companion.md +0 -304
- package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +0 -193
- package/agent-skills/superpowers/executing-plans/SKILL.md +0 -77
- package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +0 -213
- package/agent-skills/superpowers/receiving-code-review/SKILL.md +0 -226
- package/agent-skills/superpowers/requesting-code-review/SKILL.md +0 -115
- package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +0 -160
- package/agent-skills/superpowers/subagent-driven-development/SKILL.md +0 -292
- package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +0 -27
- package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +0 -113
- package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +0 -61
- package/agent-skills/superpowers/systematic-debugging/SKILL.md +0 -305
- package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +0 -122
- package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +0 -130
- package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +0 -183
- package/agent-skills/superpowers/test-driven-development/SKILL.md +0 -389
- package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +0 -317
- package/agent-skills/superpowers/verification-before-completion/SKILL.md +0 -147
- package/agent-skills/superpowers/writing-plans/SKILL.md +0 -159
- package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +0 -49
- package/agent_skills_test.go +0 -91
- package/assets/banner.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/strawman.png +0 -0
- package/cmd/board.go +0 -59
- package/cmd/board_test.go +0 -137
- package/cmd/doctor.go +0 -53
- package/cmd/doctor_test.go +0 -146
- package/cmd/init.go +0 -63
- package/cmd/init_test.go +0 -104
- package/go.mod +0 -36
- package/go.sum +0 -75
- package/internal/board/board.go +0 -181
- package/internal/board/board_test.go +0 -168
- package/internal/board/card.go +0 -129
- package/internal/board/card_test.go +0 -287
- package/internal/board/column.go +0 -156
- package/internal/board/column_test.go +0 -210
- package/internal/board/debug.go +0 -26
- package/internal/board/debug_test.go +0 -108
- package/internal/board/detail.go +0 -218
- package/internal/board/detail_test.go +0 -388
- package/internal/board/epic_panel.go +0 -264
- package/internal/board/epic_panel_test.go +0 -869
- package/internal/board/help.go +0 -41
- package/internal/board/help_test.go +0 -86
- package/internal/board/integration_test.go +0 -266
- package/internal/board/interfaces.go +0 -65
- package/internal/board/interfaces_test.go +0 -114
- package/internal/board/io.go +0 -93
- package/internal/board/layout.go +0 -68
- package/internal/board/layout_test.go +0 -106
- package/internal/board/model.go +0 -235
- package/internal/board/model_test.go +0 -67
- package/internal/board/plain.go +0 -88
- package/internal/board/plain_test.go +0 -117
- package/internal/board/release.go +0 -34
- package/internal/board/release_test.go +0 -177
- package/internal/board/render_policy_test.go +0 -77
- package/internal/board/status.go +0 -23
- package/internal/board/theme.go +0 -24
- package/internal/board/theme_test.go +0 -31
- package/internal/board/transitions.go +0 -113
- package/internal/board/transitions_test.go +0 -164
- package/internal/board/tui.go +0 -32
- package/internal/board/update.go +0 -575
- package/internal/board/update_test.go +0 -602
- package/internal/board/util.go +0 -76
- package/internal/board/view.go +0 -317
- package/internal/board/view_test.go +0 -377
- package/internal/board/watch.go +0 -136
- package/internal/buildtool/main.go +0 -249
- package/internal/buildtool/main_test.go +0 -224
- package/internal/data/config.go +0 -101
- package/internal/data/config_test.go +0 -122
- package/internal/data/discover.go +0 -178
- package/internal/data/discover_test.go +0 -130
- package/internal/data/errors.go +0 -13
- package/internal/data/fuzz_test.go +0 -75
- package/internal/data/lifecycle.go +0 -44
- package/internal/data/lifecycle_test.go +0 -41
- package/internal/data/parser.go +0 -243
- package/internal/data/parser_test.go +0 -281
- package/internal/data/router.go +0 -52
- package/internal/data/router_test.go +0 -35
- package/internal/data/task.go +0 -57
- package/internal/data/task_test.go +0 -51
- package/internal/data/testdata/fuzz/FuzzSplitFrontmatterBody/68eb66b0fe91e7e3 +0 -2
- package/internal/data/write.go +0 -221
- package/internal/data/write_test.go +0 -623
- package/internal/doctor/checks.go +0 -567
- package/internal/doctor/checks_test.go +0 -716
- package/internal/doctor/gates.go +0 -193
- package/internal/doctor/gates_test.go +0 -166
- package/internal/doctor/interfaces.go +0 -64
- package/internal/doctor/interfaces_test.go +0 -104
- package/internal/doctor/repairs.go +0 -80
- package/internal/doctor/repairs_test.go +0 -81
- package/internal/doctor/report.go +0 -157
- package/internal/doctor/report_test.go +0 -89
- package/internal/init/clipboard.go +0 -146
- package/internal/init/clipboard_test.go +0 -74
- package/internal/init/install.go +0 -16
- package/internal/init/integration_test.go +0 -197
- package/internal/init/prompt.go +0 -14
- package/internal/init/prompt_test.go +0 -77
- package/internal/init/scaffold.go +0 -59
- package/internal/init/scaffold_test.go +0 -179
- package/internal/init/template_freshness_test.go +0 -56
- package/internal/init/validate.go +0 -85
- package/internal/init/validate_test.go +0 -141
- package/internal/init/write.go +0 -73
- package/internal/init/write_test.go +0 -91
- package/internal/styles/palette.go +0 -49
- package/internal/styles/styles.go +0 -139
- package/internal/styles/styles_test.go +0 -133
- package/internal/testutil/fixture.go +0 -113
- package/internal/testutil/fs.go +0 -26
- package/main.go +0 -136
- package/project-audit/audit_report_glm_5.1.md +0 -411
- package/project-audit/audit_report_opus_4.6.md +0 -406
- package/project-audit/consolidated-audit-report.md +0 -456
- package/scripts/vitest-preload.cjs +0 -95
- package/templates/project/.savepoint/Design.md +0 -47
- package/templates/project/.savepoint/PRD.md +0 -34
- package/templates/project/.savepoint/config.yml +0 -27
- package/templates/project/.savepoint/router.md +0 -153
- package/templates/project/.savepoint/visual-identity.md +0 -122
- package/templates/project/AGENTS.md +0 -88
- package/templates/project/agent-skills/savepoint-audit/SKILL.md +0 -87
- package/templates/project/agent-skills/savepoint-build-task/SKILL.md +0 -44
- package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +0 -33
- package/templates/project/agent-skills/savepoint-create-task/SKILL.md +0 -44
- package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +0 -37
- package/templates/project/agent-skills/savepoint-system-design/SKILL.md +0 -38
- package/templates/prompts/audit-reconciliation.prompt.md +0 -72
- package/templates/prompts/design.prompt.md +0 -45
- package/templates/prompts/epic-design.prompt.md +0 -43
- package/templates/prompts/magic-prompt.prompt.md +0 -7
- package/templates/prompts/prd.prompt.md +0 -42
- package/templates/prompts/task-breakdown.prompt.md +0 -54
- package/templates/prompts/task-building.prompt.md +0 -38
- package/templates/prompts/task-planning.prompt.md +0 -53
- package/templates/release/v1/PRD.md +0 -37
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E06-audit-command/T010-audit-file-migration
|
|
3
|
-
status: done
|
|
4
|
-
objective: Move existing audit files from .savepoint/audit/v1.1/ to epic folders as E##-Audit.md
|
|
5
|
-
depends_on: []
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# T010: Audit File Migration
|
|
9
|
-
## Migration of existing audit files from .savepoint/audit/ to epic folder
|
|
10
|
-
|
|
11
|
-
## Acceptance Criteria
|
|
12
|
-
|
|
13
|
-
- [x] Script reads all `.savepoint/audit/v1.1/{E##}/proposals.md` and `snapshot.md` files
|
|
14
|
-
- [x] For each epic, concatenates content into single E##-Audit.md file
|
|
15
|
-
- [x] Writes to `.savepoint/releases/v1.1/epics/{E##}/E##-Audit.md`
|
|
16
|
-
- [x] Deletes old audit folders after migration
|
|
17
|
-
|
|
18
|
-
## Implementation Plan
|
|
19
|
-
|
|
20
|
-
- [x] Created migration:
|
|
21
|
-
- Read proposals.md from each epic (if exists)
|
|
22
|
-
- Read snapshot.md from each epic (if exists)
|
|
23
|
-
- Wrote E##-Audit.md format with frontmatter + Main Findings + Quality Review + Code Style Review
|
|
24
|
-
- Wrote to corresponding epic folder
|
|
25
|
-
- Deleted `.savepoint/audit/` folder
|
|
26
|
-
- [x] 4 audit files created:
|
|
27
|
-
- E02-Audit.md (Cross-Platform Compatibility)
|
|
28
|
-
- E03-Audit.md (UI Visual Refinement)
|
|
29
|
-
- E04-Audit.md (Epic Navigation)
|
|
30
|
-
- E05-Audit.md (Tasking Permissions)
|
|
31
|
-
- [x] Quality gates: `go build` passed
|
|
32
|
-
|
|
33
|
-
## Context Log
|
|
34
|
-
|
|
35
|
-
Files created:
|
|
36
|
-
- `.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md`
|
|
37
|
-
- `.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md`
|
|
38
|
-
- `.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Audit.md`
|
|
39
|
-
- `.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md`
|
|
40
|
-
|
|
41
|
-
Notes:
|
|
42
|
-
- E01 not migrated - no audit files existed
|
|
43
|
-
- E06+ not migrated - no audit files existed yet
|
|
44
|
-
- Old `.savepoint/audit/` folder deleted after migration
|
|
45
|
-
- Next task: T011 (Model Tab State)
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E06-audit-command/T011-model-tab-state
|
|
3
|
-
status: done
|
|
4
|
-
objective: Add tab state to board Model for Detail/Audit switching
|
|
5
|
-
depends_on: []
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# T011: Model Tab State
|
|
9
|
-
|
|
10
|
-
## Acceptance Criteria
|
|
11
|
-
|
|
12
|
-
- [x] `EpicDetailTab int` added to Model (0=Detail, 1=Audit)
|
|
13
|
-
- [x] `EpicAuditContent string` added to Model (cached audit file content)
|
|
14
|
-
- [x] Defaults to 0 (Detail tab)
|
|
15
|
-
- [x] `make build` passes
|
|
16
|
-
- [x] `make test` passes
|
|
17
|
-
|
|
18
|
-
## Implementation Plan
|
|
19
|
-
|
|
20
|
-
- [ ] Add to `Model` struct in `internal/board/model.go`:
|
|
21
|
-
```go
|
|
22
|
-
EpicDetailTab int // 0=Detail, 1=Audit
|
|
23
|
-
EpicAuditContent string // cached E##-Audit.md content
|
|
24
|
-
```
|
|
25
|
-
- [ ] Run `make build`
|
|
26
|
-
- [ ] Run `make test`
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E06-audit-command/T012-epic-audit-render
|
|
3
|
-
status: done
|
|
4
|
-
objective: Add RenderEpicAuditTab function to render audit findings + code style checklist
|
|
5
|
-
depends_on:
|
|
6
|
-
- E06-audit-command/T011-model-tab-state
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# T012: Render Epic Audit Tab
|
|
10
|
-
|
|
11
|
-
## Acceptance Criteria
|
|
12
|
-
|
|
13
|
-
- [ ] `RenderEpicAuditTab(epicSlug, content string, overlayW, maxHeight, offset int) string` function created
|
|
14
|
-
- [ ] Renders "EPIC AUDIT" header
|
|
15
|
-
- [ ] Parses E##-Audit.md Markdown content (Main Findings + Code Style Review sections)
|
|
16
|
-
- [ ] Renders code style checkboxes with appropriate styling
|
|
17
|
-
- [ ] Uses existing scroll helpers (visibleDetailLines)
|
|
18
|
-
- [ ] Tests pass
|
|
19
|
-
|
|
20
|
-
## Implementation Plan
|
|
21
|
-
|
|
22
|
-
- [x] Add `RenderEpicAuditTab()` function to `internal/board/epic_panel.go`:
|
|
23
|
-
- Similar structure to `RenderEpicDetail()`
|
|
24
|
-
- Parse markdown content: strip frontmatter, extract sections
|
|
25
|
-
- Render header with audit title style
|
|
26
|
-
- Render body: findings content + checklist
|
|
27
|
-
- Reuse `visibleDetailLines`, `WrapText` from detail.go
|
|
28
|
-
- [x] Add unit tests for parsing and rendering
|
|
29
|
-
- [x] Ensure scroll behavior matches detail overlay
|
|
30
|
-
|
|
31
|
-
## Fixed
|
|
32
|
-
|
|
33
|
-
- Section filtering: `epicAuditBody` now only renders "Quality Review" and "Code Style Review" sections, excluding all other sections per acceptance criteria
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E06-audit-command/T013-handle-tab-keys
|
|
3
|
-
status: done
|
|
4
|
-
objective: Handle 1/2 keys to switch tabs in Epic Detail overlay
|
|
5
|
-
depends_on:
|
|
6
|
-
- E06-audit-command/T011-model-tab-state
|
|
7
|
-
- E06-audit-command/T012-epic-audit-render
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# T013: Handle Tab Keys
|
|
11
|
-
|
|
12
|
-
## Acceptance Criteria
|
|
13
|
-
|
|
14
|
-
- [x] Pressing `1` switches to Detail tab (EpicDetailTab = 0)
|
|
15
|
-
- [x] Pressing `2` switches to Audit tab (EpicDetailTab = 1)
|
|
16
|
-
- [x] When switching to Audit tab, loads E##-Audit.md content
|
|
17
|
-
- [x] Audit content cached in EpicAuditContent
|
|
18
|
-
- [x] Scrolling works on both tabs
|
|
19
|
-
- [x] Tests pass
|
|
20
|
-
|
|
21
|
-
## Implementation Plan
|
|
22
|
-
|
|
23
|
-
- [ ] In `internal/board/update.go`:
|
|
24
|
-
- When `m.Overlay == OverlayEpicDetail`:
|
|
25
|
-
- If key is `1` → set `m.EpicDetailTab = 0`
|
|
26
|
-
- If key is `2` →:
|
|
27
|
-
- set `m.EpicDetailTab = 1`
|
|
28
|
-
- if `m.EpicAuditContent == ""`:
|
|
29
|
-
- derive audit file path
|
|
30
|
-
- read file with `os.ReadFile`
|
|
31
|
-
- if error → set `m.EpicAuditContent = "(no audit available)"`
|
|
32
|
-
- else → cache content
|
|
33
|
-
- [ ] Add test for tab switching
|
|
34
|
-
- [ ] Add test for audit file loading on first access
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E06-audit-command/T014-tab-indicator
|
|
3
|
-
status: done
|
|
4
|
-
objective: Update Epic Detail overlay header to show tab indicator and switch between tabs in view.go
|
|
5
|
-
depends_on:
|
|
6
|
-
- E06-audit-command/T011-model-tab-state
|
|
7
|
-
- E06-audit-command/T012-epic-audit-render
|
|
8
|
-
- E06-audit-command/T013-handle-tab-keys
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# T014: Tab Indicator
|
|
12
|
-
|
|
13
|
-
## Acceptance Criteria
|
|
14
|
-
|
|
15
|
-
- [ ] Tab indicator shown in overlay header: "EPIC DETAIL [1] │ AUDIT [2]"
|
|
16
|
-
- [ ] Active tab highlighted/bold
|
|
17
|
-
- [ ] Switches between RenderEpicDetail and RenderEpicAuditTab based on EpicDetailTab state
|
|
18
|
-
- [ ] Tests pass and verify indicator rendering
|
|
19
|
-
|
|
20
|
-
## Implementation Plan
|
|
21
|
-
|
|
22
|
-
- [ ] In `internal/board/view.go`:
|
|
23
|
-
- When `m.Overlay == OverlayEpicDetail`:
|
|
24
|
-
- Check `m.EpicDetailTab` state
|
|
25
|
-
- If 0 → call existing `RenderEpicDetail()`
|
|
26
|
-
- If 1 → call `RenderEpicAuditTab()`
|
|
27
|
-
- Pass `EpicDetailTab` to renderer for header rendering
|
|
28
|
-
- [ ] Update `RenderEpicDetail()` in `epic_panel.go`:
|
|
29
|
-
- Accept `tab int` parameter
|
|
30
|
-
- Render tab indicator line before content
|
|
31
|
-
- Highlight active tab number (bold or different color)
|
|
32
|
-
- [ ] Update `RenderEpicAuditTab()` similarly
|
|
33
|
-
- [ ] Add test for tab indicator rendering with both tab states
|
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: audit-findings
|
|
3
|
-
audited: 2026-05-03
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Audit Findings: E07 Init Command
|
|
7
|
-
|
|
8
|
-
## Main Findings
|
|
9
|
-
|
|
10
|
-
E07 is implemented and the Go baseline passes: `go test ./internal/init ./cmd`, `go build ./...`, and `go test ./...` all succeeded. The command parser, target validation, scaffold copy, prompt rendering, clipboard best-effort path, and integration coverage are present.
|
|
11
|
-
|
|
12
|
-
Audit apply resolved the generated-template drift. New Savepoint projects now receive `stage` task-status instructions, `make build && make test` quality-gate guidance, and the current epic-local `E##-Audit.md` audit workflow instead of the archived `.savepoint/audit/.../proposals.md` pipeline.
|
|
13
|
-
|
|
14
|
-
Audit apply also tightened scaffold safety. Init validation now treats an existing root `agent-skills/` directory as a conflict unless `--force` is set, and `AtomicWrite` uses a portable replace helper that falls back to backup/restore when a platform cannot rename over an existing target.
|
|
15
|
-
|
|
16
|
-
The clipboard task record was reconciled: `T006-clipboard.md` now reflects the implemented `ClipboardResult` API, best-effort status handling, current-platform tests, and completed Go quality gates.
|
|
17
|
-
|
|
18
|
-
## Code Style Review
|
|
19
|
-
|
|
20
|
-
- [x] One job per file
|
|
21
|
-
- [x] One-sentence functions
|
|
22
|
-
- [x] Test branches
|
|
23
|
-
- [x] Types are documentation
|
|
24
|
-
- [x] Build, don't speculate
|
|
25
|
-
- [x] Errors at boundaries
|
|
26
|
-
- [x] One source of truth
|
|
27
|
-
- [x] Comments explain WHY
|
|
28
|
-
- [x] Content in data files
|
|
29
|
-
- [x] Small diffs
|
|
30
|
-
|
|
31
|
-
The audit-close patch brought generated workflow content back in line with the live root instructions, added tests that guard template freshness, and kept the scaffold conflict/overwrite fixes scoped to `internal/init`.
|
|
32
|
-
|
|
33
|
-
## Proposed Changes
|
|
34
|
-
|
|
35
|
-
### Target File
|
|
36
|
-
templates/project/AGENTS.md
|
|
37
|
-
|
|
38
|
-
### Replace
|
|
39
|
-
```
|
|
40
|
-
- `phase` (build/test/audit): only when `status: in_progress`
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### With
|
|
44
|
-
```
|
|
45
|
-
- `stage` (build/test/audit): **required** when `status: in_progress` — omitting it is a parse error
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Target File
|
|
49
|
-
templates/project/AGENTS.md
|
|
50
|
-
|
|
51
|
-
### Replace
|
|
52
|
-
```
|
|
53
|
-
2. When starting implementation, set task frontmatter to `status: in_progress`
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### With
|
|
57
|
-
```
|
|
58
|
-
2. When starting implementation, set task frontmatter to `status: in_progress` + `stage: build` (both required together)
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Target File
|
|
62
|
-
templates/project/AGENTS.md
|
|
63
|
-
|
|
64
|
-
### Replace
|
|
65
|
-
```
|
|
66
|
-
npm run build && npm run test
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### With
|
|
70
|
-
```
|
|
71
|
-
make build && make test
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Target File
|
|
75
|
-
templates/project/.savepoint/router.md
|
|
76
|
-
|
|
77
|
-
### Replace
|
|
78
|
-
```
|
|
79
|
-
## Manual audit override
|
|
80
|
-
|
|
81
|
-
If the user explicitly asks you to audit an epic, perform the audit for that epic even if the router has not reached `state: audit-pending` yet.
|
|
82
|
-
|
|
83
|
-
Persist the audit artifacts before replying:
|
|
84
|
-
|
|
85
|
-
- Ensure `.savepoint/audit/{E##-epic}/snapshot.md` exists. Create a manual snapshot once if needed.
|
|
86
|
-
- Write the proposal bundle to `.savepoint/audit/{release}/{E##-epic}/proposals.md`.
|
|
87
|
-
- Do not stop at chat-only findings. The filesystem artifact is part of the task output.
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### With
|
|
91
|
-
```
|
|
92
|
-
## Manual audit override
|
|
93
|
-
|
|
94
|
-
If the user explicitly asks you to audit an epic, perform the audit for that epic even if the router has not reached `state: audit-pending` yet.
|
|
95
|
-
|
|
96
|
-
Persist the audit artifact before replying:
|
|
97
|
-
|
|
98
|
-
- Write exactly one `.savepoint/releases/{release}/epics/{E##-epic}/E##-Audit.md`.
|
|
99
|
-
- Include `## Main Findings`, `## Code Style Review`, and `## Proposed Changes`.
|
|
100
|
-
- Keep file-specific `### Target File` / `### Replace` / `### With` blocks under `## Proposed Changes`.
|
|
101
|
-
- Do not apply proposals or mark the epic audited until the user says `apply audit`.
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Target File
|
|
105
|
-
templates/project/.savepoint/router.md
|
|
106
|
-
|
|
107
|
-
### Replace
|
|
108
|
-
```
|
|
109
|
-
**Next action (fresh session only):** Confirm `.savepoint/audit/{E##-epic}/snapshot.md` exists. If it is missing while the audit CLI is still unavailable, create one manual snapshot from the known epic scope once; do not search broadly for replacement inputs. Then read the snapshot, read the epic's `Design.md`, and read only the files listed as changed. Write one patch-shaped proposal bundle to `.savepoint/audit/{E##-epic}/proposals.md`:
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### With
|
|
113
|
-
```
|
|
114
|
-
**Next action (fresh session only):** Read the epic's `E##-Detail.md`, task files, drift notes, `.savepoint/Design.md`, `AGENTS.md`, and scoped changed files. Write one epic-local audit file to `.savepoint/releases/{release}/epics/{E##-epic}/E##-Audit.md`:
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Target File
|
|
118
|
-
templates/project/.savepoint/router.md
|
|
119
|
-
|
|
120
|
-
### Replace
|
|
121
|
-
```
|
|
122
|
-
- `Design.md` section — merge only the epic delta into project architecture.
|
|
123
|
-
- `AGENTS.md` section — refresh Codebase Map entries from changed-module metadata; preserve existing rows.
|
|
124
|
-
- `epic-Design.md` section — add "Implemented as:" notes and deltas from the original plan.
|
|
125
|
-
- `Quality Review` section — semantic-review findings against the 10 Code Style rules.
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### With
|
|
129
|
-
```
|
|
130
|
-
- `## Main Findings` — user-facing AC verification, important drift, and notable risks.
|
|
131
|
-
- `## Code Style Review` — checklist against the 10 AGENTS.md code style rules.
|
|
132
|
-
- `## Proposed Changes` — admin/apply metadata using `### Target File`, `### Replace`, and `### With`.
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### Target File
|
|
136
|
-
templates/project/.savepoint/router.md
|
|
137
|
-
|
|
138
|
-
### Replace
|
|
139
|
-
```
|
|
140
|
-
After proposals are approved, apply approved proposals to live files, mark the epic `Design.md` as `status: audited`, update project `Design.md` `last_audited`, refresh `AGENTS.md` Codebase Map, and advance this router to the next epic state.
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### With
|
|
144
|
-
```
|
|
145
|
-
After proposals are approved, apply approved proposals to live files, mark the epic `E##-Detail.md` as `status: audited`, update project `Design.md` `last_audited`, refresh `AGENTS.md` Codebase Map if needed, and advance this router to the next epic state.
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Target File
|
|
149
|
-
internal/init/validate.go
|
|
150
|
-
|
|
151
|
-
### Replace
|
|
152
|
-
```
|
|
153
|
-
var conflictingFiles = []string{
|
|
154
|
-
"AGENTS.md",
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### With
|
|
159
|
-
```
|
|
160
|
-
var conflictingFiles = []string{
|
|
161
|
-
"AGENTS.md",
|
|
162
|
-
"agent-skills",
|
|
163
|
-
}
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
### Target File
|
|
167
|
-
internal/init/scaffold_test.go
|
|
168
|
-
|
|
169
|
-
### Replace
|
|
170
|
-
```
|
|
171
|
-
func TestScaffold_preservesExistingWithoutForce(t *testing.T) {
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### With
|
|
175
|
-
```
|
|
176
|
-
func TestScaffold_overwritesExistingAfterValidation(t *testing.T) {
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Target File
|
|
180
|
-
internal/init/validate_test.go
|
|
181
|
-
|
|
182
|
-
### Replace
|
|
183
|
-
```
|
|
184
|
-
func TestValidateTarget_conflictingFileWithForce(t *testing.T) {
|
|
185
|
-
dir := t.TempDir()
|
|
186
|
-
if err := os.WriteFile(filepath.Join(dir, "AGENTS.md"), []byte("existing"), 0644); err != nil {
|
|
187
|
-
t.Fatal(err)
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
err := ValidateTarget(dir, true)
|
|
191
|
-
if err != nil {
|
|
192
|
-
t.Fatalf("ValidateTarget() with --force error = %v, want nil", err)
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### With
|
|
198
|
-
```
|
|
199
|
-
func TestValidateTarget_conflictingFileWithForce(t *testing.T) {
|
|
200
|
-
dir := t.TempDir()
|
|
201
|
-
if err := os.WriteFile(filepath.Join(dir, "AGENTS.md"), []byte("existing"), 0644); err != nil {
|
|
202
|
-
t.Fatal(err)
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
err := ValidateTarget(dir, true)
|
|
206
|
-
if err != nil {
|
|
207
|
-
t.Fatalf("ValidateTarget() with --force error = %v, want nil", err)
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
func TestValidateTarget_conflictingAgentSkillsDirectory(t *testing.T) {
|
|
212
|
-
dir := t.TempDir()
|
|
213
|
-
if err := os.Mkdir(filepath.Join(dir, "agent-skills"), 0755); err != nil {
|
|
214
|
-
t.Fatal(err)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
err := ValidateTarget(dir, false)
|
|
218
|
-
if err == nil {
|
|
219
|
-
t.Fatal("ValidateTarget() expected error for conflicting agent-skills directory")
|
|
220
|
-
}
|
|
221
|
-
if !errors.Is(err, ErrConflict) {
|
|
222
|
-
t.Fatalf("ValidateTarget() error type = %v, want ErrConflict", err)
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### Target File
|
|
228
|
-
internal/init/write.go
|
|
229
|
-
|
|
230
|
-
### Replace
|
|
231
|
-
```
|
|
232
|
-
if err := os.Rename(tmpName, target); err != nil {
|
|
233
|
-
return fmt.Errorf("rename temp to target: %w", err)
|
|
234
|
-
}
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### With
|
|
238
|
-
```
|
|
239
|
-
if err := replaceFile(tmpName, target); err != nil {
|
|
240
|
-
return fmt.Errorf("replace target with temp file: %w", err)
|
|
241
|
-
}
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
### Target File
|
|
245
|
-
internal/init/write.go
|
|
246
|
-
|
|
247
|
-
### Replace
|
|
248
|
-
```
|
|
249
|
-
return nil
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### With
|
|
254
|
-
```
|
|
255
|
-
return nil
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
func replaceFile(tmpName, target string) error {
|
|
259
|
-
if err := os.Rename(tmpName, target); err == nil {
|
|
260
|
-
return nil
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
if _, statErr := os.Stat(target); statErr != nil {
|
|
264
|
-
return os.Rename(tmpName, target)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
backup := target + ".savepoint-bak"
|
|
268
|
-
_ = os.Remove(backup)
|
|
269
|
-
if err := os.Rename(target, backup); err != nil {
|
|
270
|
-
return err
|
|
271
|
-
}
|
|
272
|
-
if err := os.Rename(tmpName, target); err != nil {
|
|
273
|
-
_ = os.Rename(backup, target)
|
|
274
|
-
return err
|
|
275
|
-
}
|
|
276
|
-
return os.Remove(backup)
|
|
277
|
-
}
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### Target File
|
|
281
|
-
.savepoint/Design.md
|
|
282
|
-
|
|
283
|
-
### Replace
|
|
284
|
-
```
|
|
285
|
-
- **Init command** (`savepoint init`) validates, scaffolds, prints prompt, clipboard, optional install (epic E05).
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
### With
|
|
289
|
-
```
|
|
290
|
-
- **Init command** (`savepoint init`) validates target directories, scaffolds rendered copies of `templates/project/`, prints the rendered magic prompt, attempts best-effort clipboard copy, and optionally runs `npm install` after scaffolding (v1.1 E07).
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
### Target File
|
|
294
|
-
.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md
|
|
295
|
-
|
|
296
|
-
### Replace
|
|
297
|
-
```
|
|
298
|
-
## Boundaries
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
### With
|
|
302
|
-
```
|
|
303
|
-
## Implemented As
|
|
304
|
-
|
|
305
|
-
- `cmd/init.go` owns init argument parsing and delegates execution through `InitRunner`.
|
|
306
|
-
- `main.go` embeds `templates/project/` and `templates/prompts/`, then wires validation, scaffold, prompt rendering, clipboard copy, and optional install in sequence.
|
|
307
|
-
- `internal/init/` owns validation, scaffold interpolation, atomic writes, prompt rendering, clipboard copy, dependency install, and integration tests.
|
|
308
|
-
- Audit found that generated workflow templates need reconciliation with the current epic-local audit workflow before closing.
|
|
309
|
-
|
|
310
|
-
## Boundaries
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### Target File
|
|
314
|
-
.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md
|
|
315
|
-
|
|
316
|
-
### Replace
|
|
317
|
-
```
|
|
318
|
-
- [ ] Add `internal/init/clipboard.go`
|
|
319
|
-
- [ ] Implement `CopyToClipboard(text) error`
|
|
320
|
-
- [ ] Detect platform: Windows (clip.exe), macOS (pbcopy), Linux (xclip/xsel)
|
|
321
|
-
- [ ] Fall back gracefully if clipboard tools unavailable
|
|
322
|
-
- [ ] Log skip or failure without failing init
|
|
323
|
-
- [ ] Test clipboard on each platform
|
|
324
|
-
- [ ] Run `make build && make test`
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
### With
|
|
328
|
-
```
|
|
329
|
-
- [x] Add `internal/init/clipboard.go`
|
|
330
|
-
- [x] Implement `CopyToClipboard(text) ClipboardResult`
|
|
331
|
-
- [x] Detect platform: Windows (clip.exe), macOS (pbcopy), Linux (xclip/xsel)
|
|
332
|
-
- [x] Fall back gracefully if clipboard tools unavailable
|
|
333
|
-
- [x] Log skip or failure without failing init
|
|
334
|
-
- [x] Test clipboard status handling on the current platform
|
|
335
|
-
- [x] Run quality gates (`go test ./internal/init ./cmd`, `go build ./...`, `go test ./...`)
|
|
336
|
-
```
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: epic-design
|
|
3
|
-
status: audited
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# E07: Init Command
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Implement `savepoint init`, the first-run command that creates a Savepoint workflow in an empty or compatible project directory and prints the magic prompt the user gives to an AI agent.
|
|
11
|
-
|
|
12
|
-
## Interface
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
savepoint init [dir] # scaffold .savepoint/ in target directory
|
|
16
|
-
savepoint init [dir] --force # overwrite existing
|
|
17
|
-
savepoint init [dir] --install # run npm install after scaffold
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## What this epic adds
|
|
21
|
-
|
|
22
|
-
- Target directory validation (missing, empty, compatible, already-initialized, conflicting, boundary-error)
|
|
23
|
-
- Scaffold writing from `templates/project/`
|
|
24
|
-
- Project name interpolation
|
|
25
|
-
- Safe handling (refuse conflicts by default, temp-file-plus-rename)
|
|
26
|
-
- Magic prompt output to stdout (from `templates/prompts/magic-prompt.prompt.md`)
|
|
27
|
-
- Best-effort clipboard copy (doesn't fail if unavailable)
|
|
28
|
-
- Optional `--install` flag for dev dependencies
|
|
29
|
-
- Integration tests using temporary directories
|
|
30
|
-
|
|
31
|
-
## Components
|
|
32
|
-
|
|
33
|
-
| Module | Purpose |
|
|
34
|
-
|--------|---------|
|
|
35
|
-
| `cmd/init.go` | CLI registration, arg parsing |
|
|
36
|
-
| `internal/init/validate.go` | Target directory checks |
|
|
37
|
-
| `internal/init/scaffold.go` | Template copy, project name interpolation |
|
|
38
|
-
| `internal/init/write.go` | Atomic writes with temp-file-plus-rename |
|
|
39
|
-
| `internal/init/prompt.go` | Magic prompt rendering from template |
|
|
40
|
-
| `internal/init/clipboard.go` | Platform clipboard detection and copy |
|
|
41
|
-
|
|
42
|
-
## Implemented As
|
|
43
|
-
|
|
44
|
-
- `cmd/init.go` owns init argument parsing and delegates execution through `InitRunner`.
|
|
45
|
-
- `main.go` embeds `templates/project/` and `templates/prompts/`, then wires validation, scaffold, prompt rendering, clipboard copy, and optional install in sequence.
|
|
46
|
-
- `internal/init/` owns validation, scaffold interpolation, atomic writes, prompt rendering, clipboard copy, dependency install, and integration tests.
|
|
47
|
-
- Audit reconciled generated workflow templates with the current epic-local audit workflow before closing.
|
|
48
|
-
|
|
49
|
-
## Boundaries
|
|
50
|
-
|
|
51
|
-
**In scope:**
|
|
52
|
-
- Create `.savepoint/` and root `AGENTS.md`
|
|
53
|
-
- Print the initial agent prompt
|
|
54
|
-
- Avoid overwriting user files unless explicitly allowed by flags
|
|
55
|
-
- Support Windows, macOS, and Linux filesystem behavior
|
|
56
|
-
|
|
57
|
-
**Out of scope:**
|
|
58
|
-
- Creating epics/tasks interactively
|
|
59
|
-
- Running the board after init
|
|
60
|
-
- Implementing audit or doctor
|
|
61
|
-
- Managing package installation beyond the optional one-shot path
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E07-init-command/T001-cli-entrypoint
|
|
3
|
-
status: done
|
|
4
|
-
objective: "Create CLI entrypoint for savepoint init command"
|
|
5
|
-
depends_on: []
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# T001: CLI Entrypoint
|
|
9
|
-
|
|
10
|
-
## Acceptance Criteria
|
|
11
|
-
|
|
12
|
-
- `savepoint init --help` shows usage: `init [dir] [--force] [--install]`
|
|
13
|
-
- `savepoint init` uses current directory
|
|
14
|
-
- `savepoint init <dir>` uses specified directory
|
|
15
|
-
- `--force` flag allows overwriting existing .savepoint
|
|
16
|
-
- `--install` flag triggers dev dependency install after scaffold
|
|
17
|
-
- Unknown flags show error and exit non-zero
|
|
18
|
-
|
|
19
|
-
## Implementation Plan
|
|
20
|
-
|
|
21
|
-
- [x] Add `cmd/init.go` with CLI arg parsing
|
|
22
|
-
- [x] Wire init command into main.go dispatch
|
|
23
|
-
- [x] Implement arg validation (dir, --force, --install)
|
|
24
|
-
- [x] Default to current directory if no dir specified
|
|
25
|
-
- [x] Test `savepoint init --help` output
|
|
26
|
-
- [x] Run quality gates (`make` unavailable; used direct Go build/test)
|
|
27
|
-
|
|
28
|
-
## Context Log
|
|
29
|
-
|
|
30
|
-
- Files read: `.savepoint/router.md`, `E07-Detail.md`, this task file, E07 task files T002-T007, `main.go`, `go.mod`, `Makefile`, `internal/board/board.go`, archived E05 init task.
|
|
31
|
-
- Files edited: `cmd/init.go`, `cmd/init_test.go`, `main.go`, this task file, `.savepoint/router.md`.
|
|
32
|
-
- Estimated input tokens: ~18k.
|
|
33
|
-
- Quality gates: `go test ./cmd` passed; `make build` could not run because `make` is not installed; `go build ./...` passed with a Go module cache warning; `go test ./...` passed; `go run . init --help` printed `Usage: init [dir] [--force] [--install]`; `go run . init --bogus` exited non-zero with an unknown flag error.
|
|
34
|
-
|
|
35
|
-
## Drift Notes
|
|
36
|
-
|
|
37
|
-
- Added new `cmd/` package for CLI command parsing and dispatch. This module is listed in the E07 epic design but is not yet listed in the AGENTS.md Codebase Map.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E07-init-command/T002-target-validation
|
|
3
|
-
status: done
|
|
4
|
-
objective: "Implement target directory validation"
|
|
5
|
-
depends_on: ["E07-init-command/T001-cli-entrypoint"]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# T002: Target Validation
|
|
9
|
-
|
|
10
|
-
## Acceptance Criteria
|
|
11
|
-
|
|
12
|
-
- Target missing → error with helpful message
|
|
13
|
-
- Target empty → proceed with init
|
|
14
|
-
- Target has compatible files (package.json, .git, etc.) → proceed
|
|
15
|
-
- Target already has .savepoint → error unless --force
|
|
16
|
-
- Target has conflicting files → error unless --force
|
|
17
|
-
- Boundary errors (permission denied) → clear error message
|
|
18
|
-
|
|
19
|
-
## Implementation Plan
|
|
20
|
-
|
|
21
|
-
- [x] Add `internal/init/validate.go`
|
|
22
|
-
- [x] Implement `ValidateTarget(path, force) error`
|
|
23
|
-
- [x] Check directory exists, is writable
|
|
24
|
-
- [x] Check for existing .savepoint (conflict)
|
|
25
|
-
- [x] Check for compatible project files
|
|
26
|
-
- [x] Handle permission errors with clear messages
|
|
27
|
-
- [x] Test all validation scenarios
|
|
28
|
-
- [x] Run `make build && make test`
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: E07-init-command/T003-scaffold-writer
|
|
3
|
-
status: done
|
|
4
|
-
objective: "Implement scaffold writing from templates"
|
|
5
|
-
depends_on: ["E07-init-command/T002-target-validation"]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# T003: Scaffold Writer
|
|
9
|
-
|
|
10
|
-
## Acceptance Criteria
|
|
11
|
-
|
|
12
|
-
- Reads templates from `templates/project/` directory
|
|
13
|
-
- Interpolates project name into template files (AGENTS.md, config.yml)
|
|
14
|
-
- Creates parent directories as needed
|
|
15
|
-
- Excludes conflicting files unless --force
|
|
16
|
-
- Copies all .savepoint/ contents
|
|
17
|
-
- Creates root AGENTS.md from template
|
|
18
|
-
|
|
19
|
-
## Implementation Plan
|
|
20
|
-
|
|
21
|
-
- [x] Add `internal/init/scaffold.go`
|
|
22
|
-
- [x] Implement `Scaffold(targetDir, projectName, force) error`
|
|
23
|
-
- [x] Load templates from embedded or filesystem path
|
|
24
|
-
- [x] Implement template variable interpolation (project name)
|
|
25
|
-
- [x] Create .savepoint/ directory structure
|
|
26
|
-
- [x] Copy all template files to target
|
|
27
|
-
- [x] Create root AGENTS.md from template
|
|
28
|
-
- [x] Test scaffold output in temp directory
|
|
29
|
-
- [x] Run `make build && make test`
|
|
30
|
-
|
|
31
|
-
## Context Log
|
|
32
|
-
|
|
33
|
-
- Files read: router.md, E07-Detail.md, T002-target-validation.md, T001-cli-entrypoint.md, cmd/init.go, cmd/init_test.go, main.go, internal/init/validate.go, internal/init/validate_test.go, Makefile, templates/project/**/*
|
|
34
|
-
- Files created: internal/init/scaffold.go, internal/init/scaffold_test.go
|
|
35
|
-
- Files modified: main.go, T003-scaffold-writer.md
|
|
36
|
-
- Estimated input tokens: ~14k
|
|
37
|
-
- Key decisions:
|
|
38
|
-
- Used Go `embed.FS` with `fs.Sub` to embed `templates/project/` recursively.
|
|
39
|
-
- Explicit `//go:embed templates/project/.savepoint` needed because Go's embed excludes dotfile-prefixed directories from recursive directory embedding.
|
|
40
|
-
- Scaffold accepts `fs.FS` for testability; tested with `testing/fstest.MapFS`.
|
|
41
|
-
- Init runner in `main.go` validates first (reuses T002), then scaffolds.
|
|
42
|
-
- Template variables: `{{PROJECT_NAME}}` and `{{RELEASE_NUMBER}}` replaced via `strings.ReplaceAll`.
|
|
43
|
-
|
|
44
|
-
## Drift Notes
|
|
45
|
-
|
|
46
|
-
- `cmd/` and `internal/init/` modules were not in AGENTS.md Codebase Map. Updated AGENTS.md to include both.
|