pan-wizard 3.35.0 → 3.37.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/CHANGELOG.md +3645 -0
- package/README.md +46 -52
- package/agents/pan-conductor.md +2 -3
- package/agents/pan-counterfactual.md +1 -2
- package/agents/pan-debugger.md +14 -3
- package/agents/pan-design-checker.md +1 -2
- package/agents/pan-designer.md +2 -3
- package/agents/pan-document_code.md +1 -2
- package/agents/pan-executor.md +25 -0
- package/agents/pan-hardener.md +4 -3
- package/agents/pan-integration-checker.md +1 -2
- package/agents/pan-knowledge.md +1 -2
- package/agents/pan-meta-reviewer.md +3 -3
- package/agents/pan-optimizer.md +4 -4
- package/agents/pan-phase-researcher.md +80 -475
- package/agents/pan-plan-checker.md +40 -3
- package/agents/pan-planner.md +21 -7
- package/agents/pan-previewer.md +3 -2
- package/agents/pan-project-researcher.md +72 -493
- package/agents/pan-release.md +1 -1
- package/agents/pan-reviewer.md +14 -3
- package/agents/pan-roadmapper.md +12 -7
- package/agents/pan-verifier.md +9 -4
- package/bin/install-lib.cjs +134 -14
- package/bin/install.js +59 -12
- package/commands/pan/army.md +1 -1
- package/commands/pan/autodev.md +76 -0
- package/commands/pan/cost.md +21 -1
- package/commands/pan/exec-phase.md +3 -4
- package/commands/pan/focus-auto.md +14 -7
- package/commands/pan/focus-design.md +4 -5
- package/commands/pan/focus-docs.md +24 -0
- package/commands/pan/learn.md +13 -6
- package/commands/pan/milestone-audit.md +8 -1
- package/commands/pan/milestone-done.md +10 -5
- package/commands/pan/milestone-new.md +2 -2
- package/commands/pan/new-project.md +15 -12
- package/commands/pan/plan-phase.md +15 -9
- package/commands/pan/preview.md +1 -1
- package/commands/pan/quick.md +1 -1
- package/commands/pan/review-deep.md +11 -5
- package/commands/pan/settings.md +6 -0
- package/commands/pan/verify-phase.md +6 -2
- package/docs/AGENTS.md +917 -0
- package/docs/ARCHITECTURE.md +1054 -0
- package/docs/CLI-REFERENCE.md +4582 -0
- package/docs/COMPARISON.md +116 -0
- package/docs/DEVELOPMENT.md +490 -0
- package/docs/ECOSYSTEM-REVIEW-2026-06.md +107 -0
- package/docs/ECOSYSTEM-REVIEW-2026-08.md +349 -0
- package/docs/EXAMPLES.md +584 -0
- package/docs/FAQ.md +254 -0
- package/docs/FIELD-HARVEST-2026-07.md +88 -0
- package/docs/FIELD-REPORT-army-2026-06.md +121 -0
- package/docs/HOOKS.md +638 -0
- package/docs/IMPROVEMENT-TODO.md +246 -0
- package/docs/INTERNALS.md +485 -0
- package/docs/MIGRATION-v2-to-v3.md +258 -0
- package/docs/SECURITY-HARDENING.md +230 -0
- package/docs/SKILLS-ENHANCEMENT-PLAN-V2.md +122 -0
- package/docs/SKILLS-FULL-TEXT.md +9685 -0
- package/docs/SKILLS-REFERENCE.md +1037 -0
- package/docs/TROUBLESHOOTING.md +1084 -0
- package/docs/USER-GUIDE.md +1437 -0
- package/docs/archive/SKILLS-ENHANCEMENT-PLAN.md +230 -0
- package/docs/audits/AUDIT-2026-08-e2e-ROADMAP.md +117 -0
- package/docs/audits/AUDIT-2026-08-e2e-VERIFICATION.md +693 -0
- package/docs/audits/AUDIT-2026-08-e2e.md +1546 -0
- package/docs/audits/OUTSTANDING-2026-08.md +275 -0
- package/docs/audits/STABILITY-TEST-2026-08.md +640 -0
- package/docs/branding/README-brand-draft.md +119 -0
- package/docs/branding/handoff/IMPLEMENTATION.md +205 -0
- package/docs/branding/handoff/README-brand-draft.md +119 -0
- package/docs/branding/handoff/image-prompts.md +46 -0
- package/docs/branding/image-prompts.md +46 -0
- package/docs/branding/nano-banana-prompts.txt +60 -0
- package/docs/context-monitor.md +13 -0
- package/docs/decisions/ADR-0001-strategic-feature-prioritization.md +83 -0
- package/docs/decisions/ADR-0002-copilot-cli-runtime.md +71 -0
- package/docs/decisions/ADR-0003-smart-execution.md +84 -0
- package/docs/decisions/ADR-0004-copilot-cli-interaction.md +89 -0
- package/docs/decisions/ADR-0005-command-naming.md +80 -0
- package/docs/decisions/ADR-0006-focus-commands.md +101 -0
- package/docs/decisions/ADR-0007-ship-v1.md +73 -0
- package/docs/decisions/ADR-0008-map-codebase-mermaid-togaf.md +80 -0
- package/docs/decisions/ADR-0009-production-deployment-checklist.md +68 -0
- package/docs/decisions/ADR-0010-standards-integration.md +79 -0
- package/docs/decisions/ADR-0011-help-commands-rewrite.md +64 -0
- package/docs/decisions/ADR-0012-contributors-attribution-index.md +42 -0
- package/docs/decisions/ADR-0013-strategic-feature-additions.md +53 -0
- package/docs/decisions/ADR-0014-internal-cleanup-code-quality.md +53 -0
- package/docs/decisions/ADR-0015-focus-auto-runner.md +296 -0
- package/docs/decisions/ADR-0016-enhanced-doc-sync.md +54 -0
- package/docs/decisions/ADR-0017-enhanced-focus-design.md +69 -0
- package/docs/decisions/ADR-0018-user-reality-testing.md +84 -0
- package/docs/decisions/ADR-0019-end-to-end-user-acceptance-testing.md +113 -0
- package/docs/decisions/ADR-0020-ai-drift-prevention.md +55 -0
- package/docs/decisions/ADR-0021-codebase-mapper-v2.md +76 -0
- package/docs/decisions/ADR-0022-lifecycle-completeness.md +63 -0
- package/docs/decisions/ADR-0023-opus-4-7-adoption.md +89 -0
- package/docs/decisions/ADR-0024-spec-b-v2-completion.md +137 -0
- package/docs/decisions/ADR-0025-behavioral-guardrails-layer.md +129 -0
- package/docs/decisions/ADR-0026-self-improvement-loop.md +171 -0
- package/docs/decisions/ADR-0027-doc-code-link-graph.md +164 -0
- package/docs/decisions/ADR-0028-unified-agents-skills-target.md +46 -0
- package/docs/decisions/ADR-0029-experiment-evaluator.md +76 -0
- package/docs/decisions/ADR-0030-planning-concurrency.md +37 -0
- package/docs/decisions/ADR-0031-focus-auto-backlog-source.md +47 -0
- package/docs/decisions/ADR-0032-squad-model.md +64 -0
- package/docs/decisions/ADR-0033-army-campaign.md +40 -0
- package/docs/decisions/ADR-0034-scheduled-campaigns.md +57 -0
- package/docs/decisions/ADR-0035-army-hud-dashboard.md +40 -0
- package/docs/decisions/ADR-0036-agentic-memory-architecture.md +106 -0
- package/docs/decisions/ADR-0037-pin-security-agents-to-opus.md +51 -0
- package/docs/decisions/ADR-0038-skill-aligned-decomposition.md +41 -0
- package/docs/decisions/ADR-0039-worktree-as-project-variant.md +37 -0
- package/docs/decisions/ADR-0040-memory-injection-defense.md +55 -0
- package/docs/decisions/ADR-0041-mcp-dual-era-bridge.md +47 -0
- package/docs/decisions/ADR-0042-design-parity-both-flows.md +45 -0
- package/docs/decisions/ADR-0043-addressable-planning-roots.md +56 -0
- package/docs/decisions/ADR-0044-bound-the-cached-context.md +104 -0
- package/docs/decisions/ADR-0045-agent-plugins-bundle.md +76 -0
- package/docs/decisions/ADR-0046-subagent-frontmatter-decisions.md +39 -0
- package/docs/decisions/ADR-0047-pan-harness.md +76 -0
- package/docs/decisions/ADR-0048-one-core-per-project.md +43 -0
- package/docs/decisions/ADR-0049-machine-verdicts-and-findings-ledger.md +116 -0
- package/docs/specs/ai_drift_prevention_featureai.md +286 -0
- package/docs/specs/codebase_mapper_v2_featureai.md +930 -0
- package/docs/specs/command_naming_optimization_featureai.md +930 -0
- package/docs/specs/comp_analysis_markdown_v1.md +149 -0
- package/docs/specs/continuous_autonomous_execution_featureai.md +304 -0
- package/docs/specs/contributors_attribution_index_featureai.md +476 -0
- package/docs/specs/copilot_cli_interaction_featureai.md +868 -0
- package/docs/specs/copilot_cli_runtime_featureai.md +647 -0
- package/docs/specs/custom-skills-assessment.md +461 -0
- package/docs/specs/deployment_audit_findings_featureai.md +243 -0
- package/docs/specs/doc_code_link_graph_featureai.md +253 -0
- package/docs/specs/documentation_alignment_cleanup_featureai.md +69 -0
- package/docs/specs/e2e_visual_testing_featureai.md +615 -0
- package/docs/specs/end_to_end_user_acceptance_testing_featureai.md +810 -0
- package/docs/specs/evidence-loop-plan.md +76 -0
- package/docs/specs/evidence_loop_featureai.md +497 -0
- package/docs/specs/focus-auto-optimize-category.md +449 -0
- package/docs/specs/focus-auto-optimize-superplan.md +188 -0
- package/docs/specs/focus_auto_runner_featureai.md +1102 -0
- package/docs/specs/focus_design_v2_featureai.md +197 -0
- package/docs/specs/focus_sync_v2_featureai.md +202 -0
- package/docs/specs/git_integration_overhaul_featureai.md +326 -0
- package/docs/specs/glm_zai_provider_featureai.md +200 -0
- package/docs/specs/googlecli_adoption_featureai.md +661 -0
- package/docs/specs/help_commands_rewrite_featureai.md +860 -0
- package/docs/specs/industry_analysis_strategic_additions_featureai.md +231 -0
- package/docs/specs/industry_comparison_and_feature_gaps_featureai.md +674 -0
- package/docs/specs/internal_cleanup_code_quality_featureai.md +486 -0
- package/docs/specs/investigations/README.md +31 -0
- package/docs/specs/investigations/digests/2026-09-28.md +47 -0
- package/docs/specs/investigations/digests/2026-10-08.md +62 -0
- package/docs/specs/investigations/digests/2026-10-10.md +61 -0
- package/docs/specs/investigations/features/debugger-red-loop-first.md +55 -0
- package/docs/specs/investigations/features/harness-cross-host-behaviour.md +93 -0
- package/docs/specs/investigations/features/optimize-apply-regression-gate.md +66 -0
- package/docs/specs/investigations/features/reviewer-smell-baseline.md +57 -0
- package/docs/specs/investigations/features/trace-failure-capture.md +69 -0
- package/docs/specs/lifecycle_completeness_featureai.md +754 -0
- package/docs/specs/local-first-ci.md +42 -0
- package/docs/specs/map_codebase_mermaid_togaf_featureai.md +805 -0
- package/docs/specs/market-delta-2026-09-superplan.md +310 -0
- package/docs/specs/market-ideas-2026-09.md +131 -0
- package/docs/specs/market-ideas-2026-10.md +428 -0
- package/docs/specs/market-ideas-ledger.md +177 -0
- package/docs/specs/memory-optimization-2026-10.md +285 -0
- package/docs/specs/multi-track-planning-roots.md +143 -0
- package/docs/specs/multi_model_routing_featureai.md +687 -0
- package/docs/specs/multi_model_routing_superplan.md +197 -0
- package/docs/specs/opus_47_existing_enhancements_featureai.md +247 -0
- package/docs/specs/opus_47_extended_features_featureai.md +363 -0
- package/docs/specs/opus_47_extended_features_v2_featureai.md +397 -0
- package/docs/specs/pan_focus_commands_featureai.md +2336 -0
- package/docs/specs/pan_zcode_mcp_bridge_featureai.md +120 -0
- package/docs/specs/product-excellence-superplan.md +315 -0
- package/docs/specs/product_excellence_program_2026_q4_featureai.md +365 -0
- package/docs/specs/production_deployment_readiness_featureai.md +433 -0
- package/docs/specs/production_readiness_ship_v1_featureai.md +698 -0
- package/docs/specs/real_test_enforcement_featureai.md +213 -0
- package/docs/specs/reality-check-2026-09-superplan.md +362 -0
- package/docs/specs/right-sized-ceremony.md +74 -0
- package/docs/specs/roadmap_and_competition_2026_q4_featureai.md +390 -0
- package/docs/specs/self_improvement_loop_featureai.md +875 -0
- package/docs/specs/skill-aligned-decomposition.md +155 -0
- package/docs/specs/standards_integration_featureai.md +833 -0
- package/docs/specs/testing-system-redesign-2026-09.md +267 -0
- package/docs/specs/user_reality_testing_system_featureai.md +788 -0
- package/docs/specs/watch-triggers.json +22 -0
- package/docs/specs/workflow-integration-redesign.md +742 -0
- package/docs/specs/workflow_state_consistency_featureai.md +183 -0
- package/hooks/dist/pan-context-monitor.js +9 -2
- package/hooks/dist/pan-cost-logger.js +5 -0
- package/hooks/dist/pan-guard.js +28 -5
- package/hooks/dist/pan-stop-guard.js +9 -9
- package/hooks/dist/pan-trace-logger.js +5 -0
- package/package.json +10 -2
- package/pan-wizard-core/bin/lib/agents-md.cjs +57 -8
- package/pan-wizard-core/bin/lib/autodev-report.cjs +180 -0
- package/pan-wizard-core/bin/lib/autodev.cjs +642 -0
- package/pan-wizard-core/bin/lib/ci.cjs +143 -0
- package/pan-wizard-core/bin/lib/commands.cjs +1 -1
- package/pan-wizard-core/bin/lib/config.cjs +41 -5
- package/pan-wizard-core/bin/lib/constants.cjs +27 -1
- package/pan-wizard-core/bin/lib/core.cjs +31 -14
- package/pan-wizard-core/bin/lib/cost.cjs +160 -4
- package/pan-wizard-core/bin/lib/cross-family.cjs +164 -0
- package/pan-wizard-core/bin/lib/debug-cases.cjs +104 -0
- package/pan-wizard-core/bin/lib/doc-lint.cjs +5 -3
- package/pan-wizard-core/bin/lib/failure-class.cjs +81 -0
- package/pan-wizard-core/bin/lib/findings.cjs +148 -9
- package/pan-wizard-core/bin/lib/focus.cjs +1 -1
- package/pan-wizard-core/bin/lib/git.cjs +1 -1
- package/pan-wizard-core/bin/lib/hosts.cjs +88 -0
- package/pan-wizard-core/bin/lib/init.cjs +7 -2
- package/pan-wizard-core/bin/lib/knowledge.cjs +2 -0
- package/pan-wizard-core/bin/lib/merge.cjs +50 -0
- package/pan-wizard-core/bin/lib/mutate.cjs +268 -0
- package/pan-wizard-core/bin/lib/next-action.cjs +112 -0
- package/pan-wizard-core/bin/lib/optimize.cjs +2 -2
- package/pan-wizard-core/bin/lib/phase-gate.cjs +15 -9
- package/pan-wizard-core/bin/lib/phase-remove.cjs +91 -11
- package/pan-wizard-core/bin/lib/phase.cjs +85 -13
- package/pan-wizard-core/bin/lib/plan-lint.cjs +310 -0
- package/pan-wizard-core/bin/lib/preview.cjs +26 -4
- package/pan-wizard-core/bin/lib/requirements-lint.cjs +130 -0
- package/pan-wizard-core/bin/lib/research-lint.cjs +268 -0
- package/pan-wizard-core/bin/lib/review-deep.cjs +14 -22
- package/pan-wizard-core/bin/lib/review-vote.cjs +105 -0
- package/pan-wizard-core/bin/lib/roadmap.cjs +1 -0
- package/pan-wizard-core/bin/lib/runner.cjs +2 -16
- package/pan-wizard-core/bin/lib/sizing.cjs +356 -0
- package/pan-wizard-core/bin/lib/squads.cjs +1 -1
- package/pan-wizard-core/bin/lib/state-write.cjs +247 -0
- package/pan-wizard-core/bin/lib/test-gate.cjs +433 -0
- package/pan-wizard-core/bin/lib/uat.cjs +149 -0
- package/pan-wizard-core/bin/lib/usage.cjs +104 -0
- package/pan-wizard-core/bin/lib/verdict.cjs +26 -3
- package/pan-wizard-core/bin/lib/verify-plan-set.cjs +30 -1
- package/pan-wizard-core/bin/lib/verify-preflight.cjs +2 -2
- package/pan-wizard-core/bin/lib/verify-red.cjs +174 -0
- package/pan-wizard-core/bin/lib/verify-retro.cjs +3 -2
- package/pan-wizard-core/bin/lib/verify-scope.cjs +143 -2
- package/pan-wizard-core/bin/lib/verify.cjs +86 -31
- package/pan-wizard-core/bin/lib/worktree.cjs +70 -0
- package/pan-wizard-core/bin/pan-tools.cjs +257 -28
- package/pan-wizard-core/learnings/universal/autonomous-loop.md +2 -2
- package/pan-wizard-core/mcp/orchestrator.cjs +4 -1
- package/pan-wizard-core/references/continuation-format.md +3 -3
- package/pan-wizard-core/references/design-methodology.md +1 -1
- package/pan-wizard-core/references/guardrails.md +1 -1
- package/pan-wizard-core/references/handoff-decisions.md +1 -1
- package/pan-wizard-core/references/model-profiles.md +2 -3
- package/pan-wizard-core/references/questioning.md +24 -0
- package/pan-wizard-core/references/ui-brand.md +4 -6
- package/pan-wizard-core/references/verdict-contract.md +2 -1
- package/pan-wizard-core/templates/config.json +10 -2
- package/pan-wizard-core/templates/debug.md +1 -0
- package/pan-wizard-core/templates/design.md +5 -4
- package/pan-wizard-core/templates/discovery.md +2 -2
- package/pan-wizard-core/templates/phase-prompt.md +7 -0
- package/pan-wizard-core/templates/requirements.md +9 -0
- package/pan-wizard-core/templates/research.md +10 -0
- package/pan-wizard-core/templates/summary-complex.md +5 -1
- package/pan-wizard-core/templates/summary-minimal.md +4 -0
- package/pan-wizard-core/templates/summary-standard.md +5 -1
- package/pan-wizard-core/templates/summary.md +8 -1
- package/pan-wizard-core/workflows/add-phase.md +4 -6
- package/pan-wizard-core/workflows/assumptions.md +19 -1
- package/pan-wizard-core/workflows/diagnose-issues.md +2 -0
- package/pan-wizard-core/workflows/discuss-phase.md +4 -2
- package/pan-wizard-core/workflows/exec-lean.md +69 -0
- package/pan-wizard-core/workflows/exec-phase.md +79 -15
- package/pan-wizard-core/workflows/execute-plan.md +3 -1
- package/{commands/pan → pan-wizard-core/workflows}/focus-doc-audit.md +13 -29
- package/{commands/pan → pan-wizard-core/workflows}/focus-drift-walking.md +3 -18
- package/{commands/pan → pan-wizard-core/workflows}/focus-exec.md +8 -23
- package/{commands/pan → pan-wizard-core/workflows}/focus-plan.md +6 -20
- package/{commands/pan → pan-wizard-core/workflows}/focus-scan.md +3 -16
- package/{commands/pan → pan-wizard-core/workflows}/focus-sync.md +7 -21
- package/pan-wizard-core/workflows/health.md +6 -0
- package/pan-wizard-core/workflows/help.md +114 -77
- package/pan-wizard-core/workflows/insert-phase.md +4 -6
- package/pan-wizard-core/workflows/learn.md +3 -3
- package/pan-wizard-core/workflows/milestone-audit.md +2 -2
- package/pan-wizard-core/workflows/milestone-new.md +38 -95
- package/pan-wizard-core/workflows/new-project.md +96 -258
- package/pan-wizard-core/workflows/optimize.md +107 -5
- package/pan-wizard-core/workflows/phase-tests.md +10 -0
- package/pan-wizard-core/workflows/plan-phase.md +106 -45
- package/pan-wizard-core/workflows/profile.md +50 -0
- package/pan-wizard-core/workflows/progress.md +10 -0
- package/pan-wizard-core/workflows/quick.md +34 -43
- package/pan-wizard-core/workflows/remove-phase.md +11 -1
- package/pan-wizard-core/workflows/research-phase.md +118 -40
- package/pan-wizard-core/workflows/resume-project.md +18 -2
- package/pan-wizard-core/workflows/settings.md +33 -19
- package/pan-wizard-core/workflows/todo-check.md +6 -2
- package/pan-wizard-core/workflows/transition.md +22 -4
- package/pan-wizard-core/workflows/uat-walkthrough.md +90 -0
- package/pan-wizard-core/workflows/update.md +1 -1
- package/pan-wizard-core/workflows/verify-phase.md +39 -46
- package/scripts/build-agent-plugin.js +35 -15
- package/scripts/build-help.cjs +106 -0
- package/scripts/build-plugin.js +10 -1
- package/scripts/deprecate-old-versions.js +70 -3
- package/scripts/generate-skills-docs.py +1 -1
- package/scripts/git-hooks/pre-push +27 -0
- package/scripts/install-git-hooks.js +7 -5
- package/scripts/install-pre-push.cjs +38 -0
- package/scripts/land.cjs +151 -0
- package/scripts/local-ci.cjs +501 -0
- package/scripts/local-schedule.cjs +277 -0
- package/scripts/mutation-probe.cjs +7 -80
- package/scripts/prompt-lint.cjs +32 -0
- package/scripts/prompt-rules.cjs +156 -0
- package/scripts/run-tests.cjs +7 -1
- package/scripts/test-quality-lint.cjs +3 -3
- package/scripts/test-surface.cjs +175 -6
- package/agents/pan-research-synthesizer.md +0 -246
- package/commands/pan/audit-deployment.md +0 -386
- package/commands/pan/dashboard.md +0 -22
- package/commands/pan/discord.md +0 -19
- package/commands/pan/mcp-bridge.md +0 -143
- package/commands/pan/milestone-cleanup.md +0 -19
- package/commands/pan/milestone-gaps.md +0 -35
- package/commands/pan/optimize.md +0 -115
- package/commands/pan/profile.md +0 -76
- package/commands/pan/research-phase.md +0 -189
- package/pan-wizard-core/bin/lib/bridge.cjs +0 -269
- package/pan-wizard-core/templates/research-project/architecture.md +0 -204
- package/pan-wizard-core/templates/research-project/features.md +0 -147
- package/pan-wizard-core/templates/research-project/pitfalls.md +0 -200
- package/pan-wizard-core/templates/research-project/stack.md +0 -120
- package/pan-wizard-core/templates/research-project/summary.md +0 -170
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
# ADR-0015: Focus Auto-Runner — Continuous Categorized Execution
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted (shipped in v2.3.0 — 2026-03-03)
|
|
4
|
+
**Date:** 2026-03-03
|
|
5
|
+
**Context:** Strategic Feature Spec — `docs/specs/focus_auto_runner_featureai.md`
|
|
6
|
+
**Competitive Research:** `docs/specs/continuous_autonomous_execution_featureai.md`
|
|
7
|
+
|
|
8
|
+
## Decision
|
|
9
|
+
|
|
10
|
+
Add `/pan:focus-auto` — a continuous scan→plan→exec loop with 5 purpose-driven categories and a 5-layer safety harness. The auto-runner orchestrates multiple focus cycles as a single campaign, with category-scoped scanning, intelligent default escalation, and structured run state persistence.
|
|
11
|
+
|
|
12
|
+
**Architecture**: Workflow-orchestrated loop (command .md) + core state management (focus.cjs). The AI workflow orchestrates the scan→plan→exec loop; the core module manages run state persistence, category filtering, and cycle recording. This follows PAN's established separation: core returns data, workflows make AI decisions.
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
### The Problem (Quantified)
|
|
17
|
+
|
|
18
|
+
PAN Wizard's focus system requires **3 manual invocations per improvement cycle**: `/pan:focus-scan` → `/pan:focus-plan` → `/pan:focus-exec`. For a typical 5-cycle quality campaign:
|
|
19
|
+
|
|
20
|
+
| Metric | Manual (Status Quo) | With Auto-Runner |
|
|
21
|
+
|--------|-------------------|-----------------|
|
|
22
|
+
| Commands typed | 15 (3 × 5 cycles) | 1 |
|
|
23
|
+
| Human decision points | 10 (review scan + confirm plan × 5) | 0 (category carries defaults) |
|
|
24
|
+
| Context switches | 5 (between cycles) | 0 (continuous loop) |
|
|
25
|
+
| Total wall-clock overhead | ~15 min of human typing/reviewing | ~10 sec (one command) |
|
|
26
|
+
|
|
27
|
+
Evidence from real usage: sessions 24-25 ran back-to-back manual cycles in a single day (44 items, 95 points, across 65 files). Sessions 1-12 ran 12+ execplan/superplan cycles manually. The pattern is clear: **the most valuable PAN workflows involve repetition, and repetition is what should be automated**.
|
|
28
|
+
|
|
29
|
+
### Budget System Heritage (5 Generations)
|
|
30
|
+
|
|
31
|
+
The auto-runner's budget and category systems are not new inventions — they trace a clear lineage through PAN's evolution:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
execplan.md (v1, sessions 1-12)
|
|
35
|
+
├── Capacity Budget: XS=1, S=2, M=4, L=10, XL=20
|
|
36
|
+
├── 4 Modes: bugfix/balanced/features/full
|
|
37
|
+
├── 6-Stage Pipeline, 9 Behavioral Rules
|
|
38
|
+
└── Test cadence by tier: MICRO/STANDARD/FULL
|
|
39
|
+
│
|
|
40
|
+
↓
|
|
41
|
+
superplan.md (v1-v18, sessions 1-20)
|
|
42
|
+
├── Priority Framework: P0-P6
|
|
43
|
+
├── Effort Estimation: XS-XL
|
|
44
|
+
├── Reality Score: RS = (UV + TC + RR) / JS
|
|
45
|
+
└── Scan Assembly: items grouped by priority
|
|
46
|
+
│
|
|
47
|
+
↓
|
|
48
|
+
focus-scan/plan/exec (v1, session 17, ADR-0006)
|
|
49
|
+
├── Unified in focus.cjs module (559 LOC)
|
|
50
|
+
├── JSON batch files (.planning/focus/batch-*.json)
|
|
51
|
+
├── allocateBudget() with multi-pass algorithm
|
|
52
|
+
└── 73 tests in focus.test.cjs
|
|
53
|
+
│
|
|
54
|
+
↓
|
|
55
|
+
panmonty_protocol.md (parallel track, sessions 1+)
|
|
56
|
+
├── 5 Change Categories: DOCS_ONLY/TESTS_ONLY/LIB_CHANGE/HOOK_CHANGE/FULL_FEATURE
|
|
57
|
+
├── Loop Exhaustion Guard: 3rd Phase 7 entry → ask user
|
|
58
|
+
└── Quick Mode: auto-detect XS/S → skip full workflow
|
|
59
|
+
│
|
|
60
|
+
↓
|
|
61
|
+
focus-auto (THIS FEATURE)
|
|
62
|
+
├── Inherits: budget, 4 modes, 6-stage pipeline, 9 rules, tiers
|
|
63
|
+
├── Adapts: PanMonty categories → 5 purpose categories with priority-range mapping
|
|
64
|
+
├── Adapts: PanMonty loop exhaustion → circuit breaker + zero-completed stop
|
|
65
|
+
└── Creates: continuous loop, run state persistence, campaign-level tracking
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Every design choice in the auto-runner has heritage. None are novel risks.
|
|
69
|
+
|
|
70
|
+
### Competitive Landscape
|
|
71
|
+
|
|
72
|
+
8-tool competitive analysis (full research: `docs/specs/continuous_autonomous_execution_featureai.md`):
|
|
73
|
+
|
|
74
|
+
| Tool | Has Continuous Mode | Has Categories | Has Budget | Has Loop Control |
|
|
75
|
+
|------|-------------------|---------------|-----------|-----------------|
|
|
76
|
+
| Cursor | Background Agents (cloud) | None | Opaque credits | Run until done/fail |
|
|
77
|
+
| GitHub Copilot | Coding Agent (cloud) | Labels (implicit) | Per-issue | PR completion |
|
|
78
|
+
| Aider | --watch-files (event) | None | None | User bash loop |
|
|
79
|
+
| Cline | YOLO mode | None | Removed (v3.35) | None |
|
|
80
|
+
| Claude Code | Headless -p | None | --max-turns | Session end |
|
|
81
|
+
| Windsurf | Turbo Mode | None | Per-session | Debug loop |
|
|
82
|
+
| Devin | Compound agent | None | Per-task | Checkpoints |
|
|
83
|
+
| OpenAI Codex | Cloud sandbox | None | Per-task | Task completion |
|
|
84
|
+
|
|
85
|
+
**Whitespace**: No tool has categorized work queues, budget-aware continuous execution, priority-driven selection, structured progress persistence, OR cross-runtime continuous orchestration. PAN would be first on all five axes.
|
|
86
|
+
|
|
87
|
+
### Demand Evidence
|
|
88
|
+
|
|
89
|
+
| Evidence Type | Source | Finding |
|
|
90
|
+
|--------------|--------|---------|
|
|
91
|
+
| User-stated explicit request | This conversation | "design auto flow... with categories of what it scans for, like cleanups" |
|
|
92
|
+
| Internal usage (quantified) | Sessions 24-25 | 44 items, 95 pts, 2 back-to-back manual cycles |
|
|
93
|
+
| Internal usage (historical) | Sessions 1-20 | 12+ manual execplan/superplan invocations |
|
|
94
|
+
| Competitor convergence | Cursor, Copilot, Aider | All shipping continuous modes; becoming table-stakes |
|
|
95
|
+
| Architectural heritage | panmonty_protocol.md | 5 change categories + loop exhaustion guard already in production |
|
|
96
|
+
|
|
97
|
+
**Demand status**: STRONG — direct user request + 25 sessions of quantified manual cycling + competitive convergence + architectural heritage.
|
|
98
|
+
|
|
99
|
+
## Key Design Choices
|
|
100
|
+
|
|
101
|
+
### 1. Five Predefined Categories with Intelligent Defaults
|
|
102
|
+
|
|
103
|
+
Categories are **not user-configurable** — 5 predefined options cover 95% of real usage (validated across 25 sessions). Each category carries a default mapping chain that eliminates manual flag selection:
|
|
104
|
+
|
|
105
|
+
| Category | Priority Range | Default Mode | Default Budget | Heritage |
|
|
106
|
+
|----------|---------------|--------------|----------------|----------|
|
|
107
|
+
| `cleanup` | P3-P5 | balanced | 50 pts | PanMonty LIB_CHANGE |
|
|
108
|
+
| `tests` | P2-P5 | balanced | 50 pts | PanMonty TESTS_ONLY |
|
|
109
|
+
| `stability` | P0-P2 | bugfix | 40 pts | PanMonty LIB_CHANGE (critical) |
|
|
110
|
+
| `features` | P3-P5 | features | 50 pts | PanMonty FULL_FEATURE |
|
|
111
|
+
| `docs` | P5-P6 | balanced | 30 pts | PanMonty DOCS_ONLY |
|
|
112
|
+
|
|
113
|
+
Explicit flags override: `--category stability --mode full --budget 60` uses those values.
|
|
114
|
+
|
|
115
|
+
### 2. Category as Post-Filter (Not Separate Scan)
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
function categoryFilter(items, category) {
|
|
119
|
+
if (!category) return items;
|
|
120
|
+
const range = CATEGORY_PRIORITY_RANGE[category];
|
|
121
|
+
return items.filter(item => {
|
|
122
|
+
const idx = PRIORITY_LEVELS.indexOf(item.priority);
|
|
123
|
+
return idx >= range.min && idx <= range.max;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Reuses 100% of existing `collectWorkItems()` infrastructure. No per-category scanners. No duplication.
|
|
129
|
+
|
|
130
|
+
### 3. Five-Layer Safety Harness
|
|
131
|
+
|
|
132
|
+
| Layer | Mechanism | Default | Heritage |
|
|
133
|
+
|-------|-----------|---------|----------|
|
|
134
|
+
| Per-cycle budget | `--budget N` | 50 pts (category-dependent) | execplan.md capacity system |
|
|
135
|
+
| Cumulative budget | `--total-budget N` | 500 pts | Novel — no competitor has this |
|
|
136
|
+
| Iteration limit | `--max-cycles N` | 10 | Novel — prevents infinite loops |
|
|
137
|
+
| Regression circuit breaker | tests_after < tests_before | Immediate stop | PanMonty Phase 7 loop exhaustion |
|
|
138
|
+
| Zero-completed guard | Cycle produces 0 items done | Immediate stop | PanMonty loop exhaustion adaptation |
|
|
139
|
+
|
|
140
|
+
No competitor has more than 1 safety layer. Cline removed its only one.
|
|
141
|
+
|
|
142
|
+
### 4. Workflow-Orchestrated Loop with Core State Management
|
|
143
|
+
|
|
144
|
+
- **Core** (`focus.cjs`): `cmdFocusAuto()` manages run state (init, status, update, stop), `categoryFilter()` scopes items, `readAutoRun()` / `writeAutoRun()` handle persistence. Pure data operations. No AI, no git, no shell.
|
|
145
|
+
- **Workflow** (`focus-auto.md`): Orchestrates the scan→plan→exec loop. Reads code, runs tests, makes git commits, decides whether to continue. Has AI tool access.
|
|
146
|
+
|
|
147
|
+
This follows the established separation proven in ADR-0003 (smart execution) and ADR-0006 (focus commands).
|
|
148
|
+
|
|
149
|
+
### 5. Run State Persistence
|
|
150
|
+
|
|
151
|
+
`auto-run.json` in `.planning/focus/` tracks full campaign state with per-cycle history:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"run_id": "auto-2026-03-03-1",
|
|
156
|
+
"status": "in_progress",
|
|
157
|
+
"category": "cleanup",
|
|
158
|
+
"cycles": [{ "cycle": 1, "items_completed": 12, "points_used": 38, ... }],
|
|
159
|
+
"totals": { "cycles_completed": 1, "items_completed": 12, "points_used": 38 }
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Enables `--continue` for cross-session resumability. Co-located with existing `batch-*.json` files.
|
|
164
|
+
|
|
165
|
+
### 6. Per-Cycle Commits (Inherited)
|
|
166
|
+
|
|
167
|
+
Each cycle produces a self-contained commit via the existing focus-exec Stage 6. Failure in cycle N preserves cycles 1..N-1 as committed code. This is safer than a single final commit (proven across 25 sessions in execplan/focus-exec).
|
|
168
|
+
|
|
169
|
+
## Consequences
|
|
170
|
+
|
|
171
|
+
### Positive
|
|
172
|
+
- **15→1 invocations**: 5-cycle campaign drops from 15 manual commands to 1 (quantified: saves ~15 min human overhead per campaign)
|
|
173
|
+
- **First-in-industry**: Categorized work queues with purpose-driven campaigns. No competitor has this — 18+ month moat before replication (competitors would need scan→plan→exec infrastructure first)
|
|
174
|
+
- **5-layer safety**: Per-cycle budget + cumulative budget + max cycles + regression circuit breaker + zero-completed guard. Most comprehensive autonomous safety harness in AI coding tools
|
|
175
|
+
- **Heritage-validated**: Every component traces to proven systems (execplan budget, PanMonty categories, focus-exec pipeline). Zero novel risk
|
|
176
|
+
- **Cross-runtime**: Works across all 5 runtimes (Claude Code, OpenCode, Gemini CLI, Codex, Copilot CLI) via command .md
|
|
177
|
+
- **Resumable**: `--continue` restores full campaign state across sessions
|
|
178
|
+
- **Zero new modules**: Extends focus.cjs (4 functions: ~150 LOC) + constants.cjs (3 constants) + pan-tools.cjs (1 case). No new runtime dependencies. No installer changes
|
|
179
|
+
- **Cognitive load -1**: Eliminates 14 manual invocations per 5-cycle campaign. Category concept is already familiar from PanMonty. Net simplification for target users (those who run 2+ cycles)
|
|
180
|
+
|
|
181
|
+
### Negative
|
|
182
|
+
- **+1 command**: 41→42 commands (+2.4% growth). Mitigated: grouped under Focus, discovered via /pan:help
|
|
183
|
+
- **AI dependency**: Loop correctness depends on AI following workflow instructions. Mitigated: 9 behavioral rules are battle-tested across 6+ sessions; workflow .md is heavily structured
|
|
184
|
+
- **Single concurrent run**: One auto-run at a time per project. Mitigated: concurrent runs would cause git state conflicts; single run is the safe default
|
|
185
|
+
- **More git history**: Per-cycle commits produce N commits per campaign instead of 1. Mitigated: each commit is self-describing and individually reviewable; squash available via `git rebase`
|
|
186
|
+
- **5 fixed categories**: Can't add "security" or "performance" without code change. Mitigated: priority-range filtering covers any P0-P6 work; categories are convenience groupings, not hard gates
|
|
187
|
+
|
|
188
|
+
### Neutral
|
|
189
|
+
- Existing manual scan→plan→exec workflow unchanged and independently usable
|
|
190
|
+
- auto-run.json is a new file but in existing .planning/focus/ directory
|
|
191
|
+
- No new runtime dependencies, no new modules, no installer changes
|
|
192
|
+
- Config.json `auto` section is optional (v2 enhancement, not v0/v1)
|
|
193
|
+
|
|
194
|
+
## Options Considered
|
|
195
|
+
|
|
196
|
+
### 1. Shell Script Wrapper — User writes bash loop
|
|
197
|
+
User wraps `pan-tools focus scan && pan-tools focus plan && pan-tools focus exec` in a bash while-loop.
|
|
198
|
+
|
|
199
|
+
**Pro:** Zero implementation work.
|
|
200
|
+
**Con:** Not cross-platform (no PowerShell/CMD equivalent). No category system. No state persistence. No safety harness. No budget tracking. No resume. User must handle every edge case.
|
|
201
|
+
**Rejected** — violates cross-platform constraint, provides none of the category/budget value.
|
|
202
|
+
|
|
203
|
+
### 2. Core Module Loop — Put loop logic in focus.cjs
|
|
204
|
+
`focus.cjs` runs the scan→plan→exec loop internally.
|
|
205
|
+
|
|
206
|
+
**Pro:** Deterministic — no AI dependency for loop control.
|
|
207
|
+
**Con:** Core modules cannot invoke AI decisions (what to scan), git operations (commit), shell commands (npm test), or file edits (implementing fixes). Would require importing agents, which violates the core←→workflow separation (core returns data, workflows orchestrate). Would create circular dependencies.
|
|
208
|
+
**Rejected** — violates layer boundary architecture established in ADR-0003 and ADR-0006.
|
|
209
|
+
|
|
210
|
+
### 3. Background Daemon — Run as persistent service
|
|
211
|
+
Auto-runner runs as a background Node.js process, watching for file changes or operating on a schedule.
|
|
212
|
+
|
|
213
|
+
**Pro:** True unattended execution. Could run overnight without keeping AI session open.
|
|
214
|
+
**Con:** Zero-dependency constraint (no process management library). Cross-platform daemon complexity (Windows services vs. Unix daemons). PAN is session-bound by design — all 5 runtimes assume interactive session scope. Daemon would need its own logging, crash recovery, and process lifecycle management. Security implications of unattended code changes.
|
|
215
|
+
**Rejected** — violates zero-dep constraint, incompatible with session-bound architecture, massive implementation complexity for marginal value.
|
|
216
|
+
|
|
217
|
+
### 4. Workflow-Orchestrated Loop with Core State Management (CHOSEN)
|
|
218
|
+
Core manages run state persistence and category filtering. Workflow .md file orchestrates the scan→plan→exec loop with AI capabilities (reading code, making decisions, running tests, committing).
|
|
219
|
+
|
|
220
|
+
**Pro:** Clean separation matching established patterns. Core is testable (pure data operations). Workflow has full AI tool access. State persists across sessions via JSON. Extends existing focus.cjs (no new module).
|
|
221
|
+
**Con:** Depends on AI following workflow instructions correctly (mitigated: 9 behavioral rules, structured workflow .md).
|
|
222
|
+
**Chosen** — best of both worlds: structured state management + intelligent AI-driven execution.
|
|
223
|
+
|
|
224
|
+
### 5. Event-Driven File Watcher (Aider Model)
|
|
225
|
+
Watch filesystem for changes and trigger scan→plan→exec on file change events.
|
|
226
|
+
|
|
227
|
+
**Pro:** Reactive — runs when user saves files.
|
|
228
|
+
**Con:** PAN's value is in batch campaigns, not reactive fixes. File watching requires `fs.watch()` which has known cross-platform inconsistencies. Would trigger on AI-generated changes creating feedback loops. Doesn't fit the "run a cleanup campaign" mental model.
|
|
229
|
+
**Rejected** — wrong paradigm for PAN's batch-oriented architecture. PAN scans for *project-wide* patterns, not individual file changes.
|
|
230
|
+
|
|
231
|
+
### 6. Multi-Category Parallel Execution
|
|
232
|
+
Run cleanup AND tests AND stability campaigns simultaneously in separate git branches, merge at end.
|
|
233
|
+
|
|
234
|
+
**Pro:** Maximum throughput.
|
|
235
|
+
**Con:** Requires git worktree orchestration. Merge conflicts between concurrent campaigns likely (both touch overlapping files). Session-bound runtimes can't run multiple AI streams. Complexity explosion for marginal benefit — sequential campaigns cover the same ground safely.
|
|
236
|
+
**Rejected** — complexity disproportionate to value. Sequential single-category campaigns achieve the same outcome safely.
|
|
237
|
+
|
|
238
|
+
## What We Explicitly Did NOT Build (and Why)
|
|
239
|
+
|
|
240
|
+
| Rejected Feature | Reason |
|
|
241
|
+
|-----------------|--------|
|
|
242
|
+
| User-defined custom categories | 5 predefined covers 95% of real usage (25 sessions). Configuration adds cognitive load, testing surface, and documentation burden for 5% marginal coverage |
|
|
243
|
+
| Cloud/remote execution | PAN is local-first, zero-dep, session-bound. Cloud execution would require Docker, GitHub Actions, or equivalent — contradicts core constraints |
|
|
244
|
+
| Real-time file watching | Batch execution is PAN's paradigm. File watching creates feedback loops and doesn't match "run a campaign" mental model |
|
|
245
|
+
| Daemon/service mode | Zero-dep constraint. Cross-platform daemon complexity. PAN is session-bound by design |
|
|
246
|
+
| Multi-branch parallel campaigns | Git worktree orchestration, merge conflicts, single-session AI constraint |
|
|
247
|
+
| External task sources (Jira, GitHub Issues) | PAN reads .planning/ only. External integration is a separate feature with separate auth/API concerns |
|
|
248
|
+
| AI model selection per category | Model profile is a separate concern (handled by /pan:profile) |
|
|
249
|
+
| Safety-free mode (Cline YOLO) | User trust requires verification. Circuit breaker is a feature, not a constraint |
|
|
250
|
+
|
|
251
|
+
## Implementation Summary
|
|
252
|
+
|
|
253
|
+
| Task | Files | Effort | Priority |
|
|
254
|
+
|------|-------|--------|----------|
|
|
255
|
+
| Constants (FOCUS_CATEGORIES, etc.) | constants.cjs | XS (1 pt) | P0 |
|
|
256
|
+
| categoryFilter() function | focus.cjs | S (2 pts) | P0 |
|
|
257
|
+
| cmdFocusAuto() — init/status/stop/update | focus.cjs | M (4 pts) | P0 |
|
|
258
|
+
| Dispatcher routing (auto case) | pan-tools.cjs | XS (1 pt) | P0 |
|
|
259
|
+
| focus-auto.md command file | commands/pan/ | S (2 pts) | P1 |
|
|
260
|
+
| Unit tests (14+) | tests/focus.test.cjs | S (2 pts) | P1 |
|
|
261
|
+
| Integration tests (8+) | tests/focus-auto-integration.test.cjs | S (2 pts) | P2 |
|
|
262
|
+
| E2E tests (3+) | tests/focus-auto-e2e.test.cjs | M (4 pts) | P2 |
|
|
263
|
+
| Doc sync (README, CLI-REF, CHANGELOG) | docs/ | XS (1 pt) | P3 |
|
|
264
|
+
|
|
265
|
+
**Total: 9 tasks, 19 points, S-M effort, 25+ tests**
|
|
266
|
+
|
|
267
|
+
### Feature Ladder
|
|
268
|
+
|
|
269
|
+
| Version | Scope | Effort |
|
|
270
|
+
|---------|-------|--------|
|
|
271
|
+
| **v0 (MVP)** | cmdFocusAuto + categoryFilter + constants + dispatcher + command .md | M (4 pts) |
|
|
272
|
+
| **v1 (Complete)** | --continue + --dry-run + --total-budget + circuit breaker + zero-completed guard + campaign summary | M (4 pts) |
|
|
273
|
+
| **v2 (Enhanced)** | Config defaults + campaign history archiving + aggregate analytics + `--history` | L (10 pts) |
|
|
274
|
+
|
|
275
|
+
## Moat Assessment
|
|
276
|
+
|
|
277
|
+
| Moat Type | Score (0-5) | Rationale |
|
|
278
|
+
|-----------|-------------|-----------|
|
|
279
|
+
| Context Engineering | 5 | Categories reduce scan noise by 40-70% per campaign |
|
|
280
|
+
| Cross-Platform | 5 | 5-runtime continuous execution (only tool with this) |
|
|
281
|
+
| Developer Experience | 5 | 15→1 invocations for 5-cycle campaign |
|
|
282
|
+
| Zero Dependencies | 5 | Pure Node.js, file-based state, no daemon/cloud/Docker |
|
|
283
|
+
| State Persistence | 5 | auto-run.json + --continue + per-cycle batch files |
|
|
284
|
+
| Verification Quality | 5 | 5-layer safety (only tool with >1 safety layer) |
|
|
285
|
+
| Budget Heritage | 5 | 25 sessions of proven XS-XL point system |
|
|
286
|
+
| **Total** | **35/35** | **Strongest moat score in ADR history** |
|
|
287
|
+
|
|
288
|
+
## Links
|
|
289
|
+
|
|
290
|
+
- **Spec:** `docs/specs/focus_auto_runner_featureai.md`
|
|
291
|
+
- **Competitive research:** `docs/specs/continuous_autonomous_execution_featureai.md`
|
|
292
|
+
- **Extends:** ADR-0006 (Focus Commands — adds auto to the 5-command focus group)
|
|
293
|
+
- **Extends:** ADR-0003 (Smart Execution — inherits budget, tiers, behavioral rules)
|
|
294
|
+
- **Heritage:** execplan.md (capacity budget), superplan.md (scan/priority), panmonty_protocol.md (categories, loop exhaustion)
|
|
295
|
+
- **Modules:** focus.cjs, constants.cjs, pan-tools.cjs, core.cjs, utils.cjs
|
|
296
|
+
- **Competitive field:** Cursor Background Agents, GitHub Copilot Coding Agent, Aider --watch-files, Claude Code headless -p, Cline YOLO mode
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ADR-0016: Enhanced Documentation Sync (focus-sync v2)
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Accepted (shipped in v2.5.0 — 2026-03-07)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The current `focus sync` command checks only README.md for 3 count patterns (commands, agents, modules). An end-to-end documentation audit on 2026-03-04 revealed 20+ staleness issues across 8 files:
|
|
8
|
+
|
|
9
|
+
- Stale counts in DEVELOPMENT.md (test count 1277 vs actual 1314)
|
|
10
|
+
- Old command names from v1.0.0 rename in EXAMPLES.md (`resume-work`, `pause-work`, `complete-milestone`, `new-milestone`)
|
|
11
|
+
- Wrong Copilot CLI prefix in FAQ.md (`/pan:*` should be `/pan-*`)
|
|
12
|
+
- Missing `focus-auto` command in USER-GUIDE.md tables
|
|
13
|
+
- Placeholder URL in TROUBLESHOOTING.md
|
|
14
|
+
|
|
15
|
+
Every feature addition (e.g., focus-auto in v2.3.0) requires manual audit of 14+ files. This was demonstrably missed and is unsustainable.
|
|
16
|
+
|
|
17
|
+
## Decision
|
|
18
|
+
Enhance `checkDocStaleness()` in `focus.cjs` to:
|
|
19
|
+
|
|
20
|
+
1. **Scan all doc files** (README, ARCHITECTURE, DEVELOPMENT, CONTRIBUTING, USER-GUIDE, CLI-REFERENCE) for count patterns — not just README
|
|
21
|
+
2. **Detect old command names** using a `COMMAND_RENAME_MAP` constant in `constants.cjs` (17 entries from v1.0.0 rename)
|
|
22
|
+
3. **Check command table completeness** — parse markdown tables containing `/pan:` entries and verify all `.md` files in `commands/pan/` have entries
|
|
23
|
+
4. **Cross-reference version** — compare `package.json` version against CHANGELOG top entry
|
|
24
|
+
5. Return enriched output with new fields (`old_names`, `missing_commands`, `version_match`) alongside existing fields
|
|
25
|
+
|
|
26
|
+
Output contract is **additive** — existing `stale`, `current`, `actuals` fields preserved. No breaking changes.
|
|
27
|
+
|
|
28
|
+
## Consequences
|
|
29
|
+
|
|
30
|
+
### Positive
|
|
31
|
+
- Catches 90%+ of documentation staleness automatically
|
|
32
|
+
- Reduces manual audit from ~30 minutes to <1 minute
|
|
33
|
+
- Prevents stale docs from shipping when used in focus-auto loop
|
|
34
|
+
- Old command names detectable programmatically (was purely visual before)
|
|
35
|
+
|
|
36
|
+
### Negative
|
|
37
|
+
- More file reads per sync invocation (~12 files vs 1) — acceptable at <100ms total
|
|
38
|
+
- COMMAND_RENAME_MAP requires maintenance if future renames happen (unlikely after v1.0.0 stabilization)
|
|
39
|
+
|
|
40
|
+
### Neutral
|
|
41
|
+
- No changes to the focus-sync.md command file structure (it reads JSON output)
|
|
42
|
+
- No new modules or exports beyond the COMMAND_RENAME_MAP constant
|
|
43
|
+
- Test count checking uses stored count rather than live `npm test` execution
|
|
44
|
+
|
|
45
|
+
## Options Considered
|
|
46
|
+
|
|
47
|
+
1. **Status quo** — Keep checking only README. Rejected: misses 90% of staleness.
|
|
48
|
+
2. **Full AST-based doc parser** — Parse markdown AST for tables, headings. Rejected: over-engineering for regex-solvable patterns.
|
|
49
|
+
3. **Enhanced regex scanning (chosen)** — Extend existing pattern to more files and add targeted checks. Right balance of coverage and simplicity.
|
|
50
|
+
|
|
51
|
+
## Links
|
|
52
|
+
- Feature spec: `docs/specs/focus_sync_v2_featureai.md`
|
|
53
|
+
- Related: ADR-0006 (focus commands), ADR-0014 (internal cleanup)
|
|
54
|
+
- Audit findings: 20+ issues across Categories A-D in spec
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ADR-0017: Enhanced focus-design with Autonomous Investigation
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Accepted (shipped in v2.3.0 — 2026-03-03)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
PAN's `/pan:focus-design` is the most comprehensive AI feature specification workflow in the ecosystem (10 phases, 4 modes, strategic analysis, security modeling, ADR generation). However, competitive analysis reveals three critical gaps:
|
|
8
|
+
|
|
9
|
+
1. **No autonomous codebase investigation** before spec creation — Cline's `/deep-planning` leads here with silent grep/read before asking any questions, consistently called "game changer" by users
|
|
10
|
+
2. **No impact analysis** showing what existing modules are affected — no competitor does this either, representing an opportunity to lead
|
|
11
|
+
3. **Clarification questions are generic templates**, not grounded in discovered code patterns — Cline's informed questions (referencing actual found patterns) are the industry benchmark
|
|
12
|
+
|
|
13
|
+
Additionally, the older `/featureAI` command (730 lines in `.claude/commands/`) contains stale hardcoded counts (31 commands, 604 tests, 14 modules) and should be deprecated in favor of focus-design.
|
|
14
|
+
|
|
15
|
+
The competitive landscape in March 2026 includes:
|
|
16
|
+
- **Cline `/deep-planning`**: Best autonomous investigation, clean context separation
|
|
17
|
+
- **Windsurf megaplan**: Structured clarification questionnaire, persistent plan.md
|
|
18
|
+
- **Amazon Kiro**: Requirements → Design → Tasks three-phase spec with hooks
|
|
19
|
+
- **GitHub Spec-Kit**: Constitution + spec + plan + tasks (4x slower than iterative prompting per Scott Logic)
|
|
20
|
+
- **Cursor Rules**: Context injection, no spec workflow
|
|
21
|
+
- **Aider Architect**: Two-model separation, no persistent artifact
|
|
22
|
+
|
|
23
|
+
## Decision
|
|
24
|
+
Enhance the existing `commands/pan/focus-design.md` command file with 10 additive changes:
|
|
25
|
+
|
|
26
|
+
1. **Phase 0.8: Autonomous Codebase Investigation** — silent discovery + impact analysis before any design work
|
|
27
|
+
2. **Phase 0.2.5: Before/After State Specification** — explicit current→desired behavior mapping (from Copilot Workspace)
|
|
28
|
+
3. **Structured Acceptance Criteria** — table format with verification methods and pass conditions
|
|
29
|
+
4. **Remove all hardcoded counts** — use dynamic language throughout
|
|
30
|
+
5. **Scope Calibration Guidance** — auto-mode selection table for agents
|
|
31
|
+
6. **Dynamic Competitor Selection** — domain-aware research, not hardcoded 6 tools
|
|
32
|
+
7. **Phase 1.5: Informed Clarification** — questions MUST reference discovered code patterns
|
|
33
|
+
8. **MCP/context7 Tools** — add to allowed-tools frontmatter
|
|
34
|
+
9. **Updated Convention Checklist** — PAN-specific function names (readStateSafe, output, toPosix, etc.)
|
|
35
|
+
10. **Enhanced Report Summary** — investigation depth, competitive position, informed questions
|
|
36
|
+
|
|
37
|
+
This is a command .md file enhancement only — zero code changes needed.
|
|
38
|
+
|
|
39
|
+
## Consequences
|
|
40
|
+
|
|
41
|
+
### Positive
|
|
42
|
+
- Specs grounded in actual code patterns instead of generic templates
|
|
43
|
+
- Impact analysis prevents implementation surprises (blast radius known before design)
|
|
44
|
+
- Best-in-industry depth: investigation + strategic analysis + security + testing — no competitor combines all four
|
|
45
|
+
- Zero code changes needed — immediate deployment across all 5 runtimes
|
|
46
|
+
- Informed questions save user time (no generic "do you want tests?" — always want tests)
|
|
47
|
+
- Scope calibration prevents overkill for small features (Scott Logic's SDD critique addressed)
|
|
48
|
+
|
|
49
|
+
### Negative
|
|
50
|
+
- Command file grows from ~664 to ~800 lines (more complex for maintainers)
|
|
51
|
+
- Investigation phase adds ~20% more time to full-mode runs
|
|
52
|
+
- /featureAI users must update their muscle memory to focus-design
|
|
53
|
+
|
|
54
|
+
### Neutral
|
|
55
|
+
- Spec format remains markdown (no structural change to output artifacts)
|
|
56
|
+
- Existing specs produced by focus-design v1 remain valid
|
|
57
|
+
- All 4 modes (full/internal/outward/spike) remain — new phases follow mode skip rules
|
|
58
|
+
|
|
59
|
+
## Options Considered
|
|
60
|
+
1. **Keep focus-design as-is** — Rejected: competitive gap is real and widening (Cline, Kiro, Windsurf all advancing)
|
|
61
|
+
2. **Create a new command (/pan:focus-design-v2)** — Rejected: unnecessary command proliferation, cognitive load +1
|
|
62
|
+
3. **Enhance focus-design.md (chosen)** — Best: additive changes, zero breaking changes, immediate impact
|
|
63
|
+
4. **Build investigation into a separate agent** — Rejected: investigation must be inline to ground subsequent phases; separate agent loses context
|
|
64
|
+
|
|
65
|
+
## Links
|
|
66
|
+
- Spec: `docs/specs/focus_design_v2_featureai.md`
|
|
67
|
+
- Related commands: focus-design.md, featureAI.md (deprecated)
|
|
68
|
+
- Predecessor: ADR-0006 (Focus Commands), ADR-0015 (Focus Auto-Runner)
|
|
69
|
+
- Competitive analysis sources: Cline docs, Windsurf Wave 10, Kiro docs, Spec-Kit, Martin Fowler SDD analysis
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# ADR-0018: User Reality Testing System
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Accepted (shipped in v2.3.0 — 2026-03-03)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
PAN Wizard supports 5 AI coding tool runtimes (Claude Code, OpenCode, Gemini CLI, Codex, Copilot CLI) across 3 platforms (Windows, Mac, Linux). The existing test suite (1,314 tests, 42 files) validates individual core modules and CLI commands in isolation using `node:test` and temp directories.
|
|
8
|
+
|
|
9
|
+
However, real users experience PAN through multi-step workflows: install, init project, create phases, plan, execute, verify. The current tests don't replicate this. Specific gaps:
|
|
10
|
+
|
|
11
|
+
1. **Runtime install tests verify file structure but don't run commands** — 4 of 5 runtimes are structure-only
|
|
12
|
+
2. **No CI pipeline** — tests run only on developer's Windows machine; Mac/Linux coverage = 0
|
|
13
|
+
3. **Installer is script-only** — 2,636 LOC with no exported functions; internal logic untestable
|
|
14
|
+
4. **No multi-step workflow tests** — no test validates a sequence like install → init → plan → verify
|
|
15
|
+
5. **No structured diagnostics** — test failures require reading raw output to identify the broken runtime/platform
|
|
16
|
+
|
|
17
|
+
The user explicitly reported: "the testing done is not replicating user testing."
|
|
18
|
+
|
|
19
|
+
## Decision
|
|
20
|
+
|
|
21
|
+
Build a 4-component "User Reality Testing" system:
|
|
22
|
+
|
|
23
|
+
### Component 1: Scenario Runner
|
|
24
|
+
Extend `tests/helpers.cjs` with `createScenarioRunner(runtime)` that:
|
|
25
|
+
- Creates temp dir, installs PAN for specified runtime
|
|
26
|
+
- Provides `execute(steps)` function for multi-step workflow testing
|
|
27
|
+
- Returns structured diagnostics on failure (runtime, platform, step, error, fix hint)
|
|
28
|
+
|
|
29
|
+
### Component 2: Installer Function Extraction
|
|
30
|
+
Extract pure/testable functions from `bin/install.js` into `bin/install-lib.cjs`:
|
|
31
|
+
- `getDirName()`, `expandTilde()`, content converters, attribution processing, `parseJsonc()`
|
|
32
|
+
- `install.js` requires `install-lib.cjs` — behavior unchanged, functions now independently testable
|
|
33
|
+
|
|
34
|
+
### Component 3: Scenario Test Files
|
|
35
|
+
New `tests/scenarios/` directory with 7 test files:
|
|
36
|
+
- `runtime-matrix.test.cjs` — all 5 runtimes: install + basic commands
|
|
37
|
+
- `workflow-init.test.cjs`, `workflow-phases.test.cjs`, `workflow-focus.test.cjs` — multi-step flows
|
|
38
|
+
- `installer-functions.test.cjs` — direct tests of extracted functions
|
|
39
|
+
- `state-integrity.test.cjs`, `cross-platform-paths.test.cjs` — edge cases
|
|
40
|
+
|
|
41
|
+
### Component 4: CI Pipeline
|
|
42
|
+
`.github/workflows/ci.yml` with matrix: 3 OS x Node 18/20/22
|
|
43
|
+
|
|
44
|
+
### Separation of Test Tiers
|
|
45
|
+
- `npm test` — fast unit/integration tests only (existing 1,314 tests, <30s)
|
|
46
|
+
- `npm run test:scenarios` — slow scenario tests only (<60s)
|
|
47
|
+
- `npm run test:all` — everything (<90s)
|
|
48
|
+
|
|
49
|
+
## Consequences
|
|
50
|
+
|
|
51
|
+
### Positive
|
|
52
|
+
- All 5 runtimes tested on 3 platforms via CI — 15-cell coverage matrix
|
|
53
|
+
- Multi-step workflow bugs caught before users hit them
|
|
54
|
+
- Installer functions independently testable for the first time
|
|
55
|
+
- Structured diagnostics reduce bug investigation time
|
|
56
|
+
- Foundation for future: scenario recording, regression dashboards
|
|
57
|
+
|
|
58
|
+
### Negative
|
|
59
|
+
- Installer extraction has medium risk of introducing bugs (mitigated by running full E2E tests after)
|
|
60
|
+
- Scenario tests are slower than unit tests (~15s) — separated into own script
|
|
61
|
+
- CI matrix (9 cells) consumes GitHub Actions minutes
|
|
62
|
+
|
|
63
|
+
### Neutral
|
|
64
|
+
- Zero new runtime dependencies (uses only `node:test`, `node:assert`, `node:fs`, `node:child_process`)
|
|
65
|
+
- No changes to user-facing commands or output schemas
|
|
66
|
+
- Existing 1,314 tests completely unchanged
|
|
67
|
+
|
|
68
|
+
## Options Considered
|
|
69
|
+
|
|
70
|
+
1. **Do nothing** — Continue with unit tests only. Rejected: user explicitly reports the gap; cross-platform bugs will continue reaching users.
|
|
71
|
+
|
|
72
|
+
2. **Docker-based testing** — Run tests in containers per platform. Rejected: adds infrastructure dependency; GitHub Actions matrix covers platforms more simply.
|
|
73
|
+
|
|
74
|
+
3. **Mock-heavy approach** — Mock filesystem, shell, etc. Rejected: defeats the purpose of "reality testing"; mocks hide the bugs we're trying to find.
|
|
75
|
+
|
|
76
|
+
4. **Full installer rewrite as module (chosen: partial extraction)** — Rewrite all 2,636 LOC as a proper module with exports. Rejected: too risky for one change; partial extraction (just pure functions) gives 80% of the testing benefit with 20% of the risk.
|
|
77
|
+
|
|
78
|
+
5. **Scenario runner with structured diagnostics (CHOSEN)** — Extend existing patterns, extract testable installer functions, add CI pipeline.
|
|
79
|
+
|
|
80
|
+
## Links
|
|
81
|
+
- Spec: `docs/specs/user_reality_testing_system_featureai.md`
|
|
82
|
+
- Related: ADR-0015 (focus-auto-runner), ADR-0009 (production deployment checklist)
|
|
83
|
+
- Existing E2E: `tests/e2e-install.test.cjs`
|
|
84
|
+
- Installer: `bin/install.js`
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# ADR-0019: End-to-End User Acceptance Testing
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Accepted (shipped in v2.3.0 — 2026-03-03)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
ADR-0018 introduced the "User Reality Testing" system: a scenario runner (`createScenarioRunner`), installer function extraction (`install-lib.cjs`), 47 scenario tests, and a CI pipeline. These tests validate that `pan-tools.cjs` commands work when run from an installed location across all 5 runtimes.
|
|
8
|
+
|
|
9
|
+
However, a critical gap remains: **no test validates the host tool integration surface**. When a user installs PAN into a project folder and opens it in VS Code with Claude Code or Copilot CLI, the host tool consumes:
|
|
10
|
+
|
|
11
|
+
1. **`settings.json` / `config.json`** — Hook registration with runtime-specific key casing (PascalCase for Claude, camelCase for Copilot) and structure (nested vs flat)
|
|
12
|
+
2. **Command `.md` files** — Placed in runtime-specific directories (`.claude/commands/pan/`, `.github/skills/pan-*/SKILL.md`, etc.)
|
|
13
|
+
3. **Hook `.js` files** — Referenced by path in settings/config, must actually exist on disk
|
|
14
|
+
4. **Agent `.md` files** — Must have valid frontmatter (`name`, `description`) and XML structure tags (`<objective>`)
|
|
15
|
+
|
|
16
|
+
If any of these contracts break — a hook key gets the wrong casing, a command file is misplaced, a hook references a nonexistent file — the user experience silently fails. The host tool doesn't throw an error; it just doesn't discover the commands or fire the hooks.
|
|
17
|
+
|
|
18
|
+
The user explicitly identified this gap: "it works well from a system test but contain no end state user test, where the panwizard is installed into a folder opened up with VSCODE and is called via claude or copilot."
|
|
19
|
+
|
|
20
|
+
## Decision
|
|
21
|
+
|
|
22
|
+
Add 5 new scenario test files that validate the **host tool integration contract** — the file structures and schemas that Claude Code and Copilot CLI consume:
|
|
23
|
+
|
|
24
|
+
### Test File 1: `settings-schema.test.cjs`
|
|
25
|
+
Validates `settings.json` (Claude) and `config.json` (Copilot) after installation:
|
|
26
|
+
- JSON is parseable
|
|
27
|
+
- Hook event keys use correct casing per runtime
|
|
28
|
+
- Hook entries are arrays with correct internal structure
|
|
29
|
+
- `statusLine` key exists with `command` field
|
|
30
|
+
- No cross-contamination (no camelCase in Claude, no PascalCase in Copilot)
|
|
31
|
+
|
|
32
|
+
### Test File 2: `command-discovery.test.cjs`
|
|
33
|
+
Validates command files are placed where each runtime expects them:
|
|
34
|
+
- Claude: `.claude/commands/pan/*.md` with >= 30 files
|
|
35
|
+
- Copilot: `.github/skills/pan-*/SKILL.md` with >= 30 directories
|
|
36
|
+
- Codex: `.codex/skills/pan-*/SKILL.md` with >= 30 directories
|
|
37
|
+
- Critical commands exist by name (plan-phase, exec-phase, verify-phase, new-project, quick)
|
|
38
|
+
- No empty command files (size > 100 bytes)
|
|
39
|
+
|
|
40
|
+
### Test File 3: `hook-registration.test.cjs`
|
|
41
|
+
Validates hook entries reference real files:
|
|
42
|
+
- Each hook command path resolves to an existing `.js` file on disk
|
|
43
|
+
- 3 expected hooks present: `pan-check-update.js`, `pan-context-monitor.js`, `pan-statusline.js`
|
|
44
|
+
- Hook files are non-empty (> 100 bytes, not stub files)
|
|
45
|
+
- No duplicate hook entries (installer deduplication worked)
|
|
46
|
+
|
|
47
|
+
### Test File 4: `agent-structure.test.cjs`
|
|
48
|
+
Validates agent `.md` files have valid structure:
|
|
49
|
+
- Agent count >= 10
|
|
50
|
+
- Each agent has `name` in frontmatter
|
|
51
|
+
- Each agent body contains `<objective>` XML tag
|
|
52
|
+
- No empty agent files
|
|
53
|
+
|
|
54
|
+
### Test File 5: `user-workflow-e2e.test.cjs`
|
|
55
|
+
Validates a realistic 10-step user workflow produces coherent state:
|
|
56
|
+
1. Install (via createScenarioRunner)
|
|
57
|
+
2. Setup .planning/ structure
|
|
58
|
+
3. config-ensure-section
|
|
59
|
+
4. phase add (first)
|
|
60
|
+
5. phase add (second)
|
|
61
|
+
6. phases list (shows both)
|
|
62
|
+
7. state add-decision
|
|
63
|
+
8. state-snapshot (reflects all changes)
|
|
64
|
+
9. validate health (passes)
|
|
65
|
+
10. generate-slug (utility works in context)
|
|
66
|
+
|
|
67
|
+
### What This Does NOT Test
|
|
68
|
+
- LLM responses (non-deterministic)
|
|
69
|
+
- VS Code extension behavior (third-party code)
|
|
70
|
+
- Actual hook execution (requires real event triggers from host tool)
|
|
71
|
+
- Interactive readline prompts (requires stdin mocking)
|
|
72
|
+
- Full `/pan:new-project` interactive flow (requires LLM)
|
|
73
|
+
|
|
74
|
+
## Consequences
|
|
75
|
+
|
|
76
|
+
### Positive
|
|
77
|
+
- Host tool integration surface validated for Claude and Copilot — catches silent failures before release
|
|
78
|
+
- Command discoverability tested for 3 runtimes — prevents "command not found" bugs
|
|
79
|
+
- Hook registration integrity verified — catches reference-to-nonexistent-file bugs
|
|
80
|
+
- Agent structure validated — catches broken agent files early
|
|
81
|
+
- Full user workflow coherence tested — catches state corruption across operations
|
|
82
|
+
- ~50 new tests, additive only — no existing tests modified
|
|
83
|
+
- Zero runtime dependencies — uses only `node:test`, `node:assert`, `node:fs`, `node:path`
|
|
84
|
+
|
|
85
|
+
### Negative
|
|
86
|
+
- Tests document assumed host tool schemas (settings.json, config.json) which may change in future host tool releases
|
|
87
|
+
- Agent validation is structural only (frontmatter + XML tags) — doesn't validate prompt quality
|
|
88
|
+
- Workflow e2e is a subset of the full user journey (no LLM interaction, no interactive Q&A)
|
|
89
|
+
|
|
90
|
+
### Neutral
|
|
91
|
+
- No changes to installer, core modules, or user-facing commands
|
|
92
|
+
- Existing 1,466 tests completely unchanged
|
|
93
|
+
- `npm run test:scenarios` glob automatically picks up new files
|
|
94
|
+
- CI pipeline (from ADR-0018) automatically runs new tests
|
|
95
|
+
|
|
96
|
+
## Options Considered
|
|
97
|
+
|
|
98
|
+
1. **Start actual Claude Code / Copilot process and invoke commands** — Rejected: requires full IDE installation, non-deterministic, not automatable in CI, massively complex setup.
|
|
99
|
+
|
|
100
|
+
2. **Mock the host tool's config loading** — Rejected: we'd be testing our mock, not the real integration. The point is to validate real files.
|
|
101
|
+
|
|
102
|
+
3. **JSON Schema validation with a library** — Rejected: adds runtime dependency. Manual key checking is sufficient and self-documenting.
|
|
103
|
+
|
|
104
|
+
4. **Validate file contracts by reading installed directory structure (CHOSEN)** — Validate the files that host tools consume: settings/config JSON, command placement, hook references, agent structure. This is deterministic, automatable, zero-dep, and catches the exact class of bugs users report.
|
|
105
|
+
|
|
106
|
+
5. **Golden file comparison** — Partially deferred to v2: compare installed files against known-good snapshots. Good for detecting unexpected changes but brittle across versions.
|
|
107
|
+
|
|
108
|
+
## Links
|
|
109
|
+
- Spec: `docs/specs/end_to_end_user_acceptance_testing_featureai.md`
|
|
110
|
+
- Predecessor: ADR-0018 (User Reality Testing — scenario runner, installer extraction, CI)
|
|
111
|
+
- Related: ADR-0009 (production deployment checklist)
|
|
112
|
+
- Installer: `bin/install.js` (settings.json/config.json generation at lines 1520-1669)
|
|
113
|
+
- Scenario runner: `tests/helpers.cjs` (createScenarioRunner at lines 59-108)
|