mindforge-cc 8.1.1 → 8.2.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/.mindforge/celestial.db +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/CLAUDE.md +102 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/commands.cjs +959 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/config.cjs +421 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/core.cjs +1166 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/frontmatter.cjs +307 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/init.cjs +1336 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/milestone.cjs +252 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/model-profiles.cjs +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/phase.cjs +888 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/profile-output.cjs +952 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/profile-pipeline.cjs +539 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/roadmap.cjs +329 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/security.cjs +356 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/state.cjs +969 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/template.cjs +222 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/uat.cjs +189 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/verify.cjs +851 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/lib/workstream.cjs +491 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/bin/mindforge-tools.cjs +897 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/file-manifest.json +219 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/forge/help.md +11 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/forge/init-project.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/forge/plan-phase.md +34 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/hooks/mindforge-check-update.js +114 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/hooks/mindforge-context-monitor.js +156 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/hooks/mindforge-prompt-guard.js +96 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/hooks/mindforge-session-init_extended.js +42 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/hooks/mindforge-statusline.js +119 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/hooks/mindforge-workflow-guard.js +94 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/add-backlog.md +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/agent.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/approve.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/audit.md +34 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/auto.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/benchmark.md +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/browse.md +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/complete-milestone.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/costs.md +15 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/cross-review.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/dashboard.md +102 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/debug.md +133 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/discuss-phase.md +142 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/do.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/execute-phase.md +200 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/health.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/help.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/init-org.md +135 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/init-project.md +170 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/install-skill.md +28 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/learn.md +147 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/learning.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/map-codebase.md +302 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/marketplace.md +124 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/metrics.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/migrate.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/milestone.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/new-runtime.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/next.md +109 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/note.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/plan-phase.md +131 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/plant-seed.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/plugins.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/pr-review.md +45 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/profile-team.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/publish-skill.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/qa.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/quick.md +139 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/record-learning.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/release.md +14 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/remember.md +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/research.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/retrospective.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/review-backlog.md +34 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/review.md +161 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/security-scan.md +242 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/session-report.md +39 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/ship.md +111 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/skills.md +145 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/status.md +113 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/steer.md +17 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/sync-confluence.md +15 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/sync-jira.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/tokens.md +12 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/ui-phase.md +34 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/ui-review.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/update.md +46 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/validate-phase.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/verify-phase.md +66 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/workspace.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/mindforge/workstreams.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/settings.json +42 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-add-backlog/SKILL.md +72 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-add-phase/SKILL.md +39 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-add-tests/SKILL.md +28 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-add-todo/SKILL.md +42 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-audit-milestone/SKILL.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-audit-uat/SKILL.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-autonomous/SKILL.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/SKILL.md +164 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/scripts/frame-template.html +214 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/scripts/helper.js +88 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/scripts/server.cjs +354 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/scripts/start-server.sh +148 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/scripts/stop-server.sh +56 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-brainstorming/visual-companion.md +287 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-check-todos/SKILL.md +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-cleanup/SKILL.md +19 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-complete-milestone/SKILL.md +131 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug/SKILL.md +163 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/CREATION-LOG.md +119 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/SKILL.md +296 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/condition-based-waiting-example.ts +158 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/condition-based-waiting.md +115 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/defense-in-depth.md +122 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/find-polluter.sh +63 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/root-cause-tracing.md +169 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/test-academic.md +14 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/test-pressure-1.md +58 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/test-pressure-2.md +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-debug_extended/test-pressure-3.md +69 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-discuss-phase/SKILL.md +54 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-do/SKILL.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-execute-phase/SKILL.md +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-execute-phase_extended/SKILL.md +70 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-fast/SKILL.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-forensics/SKILL.md +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-health/SKILL.md +17 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-help/SKILL.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-insert-phase/SKILL.md +28 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-join-discord/SKILL.md +19 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-list-phase-assumptions/SKILL.md +41 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-list-workspaces/SKILL.md +17 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-manager/SKILL.md +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-map-codebase/SKILL.md +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-milestone-summary/SKILL.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-neural-orchestrator/SKILL.md +115 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-neural-orchestrator/references/codex-tools.md +100 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-neural-orchestrator/references/gemini-tools.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-new-milestone/SKILL.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-new-project/SKILL.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-new-workspace/SKILL.md +39 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-next/SKILL.md +19 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-note/SKILL.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-parallel-mesh_extended/SKILL.md +182 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-pause-work/SKILL.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-plan-milestone-gaps/SKILL.md +28 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-plan-phase/SKILL.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-plan-phase_extended/SKILL.md +152 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-plan-phase_extended/plan-document-reviewer-prompt.md +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-plant-seed/SKILL.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-pr-branch/SKILL.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-profile-user/SKILL.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-progress/SKILL.md +19 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-quick/SKILL.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-reapply-patches/SKILL.md +124 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-remove-phase/SKILL.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-remove-workspace/SKILL.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-research-phase/SKILL.md +186 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-resume-work/SKILL.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-review/SKILL.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-review-backlog/SKILL.md +58 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-review-inbound/SKILL.md +213 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-review-request/SKILL.md +105 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-review-request/code-reviewer.md +146 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-session-report/SKILL.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-set-profile/SKILL.md +9 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-settings/SKILL.md +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-ship/SKILL.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-ship_extended/SKILL.md +200 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/SKILL.md +655 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/anthropic-best-practices.md +1150 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/examples/CLAUDE_MD_TESTING.md +189 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/graphviz-conventions.dot +172 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/persuasion-principles.md +187 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/render-graphs.js +168 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-skill-creation/testing-skills-with-subagents.md +384 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-stats/SKILL.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-swarm-execution/SKILL.md +277 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-swarm-execution/code-quality-reviewer-prompt.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-swarm-execution/implementer-prompt.md +113 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-swarm-execution/spec-reviewer-prompt.md +61 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-system-architecture/SKILL.md +136 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-system-architecture/examples.md +120 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-system-architecture/scaling-checklist.md +76 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd/SKILL.md +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd/deep-modules.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd/interface-design.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd/mocking.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd/refactoring.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd/tests.md +28 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd_extended/SKILL.md +371 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-tdd_extended/testing-anti-patterns.md +299 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-thread/SKILL.md +123 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-ui-phase/SKILL.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-ui-review/SKILL.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-update/SKILL.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-validate-phase/SKILL.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-verify-work/SKILL.md +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-verify-work_extended/SKILL.md +139 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-workspace-isolated/SKILL.md +218 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/skills/mindforge-workstreams/SKILL.md +65 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/forge:help.md +10 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/forge:init-project.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/forge:plan-phase.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-add-phase.md +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-add-tests.md +351 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-add-todo.md +158 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-audit-milestone.md +332 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-audit-uat.md +109 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-autonomous.md +815 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-check-todos.md +177 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-cleanup.md +152 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-complete-milestone.md +766 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-diagnose-issues.md +220 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-discovery-phase.md +289 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-discuss-phase-assumptions.md +645 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-discuss-phase.md +1047 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-do.md +104 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-execute-phase.md +838 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-execute-plan.md +509 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-fast.md +105 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-forensics.md +265 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-health.md +181 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-help.md +606 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-insert-phase.md +130 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-list-phase-assumptions.md +178 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-list-workspaces.md +56 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-manager.md +360 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-map-codebase.md +370 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-milestone-summary.md +223 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-new-milestone.md +469 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-new-project.md +1226 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-new-workspace.md +237 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-next.md +97 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-node-repair.md +92 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-note.md +156 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-pause-work.md +176 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-plan-milestone-gaps.md +273 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-plan-phase.md +877 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-plant-seed.md +169 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-pr-branch.md +129 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-profile-user.md +450 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-progress.md +507 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-quick.md +732 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-remove-phase.md +155 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-remove-workspace.md +90 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-research-phase.md +74 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-resume-project.md +325 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-review.md +228 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-session-report.md +146 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-settings.md +283 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-ship.md +228 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-stats.md +60 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-transition.md +671 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-ui-phase.md +290 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-ui-review.md +157 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-update.md +323 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-validate-phase.md +167 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-verify-phase.md +254 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge-verify-work.md +628 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:add-backlog.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:agent.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:approve.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:architecture.md +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:audit.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:auto.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:benchmark.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:brainstorming.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:browse.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:complete-milestone.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:costs.md +14 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:cross-review.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:dashboard.md +101 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:debug.md +131 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:discuss-phase.md +141 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:do.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:execute-phase.md +205 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:executor.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:health.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:help.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:identity.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:init-org.md +134 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:init-project.md +185 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:install-skill.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:learn.md +146 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:map-codebase.md +301 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:marketplace.md +123 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:memory.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:metrics.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:migrate.md +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:milestone.md +15 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:new-runtime.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:next.md +108 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:note.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:plan-phase.md +139 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:planner.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:plant-seed.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:plugins.md +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:pr-review.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:profile-team.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:publish-skill.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:qa.md +19 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:quick.md +138 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:release.md +13 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:remember.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:research.md +15 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:researcher.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:retrospective.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:review-backlog.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:review.md +160 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:reviewer.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:security-scan.md +236 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:session-report.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:ship.md +108 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:skills.md +144 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:soul.md +54 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:status.md +107 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:steer.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:sync-confluence.md +14 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:sync-jira.md +15 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:tdd.md +46 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:tokens.md +11 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:tool.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:ui-phase.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:ui-review.md +28 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:update.md +45 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:validate-phase.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:verify-phase.md +65 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:workspace.md +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/mindforge:workstreams.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.agent/workflows/publish-release.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.czrc +3 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/pull_request_template.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/ai-intelligence.yml +55 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/auto-pr.yml +80 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/control-plane.yml +79 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/execution-plane.yml +52 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/mindforge-ai-review.yml +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/mindforge-autonomous.yml +70 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/mindforge-ci.yml +224 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/mindforge-observability.yml +71 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/mindforge-release.yml +55 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/observability-plane.yml +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.github/workflows/release-plane.yml +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.gitlab-ci-mindforge.yml +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.husky/pre-commit +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/MINDFORGE-SCHEMA.json +165 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/MINDFORGE-V2-SCHEMA.json +47 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/audit/AUDIT-SCHEMA.md +470 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/browser/daemon-protocol.md +24 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/browser/qa-engine.md +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/browser/session-manager.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/browser/visual-verify-spec.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/bypasses.json +8 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/ci/ci-config-schema.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/ci/ci-mode.md +179 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/ci/github-actions-adapter.md +224 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/ci/gitlab-ci-adapter.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/ci/jenkins-adapter.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/config.json +66 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/dashboard/api-reference.md +122 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/dashboard/dashboard-spec.md +96 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/distribution/marketplace.md +53 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/distribution/registry-client.md +166 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/distribution/registry-schema.md +96 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/distribution/skill-publisher.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/distribution/skill-validator.md +74 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/ads-protocol.md +54 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/autonomous/auto-executor.md +266 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/autonomous/headless-adapter.md +66 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/autonomous/node-repair.md +190 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/autonomous/progress-reporter.md +58 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/autonomous/steering-manager.md +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/autonomous/stuck-detector.md +89 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/compaction-protocol.md +167 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/context-injector.md +154 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/dependency-parser.md +113 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/integrity.json +12 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/knowledge-graph-protocol.md +125 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/nexus-tracer.js +11 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/persona-factory.md +45 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/shard-controller.md +53 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/skills/conflict-resolver.md +69 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/skills/loader.md +184 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/skills/registry.md +98 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/skills/versioning.md +75 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/swarm-controller.md +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/temporal-protocol.md +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/verification-pipeline.md +111 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/engine/wave-executor.md +285 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/governance/GOVERNANCE-CONFIG.md +17 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/governance/approval-workflow.md +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/governance/change-classifier.md +63 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/governance/compliance-gates.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/governance/policies/sovereign-default.json +16 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/integrations/confluence.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/integrations/connection-manager.md +163 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/integrations/github.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/integrations/gitlab.md +13 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/integrations/jira.md +102 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/integrations/slack.md +41 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/intelligence/antipattern-detector.md +75 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/intelligence/difficulty-scorer.md +55 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/intelligence/health-engine.md +208 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/intelligence/skill-gap-analyser.md +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/intelligence/smart-compaction.md +71 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/memory/MEMORY-SCHEMA.md +155 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/memory/engine/capture-protocol.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/memory/engine/global-sync-spec.md +42 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/memory/engine/retrieval-spec.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/metrics/METRICS-SCHEMA.md +42 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/metrics/quality-tracker.md +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/models/model-registry.md +48 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/models/model-router.md +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/monorepo/cross-package-planner.md +114 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/monorepo/dependency-graph-builder.md +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/monorepo/workspace-detector.md +129 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/org/CONVENTIONS.md +62 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/org/ORG.md +51 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/org/SECURITY.md +50 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/org/TOOLS.md +53 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/org/integrations/INTEGRATIONS-CONFIG.md +58 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/org/skills/MANIFEST.md +15 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/advisor-researcher.md +89 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/analyst.md +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/architect.md +108 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/assumptions-analyzer-extend.md +87 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/assumptions-analyzer.md +109 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/codebase-mapper-extend.md +93 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/codebase-mapper.md +770 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/coverage-specialist.md +104 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/debug-specialist.md +118 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/debugger.md +97 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/decision-architect.md +102 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/developer.md +97 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/executor.md +88 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/integration-checker.md +92 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/mf-executor.md +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/mf-memory.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/mf-planner.md +45 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/mf-researcher.md +39 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/mf-reviewer.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/mf-tool.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/nyquist-auditor.md +84 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/overrides/README.md +85 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/phase-researcher.md +107 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/plan-checker.md +92 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/planner.md +105 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/project-researcher.md +99 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/qa-engineer.md +113 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/release-manager.md +114 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/research-agent.md +109 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/research-synthesizer.md +101 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/roadmapper-extend.md +100 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/roadmapper.md +103 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/security-reviewer.md +114 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/swarm-templates.json +118 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/tech-writer.md +118 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/ui-auditor.md +94 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/ui-checker.md +89 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/ui-researcher.md +99 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/user-profiler.md +93 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/personas/verifier.md +101 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/plugins/PLUGINS-MANIFEST.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/plugins/plugin-loader.md +93 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/plugins/plugin-registry.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/plugins/plugin-schema.md +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/pr-review/ai-reviewer.md +266 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/pr-review/finding-formatter.md +46 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/pr-review/review-prompt-templates.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/production/compatibility-layer.md +39 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/production/migration-engine.md +52 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/production/production-checklist.md +76 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/production/token-optimiser.md +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/remediation-queue.json +47 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/accessibility/SKILL.md +106 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/api-design/SKILL.md +98 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/code-quality/SKILL.md +88 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/data-privacy/SKILL.md +126 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/database-patterns/SKILL.md +192 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/documentation/SKILL.md +91 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/incident-response/SKILL.md +180 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/performance/SKILL.md +120 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/security-review/SKILL.md +83 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills/testing-standards/SKILL.md +97 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills-builder/auto-capture-protocol.md +88 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills-builder/learn-protocol.md +161 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/skills-builder/quality-scoring.md +120 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/team/TEAM-PROFILE.md +42 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/team/multi-handoff.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/team/profiles/README.md +13 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.mindforge/team/session-merger.md +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/ARCHITECTURE.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/AUDIT.jsonl +45 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/HANDOFF.json +8 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/PROJECT.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/RELEASE-CHECKLIST.md +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/REQUIREMENTS.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/ROADMAP.md +12 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/ROI.jsonl +2 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/STATE.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/approvals/.gitkeep +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/.gitkeep +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/org/CONVENTIONS.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/org/ORG.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/org/SECURITY.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/org/TOOLS.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/analyst.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/architect.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/debug-specialist.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/developer.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/qa-engineer.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/release-manager.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/security-reviewer.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/personas/tech-writer.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/skills/api-design/SKILL.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/skills/code-quality/SKILL.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/skills/documentation/SKILL.md +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/skills/security-review/SKILL.md +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/.forge/skills/testing-standards/SKILL.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/ARCHITECTURE-AUDIT-REPORT.md +90 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/LOGS-BENCHMARKING.md +172 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/ROADMAP_V8.md +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/github-actions-logs.md +88 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-1-imp/DAY1-HARDEN.md +823 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-1-imp/DAY1-IMPLEMENT.md +2459 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-1-imp/DAY1-REVIEW.md +288 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-2-imp/DAY2-HARDEN.md +954 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-2-imp/DAY2-IMPLEMENT.md +2347 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-2-imp/DAY2-REVIEW.md +422 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-3-imp/DAY3-HARDEN.md +870 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-3-imp/DAY3-IMPLEMENT.md +2798 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-3-imp/DAY3-REVIEW.md +484 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-4-imp/DAY4-HARDEN.md +1087 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-4-imp/DAY4-IMPLEMENT.md +2874 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-4-imp/DAY4-REVIEW.md +386 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-5-imp/DAY5-HARDEN.md +1078 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-5-imp/DAY5-IMPLEMENT.md +3151 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-5-imp/DAY5-REVIEW.md +345 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-6-imp/DAY6-COMPLETE.md +3919 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-7-imp-prod/DAY7-PRODUCTION-FINAL.md +4513 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/ci-actions/github-workflows-v2.md +421 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/ci-actions/v2-ci-actions.md +292 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-10-imp/DAY10-MULTI-MODEL.md +3402 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-11-imp/DAY11-PERSISTENT-MEMORY.md +3237 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-12-imp/DAY12-REALTIME-DASHBOARD.md +3301 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-13-imp/DAY13-SELF-BUILDING-SKILLS.md +3798 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-14-prod-v2/DAY14-V2-PRODUCTION-RELEASE.md +2255 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-8-imp/DAY8-AUTONOMOUS-ENGINE.md +3400 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-9-imp/DAY9-BROWSER-RUNTIME.md +3293 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/audit-archive/.gitkeep +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/decisions/.gitkeep +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/jira-sync.json +5 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/milestones/.gitkeep +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/phases/.gitkeep +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/research/.gitkeep +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/screenshots/.gitkeep +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/.planning/slack-threads.json +3 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/AGENTS_LEARNING.md +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/CHANGELOG.md +1116 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/LICENSE +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/MINDFORGE.md +91 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/README.md +424 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/RELEASENOTES.md +199 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/REPLICATION.json +12 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/SECURITY.md +4 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/SOUL.md +52 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/agents/executor/IDENTITY.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/agents/memory/IDENTITY.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/agents/planner/IDENTITY.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/agents/researcher/IDENTITY.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/agents/reviewer/IDENTITY.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/agents/tool/IDENTITY.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/auto-pr.yml +74 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/auto-runner.js +378 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/context-refactorer.js +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/headless.js +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/intent-harvester.js +80 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/mesh-self-healer.js +67 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/progress-stream.js +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/repair-operator.js +213 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/steer.js +89 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/autonomous/stuck-monitor.js +120 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/browser-daemon.js +139 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/daemon-manager.js +91 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/qa-engine.js +47 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/qa-report-writer.js +32 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/regression-writer.js +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/screenshot-store.js +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/session-manager.js +93 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/browser/visual-verify-executor.js +89 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/change-classifier.js +86 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/api-router.js +198 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/approval-handler.js +134 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/frontend/index.html +751 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/metrics-aggregator.js +296 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/revops-api.js +47 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/server.js +138 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/sse-bridge.js +178 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/team-tracker.js +0 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/dashboard/temporal-api.js +82 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/context-entropy-guard.js +94 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/feedback-loop.js +106 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/handover-manager.js +71 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/intelligence-interlock.js +39 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/learning-manager.js +181 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/logic-drift-detector.js +100 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/logic-validator.js +74 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/mesh-syncer.js +129 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/nexus-tracer.js +356 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/orbital-guardian.js +84 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/reason-source-aligner.js +111 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/remediation-engine.js +81 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/self-corrective-synthesizer.js +65 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/skill-evolver.js +105 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/sre-manager.js +117 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/temporal-cli.js +52 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/temporal-hindsight.js +115 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/temporal-hub.js +138 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/test-ceg.js +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/test-interlock.js +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/test-remediation.js +61 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/test-rsa.js +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/test-scs.js +57 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/engine/test-v7-blueprint.js +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/gov-audit.js +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/approve.js +60 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/config-manager.js +85 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/impact-analyzer.js +141 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/policies/critical-data.json +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/policies/default-policies.jsonl +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/policy-engine.js +210 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/policy-gate-hardened.js +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/quantum-crypto.js +111 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/rbac-manager.js +109 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/test-config.js +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/test-crypto-pluggable.js +50 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/test-hardened-gate.js +71 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/trust-verifier.js +81 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/ztai-archiver.js +104 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/governance/ztai-manager.js +239 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/hindsight-injector.js +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/install.js +129 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/installer-core.js +805 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/auto-shadow.js +274 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/cli.js +99 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/eis-client.js +95 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/embedding-engine.js +326 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/federated-sync.js +293 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/ghost-pattern-detector.js +69 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/global-sync.js +107 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/identity-synthesizer.js +146 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/knowledge-capture.js +442 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/knowledge-graph.js +609 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/knowledge-indexer.js +172 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/knowledge-store.js +337 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/pillar-health-tracker.js +63 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/semantic-hub.js +211 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/session-memory-loader.js +137 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/memory/vector-hub.js +170 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/0.1.0-to-0.5.0.js +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/0.5.0-to-0.6.0.js +17 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/0.6.0-to-1.0.0.js +100 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/1.0.0-to-2.0.0.js +115 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/migrate.js +155 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/schema-versions.js +76 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/migrations/v8-sqlite-migration.js +85 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/mindforge-cc.sh +5 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/mindforge-cli.js +180 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/anthropic-provider.js +77 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/cloud-broker.js +161 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/cost-tracker.js +118 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/finops-hub.js +79 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/gemini-provider.js +79 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/model-broker.js +129 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/model-client.js +98 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/model-router.js +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/openai-provider.js +78 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/models/performance-stats.json +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/research/research-engine.js +115 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/review/ads-engine.js +126 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/review/ads-synthesizer.js +117 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/review/cross-review-engine.js +92 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/review/finding-synthesizer.js +116 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/review/review-report-writer.js +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/revops/debt-monitor.js +60 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/revops/market-evaluator.js +73 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/revops/remediation-queue.js +107 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/revops/roi-engine.js +65 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/revops/router-steering-v2.js +73 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/revops/velocity-forecaster.js +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/shard-helper.js +134 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skill-registry.js +232 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skill-validator.js +211 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/learn-cli.js +57 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/marketplace-cli.js +54 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/marketplace-client.js +198 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/pattern-detector.js +144 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/skill-generator.js +258 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/skill-registrar.js +107 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/skill-scorer.js +263 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/skills-builder/source-loader.js +268 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/spawn-agent.js +61 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/updater/changelog-fetcher.js +62 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/updater/self-update.js +169 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/updater/version-comparator.js +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/validate-config.js +92 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/wizard/config-generator.js +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/wizard/environment-detector.js +83 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/wizard/setup-wizard.js +240 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/bin/wizard/theme.js +184 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/CAPABILITIES-MANIFEST.md +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Context/Master-Context.md +694 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/INTELLIGENCE-MESH.md +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/MIND-FORGE-REFERENCE-V6.md +96 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/PERSONAS.md +920 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/audit-events.md +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/checkpoints.md +778 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/commands.md +107 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/config-reference.md +81 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/continuation-format.md +249 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/decimal-phase-calculation.md +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/git-integration.md +295 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/git-planning-commit.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/model-profile-resolution.md +36 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/model-profiles.md +139 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/phase-argument-parsing.md +61 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/planning-config.md +202 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/questioning.md +162 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/sdk-api.md +53 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/skills-api.md +57 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/tdd.md +263 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/ui-brand.md +160 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/user-profiling.md +681 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/verification-patterns.md +612 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/References/workstream-flag.md +58 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Agents/CLAUDE-MD.md +122 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Agents/COPILOT-INSTRUCTIONS.md +7 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Agents/DEBUGGER-PROMPT.md +91 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Agents/PLANNER-PROMPT.md +117 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/architecture.md +255 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/concerns.md +310 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/conventions.md +307 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/integrations.md +280 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/stack.md +186 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/structure.md +285 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Codebase/testing.md +480 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/CONTINUE-HERE.md +78 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/DISCUSSION-LOG.md +63 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/PHASE-PROMPT.md +610 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/STATE.md +176 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/SUMMARY-COMPLEX.md +59 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/SUMMARY-MINIMAL.md +41 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/SUMMARY-STANDARD.md +48 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Execution/SUMMARY.md +248 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Profile/DEV-PREFERENCES.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Profile/USER-PROFILE.md +146 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Profile/USER-SETUP.md +311 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/AGENTS_LEARNING.md +88 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/DISCOVERY.md +146 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/MILESTONE-ARCHIVE.md +123 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/MILESTONE.md +115 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/PROJECT.md +206 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/REQUIREMENTS.md +231 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/RETROSPECTIVE.md +54 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Project/ROADMAP.md +202 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Quality/DEBUG.md +164 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Quality/UAT.md +280 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Quality/UI-SPEC.md +100 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Quality/VALIDATION.md +76 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Quality/VERIFICATION-REPORT.md +322 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Research/ARCHITECTURE.md +204 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Research/FEATURES.md +147 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Research/PITFALLS.md +200 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Research/STACK.md +120 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/Research/SUMMARY.md +170 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/System/CONFIG.json +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/Templates/System/CONTEXT.md +352 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/adr/ADR-024-browser-localhost-only.md +17 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/adr/ADR-025-visual-verify-failure-treatment.md +19 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/adr/ADR-026-session-persistence-security.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/adr/ADR-042-ads-protocol.md +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/NEXUS-DASHBOARD.md +35 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/PAR-ZTS-SURVEY.md +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/README.md +78 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/V3-CORE.md +52 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/V4-SWARM-MESH.md +77 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/V5-ENTERPRISE.md +131 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/V6-SOVEREIGN.md +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/adr-039-multi-runtime-support.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/adr-040-additive-schema-migration.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/adr-041-stable-runtime-interface-contract.md +20 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/architecture/decision-records-index.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/ci-cd-integration.md +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/ci-cd.md +92 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/ci-quickstart.md +78 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/commands-reference.md +144 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/commands-skills/DISCOVERED_SKILLS.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/contributing/CONTRIBUTING.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/contributing/plugin-authoring.md +50 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/contributing/skill-authoring.md +41 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/enterprise-setup.md +25 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/faq.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/feature-dashboard.md +63 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/getting-started.md +44 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/governance-guide.md +99 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/monorepo-guide.md +26 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/persona-customisation.md +56 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/publishing-guide.md +43 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/quick-verify.md +33 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/AGENTS.md +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/COMMANDS.md +87 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/HOOKS.md +38 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/PERSONAS.md +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/README.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/SKILLS.md +142 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/registry/WORKFLOWS.md +72 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/release-checklist-guide.md +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/requirements.md +29 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/sdk-reference.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/security/SECURITY.md +55 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/security/ZTAI-OVERVIEW.md +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/security/penetration-test-results.md +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/security/threat-model.md +142 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/skills-authoring-guide.md +176 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/skills-publishing-guide.md +22 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/team-setup-guide.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/testing-current-version.md +130 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/troubleshooting.md +139 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/tutorial.md +162 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/upgrade.md +58 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/user-guide.md +244 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/usp-features.md +102 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/docs/workflow-atlas.md +57 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/eslint.config.mjs +31 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/examples/starter-project/.planning/AUDIT.jsonl +1 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/examples/starter-project/.planning/HANDOFF.json +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/examples/starter-project/.planning/PROJECT.md +27 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/examples/starter-project/.planning/STATE.md +10 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/examples/starter-project/MINDFORGE.md +40 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/examples/starter-project/README.md +14 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/package-lock.json +3882 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/package.json +66 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/README.md +69 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/eslint.config.mjs +34 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/package-lock.json +1507 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/package.json +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/src/client.ts +133 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/src/commands.ts +63 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/src/events.ts +166 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/src/index.ts +23 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/src/memory.ts +257 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/src/types.ts +87 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/sdk/tsconfig.json +13 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/skills-lock.json +30 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/test/sovereign-status.test.js +18 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/ads.test.js +121 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/audit.test.js +206 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/autonomous.test.js +53 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/browser.test.js +61 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/ci-mode.test.js +162 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/compaction.test.js +161 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/dashboard.test.js +327 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/distribution.test.js +205 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/e2e.test.js +618 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/entropy-test.js +47 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/feedback-loop.test.js +62 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/governance/test-cadia-optimizer.js +112 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/governance/test-policies/deny-security.json +9 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/governance/test-policies/permit-t2.json +10 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/governance.test.js +130 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/install.test.js +209 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/integrations.test.js +128 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/intelligence.test.js +117 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/knowledge-graph.test.js +593 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/learning-engine.test.js +69 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/mca-routing-test.js +37 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/memory.test.js +166 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/metrics.test.js +96 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/migration.test.js +308 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/model-broker.test.js +55 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/model-routing.test.js +111 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/nexus-tracing.test.js +49 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/production.test.js +416 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/release.test.js +99 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/revops-roi.test.js +52 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/run-nexus-tests.js +84 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/sdk.test.js +200 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/security-audit.test.js +67 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/self-building-skills.test.js +285 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/semantic-hub.test.js +91 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/sharding.test.js +87 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/skills-platform.test.js +389 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/sre-zk-proof-test.js +76 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/swarms.test.md +21 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/temporal-vision.test.js +68 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v7-pillar-integration.test.js +73 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v7-proactive-homing.test.js +53 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v7-sovereign-security.test.js +64 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v8-mesh-sync.test.js +76 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v8-orbital-governance.test.js +74 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v8-persistence.test.js +86 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/v8-skill-evolution.test.js +74 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/wave-engine.test.js +336 -0
- package/.mindforge/mirrors/mirror-sre-776a1cf9/tests/ztai-enterprise.test.js +103 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ai-image-generation/SKILL.md +147 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ai-video-generation/SKILL.md +185 -0
- package/.planning/archive/v8-cleanup/.agents/skills/critique/SKILL.md +201 -0
- package/.planning/archive/v8-cleanup/.agents/skills/critique/reference/cognitive-load.md +106 -0
- package/.planning/archive/v8-cleanup/.agents/skills/critique/reference/heuristics-scoring.md +234 -0
- package/.planning/archive/v8-cleanup/.agents/skills/critique/reference/personas.md +178 -0
- package/.planning/archive/v8-cleanup/.agents/skills/elevenlabs-music/SKILL.md +191 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/SKILL.md +659 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/colors.csv +162 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/design.csv +1776 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/draft.csv +1779 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/products.csv +162 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/styles.csv +85 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/scripts/core.py +247 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.planning/archive/v8-cleanup/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/.planning/archive/v8-cleanup/.forge/org/CONVENTIONS.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/org/ORG.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/org/SECURITY.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/org/TOOLS.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/personas/analyst.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/personas/architect.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/personas/debug-specialist.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/personas/developer.md +26 -0
- package/.planning/archive/v8-cleanup/.forge/personas/qa-engineer.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/personas/release-manager.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/personas/security-reviewer.md +33 -0
- package/.planning/archive/v8-cleanup/.forge/personas/tech-writer.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/skills/api-design/SKILL.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/skills/code-quality/SKILL.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/skills/documentation/SKILL.md +0 -0
- package/.planning/archive/v8-cleanup/.forge/skills/security-review/SKILL.md +23 -0
- package/.planning/archive/v8-cleanup/.forge/skills/testing-standards/SKILL.md +27 -0
- package/.planning/archive/v8-cleanup/ARCHITECTURE-AUDIT-REPORT.md +90 -0
- package/.planning/archive/v8-cleanup/LOGS-BENCHMARKING.md +172 -0
- package/.planning/archive/v8-cleanup/MIND-FORGE-V6-ENTERPRISE-PROPOSAL.md +79 -0
- package/.planning/archive/v8-cleanup/ROADMAP_V7.md +67 -0
- package/.planning/archive/v8-cleanup/ROADMAP_V8.md +49 -0
- package/.planning/archive/v8-cleanup/github-actions-logs.md +88 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-1-imp/DAY1-HARDEN.md +823 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-1-imp/DAY1-IMPLEMENT.md +2459 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-1-imp/DAY1-REVIEW.md +288 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-2-imp/DAY2-HARDEN.md +954 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-2-imp/DAY2-IMPLEMENT.md +2347 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-2-imp/DAY2-REVIEW.md +422 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-3-imp/DAY3-HARDEN.md +870 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-3-imp/DAY3-IMPLEMENT.md +2798 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-3-imp/DAY3-REVIEW.md +484 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-4-imp/DAY4-HARDEN.md +1087 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-4-imp/DAY4-IMPLEMENT.md +2874 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-4-imp/DAY4-REVIEW.md +386 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-5-imp/DAY5-HARDEN.md +1078 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-5-imp/DAY5-IMPLEMENT.md +3151 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-5-imp/DAY5-REVIEW.md +345 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-6-imp/DAY6-COMPLETE.md +3919 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v1.0.0/day-7-imp-prod/DAY7-PRODUCTION-FINAL.md +4513 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/ci-actions/github-workflows-v2.md +421 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/ci-actions/v2-ci-actions.md +292 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-10-imp/DAY10-MULTI-MODEL.md +3402 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-11-imp/DAY11-PERSISTENT-MEMORY.md +3237 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-12-imp/DAY12-REALTIME-DASHBOARD.md +3301 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-13-imp/DAY13-SELF-BUILDING-SKILLS.md +3798 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-14-prod-v2/DAY14-V2-PRODUCTION-RELEASE.md +2255 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-8-imp/DAY8-AUTONOMOUS-ENGINE.md +3400 -0
- package/.planning/archive/v8-cleanup/implementation-roadmap/v2.0.0/day-9-imp/DAY9-BROWSER-RUNTIME.md +3293 -0
- package/.planning/decisions/SRE-4e54a061.md +19 -0
- package/CHANGELOG.md +14 -0
- package/MINDFORGE.md +5 -4
- package/README.md +3 -2
- package/RELEASENOTES.md +17 -0
- package/bin/autonomous/auto-runner.js +64 -0
- package/bin/engine/learning-manager.js +4 -2
- package/bin/governance/impact-analyzer.js +4 -2
- package/bin/installer-core.js +18 -2
- package/bin/models/model-router.js +3 -1
- package/bin/sre/adversarial-sre.js +109 -0
- package/bin/sre/sentinel.js +128 -0
- package/bin/sre/shadow-mirror.js +122 -0
- package/bin/sre/sli-verifier.js +81 -0
- package/docs/Context/Master-Context.md +22 -2
- package/docs/PERSONAS.md +40 -0
- package/docs/architecture/V8-SRE.md +88 -0
- package/docs/governance-guide.md +43 -17
- package/package.json +2 -2
|
@@ -0,0 +1,2255 @@
|
|
|
1
|
+
# MindForge v2 — Day 14: v2.0.0 Production Release
|
|
2
|
+
# Branch: `feat/mindforge-v2-release`
|
|
3
|
+
# Prerequisite: `feat/mindforge-v2-self-building-skills` merged to `main`
|
|
4
|
+
# Version target: v2.0.0 — "The Autonomous Enterprise"
|
|
5
|
+
# Theme: "Ship It. Every Promise Kept."
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## BRANCH SETUP
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
git checkout main
|
|
13
|
+
git pull origin main
|
|
14
|
+
|
|
15
|
+
# Verify Day 13 baseline — CRITICAL: everything must pass before release work begins
|
|
16
|
+
node -e "console.log(require('./package.json').version)" # Must be 2.0.0-alpha.6
|
|
17
|
+
|
|
18
|
+
# Run ALL 21 test suites — zero tolerance for failures before release
|
|
19
|
+
SUITES=(install wave-engine audit compaction skills-platform \
|
|
20
|
+
integrations governance intelligence metrics \
|
|
21
|
+
distribution ci-mode sdk production migration e2e \
|
|
22
|
+
autonomous browser model-routing memory dashboard \
|
|
23
|
+
self-building-skills)
|
|
24
|
+
|
|
25
|
+
FAIL=0
|
|
26
|
+
for suite in "${SUITES[@]}"; do
|
|
27
|
+
printf " %-35s" "${suite}..."
|
|
28
|
+
node tests/${suite}.test.js 2>&1 | tail -1 | grep -q "passed" && echo "✅" || { echo "❌ BLOCKED"; ((FAIL++)); }
|
|
29
|
+
done
|
|
30
|
+
|
|
31
|
+
[ "$FAIL" -gt 0 ] && echo "
|
|
32
|
+
❌ $FAIL test suite(s) failing — FIX BEFORE STARTING DAY 14.
|
|
33
|
+
v2.0.0 release cannot proceed with failing tests." && exit 1
|
|
34
|
+
|
|
35
|
+
echo "
|
|
36
|
+
✅ All 21 test suites pass. Day 14 release work may begin."
|
|
37
|
+
|
|
38
|
+
git checkout -b feat/mindforge-v2-release
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## DAY 14 SCOPE
|
|
44
|
+
|
|
45
|
+
Day 14 is **The Release**. Every feature built in Days 8-13 ships as a cohesive
|
|
46
|
+
v2.0.0 package. The scope is different from previous days: instead of building
|
|
47
|
+
new features, Day 14 integrates, validates, hardens, and ships everything built so far.
|
|
48
|
+
|
|
49
|
+
**The v2.0.0 promise:**
|
|
50
|
+
> "The only agentic framework that is simultaneously enterprise-grade
|
|
51
|
+
> (governance, compliance, integrations) AND autonomously capable
|
|
52
|
+
> (walk-away mode, browser automation, cross-model intelligence,
|
|
53
|
+
> persistent memory, real-time team dashboard, self-building skills)."
|
|
54
|
+
|
|
55
|
+
**Day 14 deliverables:**
|
|
56
|
+
|
|
57
|
+
| Deliverable | Description |
|
|
58
|
+
|---|---|
|
|
59
|
+
| Multi-runtime expansion | 6 runtimes: Claude Code, Antigravity, Cursor, OpenCode, Gemini CLI, GitHub Copilot |
|
|
60
|
+
| `/mindforge:new-runtime` command | Scaffold support for any new runtime |
|
|
61
|
+
| v2.0.0 migration script | 1.0.0→2.0.0 HANDOFF.json + AUDIT.jsonl backfill |
|
|
62
|
+
| 65-point production checklist | 50 original + 15 new v2 items (Section F) |
|
|
63
|
+
| Complete v2.0.0 CHANGELOG | Full "The Autonomous Enterprise" entry |
|
|
64
|
+
| Full test battery × 3 runs | All 22 test suites, zero failures, three consecutive passes |
|
|
65
|
+
| `tests/release.test.js` | 22nd and final test suite |
|
|
66
|
+
| v2.0.0 state file | MINDFORGE-STATE-V2.md for post-release continuation |
|
|
67
|
+
| npm pack simulation | Verify tarball integrity before publish |
|
|
68
|
+
| GitHub release notes | Complete release notes document |
|
|
69
|
+
|
|
70
|
+
**New commands today: 48 total (47 + new-runtime)**
|
|
71
|
+
**Final ADR count: 41 (ADR-001 through ADR-041)**
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
# ═══════════════════════════════════════════════════════════════════════
|
|
76
|
+
# PART 1 — IMPLEMENTATION PROMPT
|
|
77
|
+
# ═══════════════════════════════════════════════════════════════════════
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## TASK 1 — Multi-Runtime Expansion: Update installer for 6 runtimes
|
|
82
|
+
|
|
83
|
+
### Update `bin/installer-core.js` RUNTIMES config
|
|
84
|
+
|
|
85
|
+
The existing installer supports Claude Code and Antigravity. Day 14 adds 4 more:
|
|
86
|
+
Cursor, OpenCode, Gemini CLI, and GitHub Copilot.
|
|
87
|
+
|
|
88
|
+
```javascript
|
|
89
|
+
/**
|
|
90
|
+
* MindForge v2.0.0 — RUNTIMES configuration
|
|
91
|
+
* 6 runtimes supported: Claude Code, Antigravity, Cursor,
|
|
92
|
+
* OpenCode, Gemini CLI, GitHub Copilot.
|
|
93
|
+
*
|
|
94
|
+
* Each runtime definition:
|
|
95
|
+
* globalDir — Machine-level directory for global installations
|
|
96
|
+
* localDir — Project-level directory (relative to project root)
|
|
97
|
+
* commandsSubdir — Subdirectory within localDir for command files
|
|
98
|
+
* entryFile — Main agent instructions file name
|
|
99
|
+
* commandFormat — How this runtime reads commands ('slash' | 'file' | 'include')
|
|
100
|
+
* supportsSlash — Whether /mindforge:cmd syntax is used directly
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
// Replace the existing RUNTIMES const in bin/installer-core.js with:
|
|
104
|
+
|
|
105
|
+
const RUNTIMES = {
|
|
106
|
+
|
|
107
|
+
// ── Claude Code ─────────────────────────────────────────────────────────────
|
|
108
|
+
claude: {
|
|
109
|
+
id: 'claude',
|
|
110
|
+
displayName: 'Claude Code',
|
|
111
|
+
globalDir: path.join(home, '.claude'),
|
|
112
|
+
localDir: '.claude',
|
|
113
|
+
commandsSubdir: 'commands/mindforge',
|
|
114
|
+
entryFile: 'CLAUDE.md',
|
|
115
|
+
commandFormat: 'slash',
|
|
116
|
+
supportsSlash: true,
|
|
117
|
+
detect: () => !!(process.env.CLAUDE_CODE || fs.existsSync('.claude/CLAUDE.md')),
|
|
118
|
+
description: 'Anthropic Claude Code (claude.ai/code)',
|
|
119
|
+
installDocs: 'https://docs.anthropic.com/claude-code',
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
// ── Antigravity ──────────────────────────────────────────────────────────────
|
|
123
|
+
antigravity: {
|
|
124
|
+
id: 'antigravity',
|
|
125
|
+
displayName: 'Antigravity',
|
|
126
|
+
globalDir: path.join(home, '.antigravity'),
|
|
127
|
+
localDir: '.agent',
|
|
128
|
+
commandsSubdir: 'mindforge',
|
|
129
|
+
entryFile: 'CLAUDE.md',
|
|
130
|
+
commandFormat: 'slash',
|
|
131
|
+
supportsSlash: true,
|
|
132
|
+
detect: () => fs.existsSync('.agent/CLAUDE.md'),
|
|
133
|
+
description: 'Antigravity AI coding agent',
|
|
134
|
+
installDocs: 'https://antigravity.dev',
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
// ── Cursor ───────────────────────────────────────────────────────────────────
|
|
138
|
+
cursor: {
|
|
139
|
+
id: 'cursor',
|
|
140
|
+
displayName: 'Cursor',
|
|
141
|
+
globalDir: path.join(home, '.cursor', 'rules'),
|
|
142
|
+
localDir: '.cursor/rules',
|
|
143
|
+
commandsSubdir: 'mindforge',
|
|
144
|
+
entryFile: '.cursorrules',
|
|
145
|
+
commandFormat: 'file', // Cursor reads command files as context rules
|
|
146
|
+
supportsSlash: false, // Cursor uses @-rules, not /slash commands
|
|
147
|
+
detect: () => fs.existsSync('.cursor') || !!(process.env.CURSOR_TRACE_ID),
|
|
148
|
+
description: 'Cursor AI code editor (cursor.sh)',
|
|
149
|
+
installDocs: 'https://cursor.sh/docs',
|
|
150
|
+
notes: 'Commands are installed as Cursor rules in .cursor/rules/mindforge/. ' +
|
|
151
|
+
'Use @mindforge-[command] in Cursor chat to reference them.',
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
// ── OpenCode ─────────────────────────────────────────────────────────────────
|
|
155
|
+
opencode: {
|
|
156
|
+
id: 'opencode',
|
|
157
|
+
displayName: 'OpenCode',
|
|
158
|
+
globalDir: path.join(home, '.config', 'opencode'),
|
|
159
|
+
localDir: '.opencode',
|
|
160
|
+
commandsSubdir: 'mindforge',
|
|
161
|
+
entryFile: 'CLAUDE.md', // OpenCode uses CLAUDE.md as its entry point
|
|
162
|
+
commandFormat: 'slash',
|
|
163
|
+
supportsSlash: true,
|
|
164
|
+
detect: () => fs.existsSync('.opencode') || !!(process.env.OPENCODE_SESSION),
|
|
165
|
+
description: 'OpenCode open-source coding agent (opencode.ai)',
|
|
166
|
+
installDocs: 'https://opencode.ai/docs',
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
// ── Gemini CLI ───────────────────────────────────────────────────────────────
|
|
170
|
+
gemini: {
|
|
171
|
+
id: 'gemini',
|
|
172
|
+
displayName: 'Gemini CLI',
|
|
173
|
+
globalDir: path.join(home, '.gemini'),
|
|
174
|
+
localDir: '.gemini',
|
|
175
|
+
commandsSubdir: 'mindforge',
|
|
176
|
+
entryFile: 'GEMINI.md', // Gemini CLI reads GEMINI.md as its instructions
|
|
177
|
+
commandFormat: 'slash',
|
|
178
|
+
supportsSlash: true,
|
|
179
|
+
detect: () => fs.existsSync('.gemini/GEMINI.md') || !!(process.env.GOOGLE_CLOUD_PROJECT && process.env.GEMINI_API_KEY),
|
|
180
|
+
description: 'Google Gemini CLI (developers.google.com/gemini-cli)',
|
|
181
|
+
installDocs: 'https://developers.google.com/gemini-cli',
|
|
182
|
+
},
|
|
183
|
+
|
|
184
|
+
// ── GitHub Copilot ───────────────────────────────────────────────────────────
|
|
185
|
+
copilot: {
|
|
186
|
+
id: 'copilot',
|
|
187
|
+
displayName: 'GitHub Copilot',
|
|
188
|
+
globalDir: path.join(home, '.github'),
|
|
189
|
+
localDir: '.github',
|
|
190
|
+
commandsSubdir: 'mindforge',
|
|
191
|
+
entryFile: 'copilot-instructions.md', // Copilot reads this as custom instructions
|
|
192
|
+
commandFormat: 'include', // Copilot uses @workspace + file references
|
|
193
|
+
supportsSlash: false,
|
|
194
|
+
detect: () => fs.existsSync('.github/copilot-instructions.md'),
|
|
195
|
+
description: 'GitHub Copilot (github.com/features/copilot)',
|
|
196
|
+
installDocs: 'https://docs.github.com/copilot/customizing-copilot',
|
|
197
|
+
notes: 'Commands are installed in .github/mindforge/. Reference with ' +
|
|
198
|
+
'@workspace #file:.github/mindforge/[command].md in Copilot chat.',
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
// Runtime entry point content adapters
|
|
203
|
+
// Different runtimes use different instructions file formats
|
|
204
|
+
const ENTRY_CONTENT = {
|
|
205
|
+
'CLAUDE.md': () => generateClaudeMd(), // Claude Code / Antigravity / OpenCode
|
|
206
|
+
'GEMINI.md': () => generateGeminiMd(), // Gemini CLI
|
|
207
|
+
'.cursorrules': () => generateCursorRules(), // Cursor
|
|
208
|
+
'copilot-instructions.md': () => generateCopilotMd(), // GitHub Copilot
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Generate GEMINI.md — adapted from CLAUDE.md for Gemini CLI conventions.
|
|
213
|
+
* Key differences: uses Gemini-specific model references, GEMINI.md filename.
|
|
214
|
+
*/
|
|
215
|
+
function generateGeminiMd() {
|
|
216
|
+
const claudeMd = fs.readFileSync(path.join(__dirname, '..', '.claude', 'CLAUDE.md'), 'utf8');
|
|
217
|
+
return claudeMd
|
|
218
|
+
.replace(/CLAUDE\.md/g, 'GEMINI.md')
|
|
219
|
+
.replace(/Claude Code/g, 'Gemini CLI')
|
|
220
|
+
.replace(/claude-opus-4-5/g, 'gemini-2.5-pro')
|
|
221
|
+
.replace(/claude-sonnet-4-6/g, 'gemini-2.0-flash');
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Generate .cursorrules — simplified rules for Cursor.
|
|
226
|
+
* Cursor rules are simpler than full CLAUDE.md — they describe project conventions.
|
|
227
|
+
*/
|
|
228
|
+
function generateCursorRules() {
|
|
229
|
+
return `# MindForge Project Rules for Cursor
|
|
230
|
+
|
|
231
|
+
## Project Management
|
|
232
|
+
This project uses MindForge for structured AI development.
|
|
233
|
+
All tasks must follow the PLAN → EXECUTE → VERIFY → SHIP lifecycle.
|
|
234
|
+
|
|
235
|
+
## Before implementing anything
|
|
236
|
+
1. Check .planning/phases/ for the current phase plan files
|
|
237
|
+
2. Read the relevant PLAN-[N]-[M].md for your task
|
|
238
|
+
3. Follow the persona in the <persona> field
|
|
239
|
+
|
|
240
|
+
## File scope
|
|
241
|
+
Only modify files listed in the <files> field of your assigned PLAN file.
|
|
242
|
+
|
|
243
|
+
## Quality gates
|
|
244
|
+
Always run: [project test command] before marking any task complete.
|
|
245
|
+
Never commit with failing tests.
|
|
246
|
+
|
|
247
|
+
## Commands reference
|
|
248
|
+
MindForge commands are in .cursor/rules/mindforge/
|
|
249
|
+
Reference: @mindforge-[command-name]
|
|
250
|
+
|
|
251
|
+
## Security
|
|
252
|
+
Follow .mindforge/org/SECURITY.md for all security-sensitive work.
|
|
253
|
+
Never commit secrets, API keys, or credentials.
|
|
254
|
+
`;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Generate copilot-instructions.md — GitHub Copilot custom instructions.
|
|
259
|
+
* Copilot uses a simpler format than full CLAUDE.md.
|
|
260
|
+
*/
|
|
261
|
+
function generateCopilotMd() {
|
|
262
|
+
return `# MindForge Copilot Instructions
|
|
263
|
+
|
|
264
|
+
This project uses MindForge v2.0.0 for structured AI-assisted development.
|
|
265
|
+
|
|
266
|
+
## Development workflow
|
|
267
|
+
Always plan before coding. Check .planning/phases/ for current phase plans.
|
|
268
|
+
Read PLAN-[N]-[M].md files before implementing any feature.
|
|
269
|
+
Run tests after every implementation.
|
|
270
|
+
|
|
271
|
+
## Code standards
|
|
272
|
+
Follow .mindforge/org/CONVENTIONS.md for all code style decisions.
|
|
273
|
+
Follow .mindforge/org/SECURITY.md for security-sensitive code.
|
|
274
|
+
|
|
275
|
+
## Available commands
|
|
276
|
+
MindForge command documentation is in .github/mindforge/.
|
|
277
|
+
Reference files in Copilot chat with: #file:.github/mindforge/[command].md
|
|
278
|
+
|
|
279
|
+
## Testing
|
|
280
|
+
Run the full test suite before marking any task complete.
|
|
281
|
+
No exceptions: failing tests = incomplete task.
|
|
282
|
+
`;
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Update `bin/install.js` to support runtime selection
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# Add --runtime flag to install.js
|
|
290
|
+
# Usage: npx mindforge-cc@latest --runtime cursor
|
|
291
|
+
# Usage: npx mindforge-cc@latest --runtime all
|
|
292
|
+
# Usage: npx mindforge-cc@latest --runtime claude,gemini
|
|
293
|
+
|
|
294
|
+
# The installer already handles --all flag (all runtimes)
|
|
295
|
+
# Day 14 expands RUNTIMES map so --all now installs all 6
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Commit:**
|
|
299
|
+
```bash
|
|
300
|
+
git add bin/installer-core.js bin/install.js
|
|
301
|
+
git commit -m "feat(v2-release): expand installer to 6 runtimes (Cursor, OpenCode, Gemini CLI, Copilot)"
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## TASK 2 — Add `/mindforge:new-runtime` command
|
|
307
|
+
|
|
308
|
+
### `.claude/commands/mindforge/new-runtime.md`
|
|
309
|
+
|
|
310
|
+
```markdown
|
|
311
|
+
# MindForge v2 — New Runtime Command
|
|
312
|
+
# Usage: /mindforge:new-runtime [runtime-name] [--entry-file filename] [--commands-dir path]
|
|
313
|
+
# Version: v2.0.0
|
|
314
|
+
|
|
315
|
+
## Purpose
|
|
316
|
+
Scaffold MindForge support for a new AI coding agent/runtime that isn't
|
|
317
|
+
included in the standard 6 supported runtimes.
|
|
318
|
+
|
|
319
|
+
If your team uses an internal AI coding tool, a custom fork of an open-source
|
|
320
|
+
agent, or a new runtime that was released after MindForge v2.0.0, this command
|
|
321
|
+
generates the required files to integrate it.
|
|
322
|
+
|
|
323
|
+
## What it creates
|
|
324
|
+
|
|
325
|
+
```
|
|
326
|
+
[runtime-local-dir]/
|
|
327
|
+
├── [entry-file] ← Agent instructions (adapted from CLAUDE.md)
|
|
328
|
+
└── mindforge/
|
|
329
|
+
└── [48 command .md files] ← All MindForge commands adapted for runtime
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## How it works
|
|
333
|
+
|
|
334
|
+
### Step 1: Ask runtime details
|
|
335
|
+
```
|
|
336
|
+
What is the runtime name? (kebab-case, e.g., "my-agent")
|
|
337
|
+
What directory does it use for instructions? (e.g., ".myagent")
|
|
338
|
+
What is its main instructions file name? (e.g., "AGENT.md")
|
|
339
|
+
Does it support /slash commands? (y/n)
|
|
340
|
+
Where is its global config directory? (~/.myagent)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Step 2: Generate adapted instructions file
|
|
344
|
+
Create [local-dir]/[entry-file] by adapting .claude/CLAUDE.md:
|
|
345
|
+
- Replace Claude-specific references with runtime-appropriate equivalents
|
|
346
|
+
- Replace slash command syntax if the runtime doesn't support it
|
|
347
|
+
- Keep all MindForge protocols (PLAN first, AUDIT logging, etc.)
|
|
348
|
+
|
|
349
|
+
### Step 3: Mirror all commands
|
|
350
|
+
Copy all 48 command files from .claude/commands/mindforge/ to
|
|
351
|
+
[local-dir]/mindforge/ with runtime-appropriate adaptations.
|
|
352
|
+
|
|
353
|
+
### Step 4: Update installer config
|
|
354
|
+
Add the new runtime to MINDFORGE.md as a custom runtime config:
|
|
355
|
+
```
|
|
356
|
+
CUSTOM_RUNTIME_NAME=my-agent
|
|
357
|
+
CUSTOM_RUNTIME_LOCAL_DIR=.myagent
|
|
358
|
+
CUSTOM_RUNTIME_COMMANDS_SUBDIR=mindforge
|
|
359
|
+
CUSTOM_RUNTIME_ENTRY_FILE=AGENT.md
|
|
360
|
+
CUSTOM_RUNTIME_SLASH_SUPPORT=false
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Step 5: Verify and report
|
|
364
|
+
```
|
|
365
|
+
✅ New runtime "my-agent" scaffolded
|
|
366
|
+
|
|
367
|
+
Files created:
|
|
368
|
+
.myagent/AGENT.md ← Entry point
|
|
369
|
+
.myagent/mindforge/ ← 48 command files
|
|
370
|
+
|
|
371
|
+
To activate:
|
|
372
|
+
1. Restart your agent with the new configuration
|
|
373
|
+
2. Run /mindforge:health to verify installation
|
|
374
|
+
|
|
375
|
+
Submit as a PR to add official support:
|
|
376
|
+
github.com/mindforge-dev/mindforge/pulls
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## AUDIT entry
|
|
380
|
+
```json
|
|
381
|
+
{ "event": "new_runtime_scaffolded", "runtime_name": "[name]", "entry_file": "[file]", "commands_count": 48 }
|
|
382
|
+
```
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**Commit:**
|
|
386
|
+
```bash
|
|
387
|
+
cp .claude/commands/mindforge/new-runtime.md .agent/mindforge/new-runtime.md
|
|
388
|
+
git add .claude/commands/mindforge/new-runtime.md .agent/mindforge/new-runtime.md
|
|
389
|
+
git commit -m "feat(v2-release): add /mindforge:new-runtime command for custom runtime scaffolding"
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## TASK 3 — Write the v1.0.0→v2.0.0 Migration Script
|
|
395
|
+
|
|
396
|
+
### `bin/migrations/1.0.0-to-2.0.0.js`
|
|
397
|
+
|
|
398
|
+
```javascript
|
|
399
|
+
/**
|
|
400
|
+
* MindForge Migration: v1.0.0 → v2.0.0
|
|
401
|
+
*
|
|
402
|
+
* Handles all schema changes introduced in Days 8-13:
|
|
403
|
+
*
|
|
404
|
+
* HANDOFF.json additions:
|
|
405
|
+
* - autonomous_mode: { status, last_run_phase, last_run_at }
|
|
406
|
+
* - steering_queue_path: ".planning/steering-queue.jsonl"
|
|
407
|
+
* - knowledge_base_path: ".mindforge/memory/knowledge-base.jsonl"
|
|
408
|
+
* - schema_version: "2.0.0" (from "1.0.0")
|
|
409
|
+
*
|
|
410
|
+
* AUDIT.jsonl backfill:
|
|
411
|
+
* - Add model_used: "unknown" to existing entries (no model tracking in v1)
|
|
412
|
+
* - Add node_repair: false to existing entries
|
|
413
|
+
*
|
|
414
|
+
* New files/directories created if absent:
|
|
415
|
+
* - .mindforge/memory/ (knowledge graph)
|
|
416
|
+
* - .planning/steering-queue.jsonl
|
|
417
|
+
* - .planning/auto-state.json (initialized to IDLE)
|
|
418
|
+
*
|
|
419
|
+
* token-usage.jsonl:
|
|
420
|
+
* - Existing entries get cost_usd: null (v1 had no cost tracking)
|
|
421
|
+
* - Schema_version note added
|
|
422
|
+
*
|
|
423
|
+
* No destructive changes — all migrations are additive.
|
|
424
|
+
*/
|
|
425
|
+
'use strict';
|
|
426
|
+
|
|
427
|
+
const fs = require('fs');
|
|
428
|
+
const path = require('path');
|
|
429
|
+
|
|
430
|
+
const PLANNING_DIR = path.join(process.cwd(), '.planning');
|
|
431
|
+
const MFDIR = path.join(process.cwd(), '.mindforge');
|
|
432
|
+
|
|
433
|
+
module.exports = {
|
|
434
|
+
fromVersion: '1.0.0',
|
|
435
|
+
toVersion: '2.0.0',
|
|
436
|
+
description: 'Add v2.0.0 autonomous mode, knowledge graph, and model tracking fields',
|
|
437
|
+
|
|
438
|
+
async run(context = {}) {
|
|
439
|
+
const { dry_run = false, verbose = false } = context;
|
|
440
|
+
const log = msg => verbose && console.log(` [1.0.0→2.0.0] ${msg}`);
|
|
441
|
+
const changes = [];
|
|
442
|
+
|
|
443
|
+
// ── 1. Update HANDOFF.json ──────────────────────────────────────────────
|
|
444
|
+
const handoffPath = path.join(PLANNING_DIR, 'HANDOFF.json');
|
|
445
|
+
if (fs.existsSync(handoffPath)) {
|
|
446
|
+
const handoff = JSON.parse(fs.readFileSync(handoffPath, 'utf8'));
|
|
447
|
+
|
|
448
|
+
let updated = false;
|
|
449
|
+
|
|
450
|
+
// Add autonomous_mode field if absent
|
|
451
|
+
if (!handoff.autonomous_mode) {
|
|
452
|
+
handoff.autonomous_mode = {
|
|
453
|
+
status: 'idle',
|
|
454
|
+
last_run_phase: null,
|
|
455
|
+
last_run_at: null,
|
|
456
|
+
total_runs: 0,
|
|
457
|
+
};
|
|
458
|
+
updated = true;
|
|
459
|
+
log('Added autonomous_mode to HANDOFF.json');
|
|
460
|
+
changes.push('HANDOFF.json: added autonomous_mode');
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Add steering_queue_path if absent
|
|
464
|
+
if (!handoff.steering_queue_path) {
|
|
465
|
+
handoff.steering_queue_path = '.planning/steering-queue.jsonl';
|
|
466
|
+
updated = true;
|
|
467
|
+
log('Added steering_queue_path to HANDOFF.json');
|
|
468
|
+
changes.push('HANDOFF.json: added steering_queue_path');
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Add knowledge_base_path if absent
|
|
472
|
+
if (!handoff.knowledge_base_path) {
|
|
473
|
+
handoff.knowledge_base_path = '.mindforge/memory/knowledge-base.jsonl';
|
|
474
|
+
updated = true;
|
|
475
|
+
log('Added knowledge_base_path to HANDOFF.json');
|
|
476
|
+
changes.push('HANDOFF.json: added knowledge_base_path');
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// Bump schema_version
|
|
480
|
+
if (handoff.schema_version !== '2.0.0') {
|
|
481
|
+
handoff.schema_version = '2.0.0';
|
|
482
|
+
updated = true;
|
|
483
|
+
log('Updated schema_version to 2.0.0');
|
|
484
|
+
changes.push('HANDOFF.json: schema_version → 2.0.0');
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
if (updated && !dry_run) {
|
|
488
|
+
fs.writeFileSync(handoffPath, JSON.stringify(handoff, null, 2));
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// ── 2. Backfill AUDIT.jsonl with v2 fields ───────────────────────────────
|
|
493
|
+
const auditPath = path.join(PLANNING_DIR, 'AUDIT.jsonl');
|
|
494
|
+
if (fs.existsSync(auditPath)) {
|
|
495
|
+
const lines = fs.readFileSync(auditPath, 'utf8').split('\n').filter(Boolean);
|
|
496
|
+
let needsUpdate = false;
|
|
497
|
+
const updated = lines.map(line => {
|
|
498
|
+
try {
|
|
499
|
+
const entry = JSON.parse(line);
|
|
500
|
+
let changed = false;
|
|
501
|
+
if (entry.model_used === undefined) {
|
|
502
|
+
entry.model_used = 'unknown'; // v1 had no model tracking
|
|
503
|
+
changed = true;
|
|
504
|
+
}
|
|
505
|
+
if (entry.node_repair === undefined) {
|
|
506
|
+
entry.node_repair = false; // v1 had no node repair
|
|
507
|
+
changed = true;
|
|
508
|
+
}
|
|
509
|
+
if (changed) needsUpdate = true;
|
|
510
|
+
return JSON.stringify(entry);
|
|
511
|
+
} catch { return line; } // Keep malformed lines as-is
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
if (needsUpdate && !dry_run) {
|
|
515
|
+
fs.writeFileSync(auditPath, updated.join('\n') + '\n');
|
|
516
|
+
log(`Backfilled ${lines.length} AUDIT.jsonl entries with v2 fields`);
|
|
517
|
+
changes.push(`AUDIT.jsonl: backfilled ${lines.length} entries with model_used + node_repair`);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
// ── 3. Create new v2 directories if absent ───────────────────────────────
|
|
522
|
+
const dirs = [
|
|
523
|
+
path.join(MFDIR, 'memory'),
|
|
524
|
+
path.join(MFDIR, 'models'),
|
|
525
|
+
path.join(MFDIR, 'browser'),
|
|
526
|
+
path.join(MFDIR, 'dashboard'),
|
|
527
|
+
];
|
|
528
|
+
for (const dir of dirs) {
|
|
529
|
+
if (!fs.existsSync(dir)) {
|
|
530
|
+
if (!dry_run) fs.mkdirSync(dir, { recursive: true });
|
|
531
|
+
log(`Created directory: ${path.relative(process.cwd(), dir)}`);
|
|
532
|
+
changes.push(`Created: ${path.relative(process.cwd(), dir)}/`);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// ── 4. Initialize auto-state.json if absent ──────────────────────────────
|
|
537
|
+
const autoStatePath = path.join(PLANNING_DIR, 'auto-state.json');
|
|
538
|
+
if (!fs.existsSync(autoStatePath)) {
|
|
539
|
+
const initialState = {
|
|
540
|
+
schema_version: '2.0.0',
|
|
541
|
+
auto_mode_active: false,
|
|
542
|
+
status: 'idle',
|
|
543
|
+
phase: null,
|
|
544
|
+
wave_current: null,
|
|
545
|
+
wave_total: null,
|
|
546
|
+
tasks_completed: 0,
|
|
547
|
+
tasks_total: 0,
|
|
548
|
+
node_repairs: 0,
|
|
549
|
+
escalations: 0,
|
|
550
|
+
elapsed_ms: 0,
|
|
551
|
+
current_task: null,
|
|
552
|
+
last_commit: null,
|
|
553
|
+
updated_at: new Date().toISOString(),
|
|
554
|
+
};
|
|
555
|
+
if (!dry_run) fs.writeFileSync(autoStatePath, JSON.stringify(initialState, null, 2));
|
|
556
|
+
log('Created auto-state.json (initialized to idle)');
|
|
557
|
+
changes.push('Created: .planning/auto-state.json');
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// ── 5. Initialize steering-queue.jsonl if absent ─────────────────────────
|
|
561
|
+
const steeringPath = path.join(PLANNING_DIR, 'steering-queue.jsonl');
|
|
562
|
+
if (!fs.existsSync(steeringPath)) {
|
|
563
|
+
if (!dry_run) fs.writeFileSync(steeringPath, '');
|
|
564
|
+
log('Created empty steering-queue.jsonl');
|
|
565
|
+
changes.push('Created: .planning/steering-queue.jsonl');
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// ── 6. Backfill token-usage.jsonl with cost_usd field ────────────────────
|
|
569
|
+
const usagePath = path.join(MFDIR, 'metrics', 'token-usage.jsonl');
|
|
570
|
+
if (fs.existsSync(usagePath)) {
|
|
571
|
+
const lines = fs.readFileSync(usagePath, 'utf8').split('\n').filter(Boolean);
|
|
572
|
+
let needsUpdate = false;
|
|
573
|
+
const updated = lines.map(line => {
|
|
574
|
+
try {
|
|
575
|
+
const entry = JSON.parse(line);
|
|
576
|
+
if (entry.cost_usd === undefined) {
|
|
577
|
+
entry.cost_usd = null; // v1 had no cost tracking
|
|
578
|
+
needsUpdate = true;
|
|
579
|
+
}
|
|
580
|
+
return JSON.stringify(entry);
|
|
581
|
+
} catch { return line; }
|
|
582
|
+
});
|
|
583
|
+
if (needsUpdate && !dry_run) {
|
|
584
|
+
fs.writeFileSync(usagePath, updated.join('\n') + '\n');
|
|
585
|
+
log(`Backfilled ${lines.length} token-usage.jsonl entries with cost_usd: null`);
|
|
586
|
+
changes.push(`token-usage.jsonl: backfilled ${lines.length} entries with cost_usd`);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
return { success: true, changes, version_from: '1.0.0', version_to: '2.0.0' };
|
|
591
|
+
},
|
|
592
|
+
};
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
**Also update `bin/migrations/schema-versions.js`** to register the new migration:
|
|
596
|
+
|
|
597
|
+
```javascript
|
|
598
|
+
// Add to the migrations registry:
|
|
599
|
+
{
|
|
600
|
+
fromVersion: '1.0.0',
|
|
601
|
+
toVersion: '2.0.0',
|
|
602
|
+
file: './1.0.0-to-2.0.0.js',
|
|
603
|
+
description: 'Add v2.0.0 autonomous mode, knowledge graph, browser daemon, and model tracking',
|
|
604
|
+
breaking: false, // All changes are additive
|
|
605
|
+
}
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
**Commit:**
|
|
609
|
+
```bash
|
|
610
|
+
git add bin/migrations/1.0.0-to-2.0.0.js bin/migrations/schema-versions.js
|
|
611
|
+
git commit -m "feat(v2-release): add v1.0.0→v2.0.0 migration script with additive schema changes"
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
---
|
|
615
|
+
|
|
616
|
+
## TASK 4 — Update the Production Checklist to 65 Points
|
|
617
|
+
|
|
618
|
+
### Update `.mindforge/production/production-checklist.md`
|
|
619
|
+
|
|
620
|
+
Extend the existing 50-point checklist with Section F (15 new v2 items):
|
|
621
|
+
|
|
622
|
+
```markdown
|
|
623
|
+
# MindForge v2.0.0 Production Checklist
|
|
624
|
+
|
|
625
|
+
**Release gate:** ALL 65 items must be checked before tagging v2.0.0.
|
|
626
|
+
**Sections:** A (Installation) · B (Commands) · C (Governance) · D (Documentation) · E (Tests) · F (v2.0.0 Features)
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
## Section A — Installation (10 points) [unchanged from v1.0.0]
|
|
631
|
+
|
|
632
|
+
| # | Check | Verification | Verifier | Date |
|
|
633
|
+
|---|---|---|---|---|
|
|
634
|
+
| A01 | `npx mindforge-cc@latest` completes without error | Run in empty dir | | |
|
|
635
|
+
| A02 | `node tests/install.test.js` passes all assertions | Run test suite | | |
|
|
636
|
+
| A03 | `.claude/CLAUDE.md` matches `.agent/CLAUDE.md` exactly | `diff .claude/CLAUDE.md .agent/CLAUDE.md` | | |
|
|
637
|
+
| A04 | All 48 commands in `.claude/commands/mindforge/` | `ls .claude/commands/mindforge/ | wc -l` → 48 | | |
|
|
638
|
+
| A05 | All 48 commands mirrored in `.agent/mindforge/` | `diff <(ls .claude/commands/mindforge/) <(ls .agent/mindforge/)` | | |
|
|
639
|
+
| A06 | `MINDFORGE.md` is valid per schema | `node bin/validate-config.js` | | |
|
|
640
|
+
| A07 | Node.js ≥ 18 gate works | Run with Node 16 → should fail with message | | |
|
|
641
|
+
| A08 | `--dry-run` flag shows plan without executing | `npx mindforge-cc@latest --dry-run` | | |
|
|
642
|
+
| A09 | Uninstall preserves `.planning/` and `.mindforge/` | Run uninstall, verify dirs exist | | |
|
|
643
|
+
| A10 | Self-install detection works | Run inside mindforge-cc repo → no framework files copied | | |
|
|
644
|
+
|
|
645
|
+
## Section B — Commands (10 points) [unchanged from v1.0.0]
|
|
646
|
+
|
|
647
|
+
| # | Check | Verification | Verifier | Date |
|
|
648
|
+
|---|---|---|---|---|
|
|
649
|
+
| B01 | `/mindforge:help` lists all 48 commands | Run and count | | |
|
|
650
|
+
| B02 | `/mindforge:init-project` creates all 8 planning files | Run in test dir, verify | | |
|
|
651
|
+
| B03 | `/mindforge:plan-phase` produces valid PLAN XML | Run and validate schema | | |
|
|
652
|
+
| B04 | `/mindforge:execute-phase` runs wave engine | Run with test plans, verify WAVE-REPORT | | |
|
|
653
|
+
| B05 | `/mindforge:verify-phase` runs all 4 verification stages | Run and verify VERIFICATION.md | | |
|
|
654
|
+
| B06 | `/mindforge:ship` creates PR with proper template | Run with --dry-run | | |
|
|
655
|
+
| B07 | `/mindforge:status` reads from all data sources | Run and verify all 6 sections present | | |
|
|
656
|
+
| B08 | `/mindforge:health --repair` fixes 7 known issue types | Introduce each issue, run health --repair | | |
|
|
657
|
+
| B09 | `/mindforge:audit --summary` reads AUDIT.jsonl | Run and verify output format | | |
|
|
658
|
+
| B10 | `/mindforge:retrospective` generates RETROSPECTIVE.md | Run with test data | | |
|
|
659
|
+
|
|
660
|
+
## Section C — Governance Gates (10 points) [unchanged from v1.0.0]
|
|
661
|
+
|
|
662
|
+
| # | Check | Verification | Verifier | Date |
|
|
663
|
+
|---|---|---|---|---|
|
|
664
|
+
| C01 | Gate 1: CRITICAL security finding blocks ship | Add test CRITICAL finding → ship should fail | | |
|
|
665
|
+
| C02 | Gate 2: Failing tests block ship | Break a test → ship should fail | | |
|
|
666
|
+
| C03 | Gate 3: Secret detection blocks and CANNOT be overridden | Add a fake API key → ship must block | | |
|
|
667
|
+
| C04 | Gate 4: GDPR retention check is independent of skill loading | Uninstall data-privacy skill → Gate 4 still runs | | |
|
|
668
|
+
| C05 | Gate 5: CVE detection works | Add `npm:lodash@4.17.15` (known CVE) → should flag | | |
|
|
669
|
+
| C06 | Tier 3 change detection fires on auth file path | Touch `src/auth/login.ts` → must trigger Tier 3 | | |
|
|
670
|
+
| C07 | Tier 3 change detection fires on code content | Add `jwt.sign(` anywhere → must trigger Tier 3 | | |
|
|
671
|
+
| C08 | Emergency override works for EMERGENCY_APPROVERS only | Test with non-approver → blocked; with approver → allowed | | |
|
|
672
|
+
| C09 | Tier 3 approval expires after 4 hours | Set expires_at in past → approval should be expired | | |
|
|
673
|
+
| C10 | CI mode: Tier 3 always fails in CI regardless of settings | Set CI=true → Tier 3 must fail with clear message | | |
|
|
674
|
+
|
|
675
|
+
## Section D — Documentation (10 points) [unchanged from v1.0.0]
|
|
676
|
+
|
|
677
|
+
| # | Check | Verification | Verifier | Date |
|
|
678
|
+
|---|---|---|---|---|
|
|
679
|
+
| D01 | README.md covers installation, quick start, all features | Read and verify completeness | | |
|
|
680
|
+
| D02 | `docs/reference/commands.md` documents all 48 commands | Count and verify | | |
|
|
681
|
+
| D03 | `docs/security/SECURITY.md` has responsible disclosure info | Verify contact + disclosure timeline | | |
|
|
682
|
+
| D04 | `docs/security/threat-model.md` covers 7 threat actors | Count threat actors | | |
|
|
683
|
+
| D05 | All 41 ADRs indexed in `docs/architecture/decision-records-index.md` | Count and verify links | | |
|
|
684
|
+
| D06 | CHANGELOG.md has complete entry for v2.0.0 | Read and verify all major features present | | |
|
|
685
|
+
| D07 | Migration guide exists for v1.0.0 → v2.0.0 | Verify migration script works end-to-end | | |
|
|
686
|
+
| D08 | Skills authoring guide is up to date for v2 | Verify quality scoring section added | | |
|
|
687
|
+
| D09 | `docs/multi-model-guide.md` covers model routing | Read and verify Day 10 content | | |
|
|
688
|
+
| D10 | `docs/self-building-skills-guide.md` covers learn command | Read and verify Day 13 content | | |
|
|
689
|
+
|
|
690
|
+
## Section E — Test Coverage (10 points) [unchanged from v1.0.0]
|
|
691
|
+
|
|
692
|
+
| # | Check | Verification | Verifier | Date |
|
|
693
|
+
|---|---|---|---|---|
|
|
694
|
+
| E01 | All 22 test suites pass × 1 | `node tests/[each].test.js` | | |
|
|
695
|
+
| E02 | All 22 test suites pass × 2 (second run) | Re-run all | | |
|
|
696
|
+
| E03 | All 22 test suites pass × 3 (third run) | Re-run all | | |
|
|
697
|
+
| E04 | `node tests/e2e.test.js` completes full lifecycle | Run in fresh temp dir | | |
|
|
698
|
+
| E05 | `node tests/migration.test.js` covers v1.0.0→v2.0.0 | Verify new migration included | | |
|
|
699
|
+
| E06 | `node tests/release.test.js` passes all release validations | Run new release test suite | | |
|
|
700
|
+
| E07 | Zero TypeScript errors in sdk/ | `cd sdk && npx tsc --noEmit` | | |
|
|
701
|
+
| E08 | No secrets in any output file | `grep -r "sk-" bin/ .mindforge/ tests/` → no results | | |
|
|
702
|
+
| E09 | `package.json` version is exactly `2.0.0` | `node -e "console.log(require('./package.json').version)"` | | |
|
|
703
|
+
| E10 | `CHANGELOG.md` has `## [2.0.0]` entry at top | `head -5 CHANGELOG.md` | | |
|
|
704
|
+
|
|
705
|
+
## Section F — v2.0.0 Features (15 points) [NEW for v2.0.0]
|
|
706
|
+
|
|
707
|
+
| # | Check | Verification | Verifier | Date |
|
|
708
|
+
|---|---|---|---|---|
|
|
709
|
+
| F01 | `/mindforge:auto` runs a complete phase end-to-end | Run on test project — wave completes without intervention | | |
|
|
710
|
+
| F02 | Node repair RETRY recovers from transient test failure | Inject flaky test → verify auto-recovery in AUDIT.jsonl | | |
|
|
711
|
+
| F03 | Node repair DECOMPOSE splits an oversized plan | Create plan >80K tokens → verify decomposed sub-plans | | |
|
|
712
|
+
| F04 | Node repair ESCALATE fires correctly and saves state | Hit max repair budget → verify ESCALATION.md created | | |
|
|
713
|
+
| F05 | `/mindforge:steer` injects guidance at task boundary | Run auto mode → steer in second terminal → verify pickup | | |
|
|
714
|
+
| F06 | Browser daemon starts, persists, and shuts down cleanly | Start → screenshot → verify PID file → stop | | |
|
|
715
|
+
| F07 | `/mindforge:qa` identifies affected routes after changes | Run QA after UI changes → verify QA-REPORT | | |
|
|
716
|
+
| F08 | `/mindforge:cross-review` runs with 2+ models | Run with ANTHROPIC_API_KEY + OPENAI_API_KEY → verify CROSS-REVIEW | | |
|
|
717
|
+
| F09 | Model routing: Tier 3 tasks use SECURITY_MODEL | Log a Tier 3 task → verify model_used in AUDIT.jsonl | | |
|
|
718
|
+
| F10 | Knowledge base captures entries from retrospective | Run /mindforge:retrospective → verify knowledge-base.jsonl | | |
|
|
719
|
+
| F11 | Dashboard server starts and shows live AUDIT stream | Start /mindforge:dashboard → open browser → verify SSE feed | | |
|
|
720
|
+
| F12 | `/mindforge:learn [url]` creates a valid SKILL.md | Run on a public docs URL → score must be ≥ 60 | | |
|
|
721
|
+
| F13 | All 6 runtimes install correctly | Run installer with each runtime flag | | |
|
|
722
|
+
| F14 | All v1.0.0 tests still pass (regression) | Run original 15 suites: install→e2e | | |
|
|
723
|
+
| F15 | v1.0.0 → v2.0.0 migration completes without data loss | Run migration on v1.0.0 project → verify HANDOFF.json | | |
|
|
724
|
+
|
|
725
|
+
---
|
|
726
|
+
|
|
727
|
+
## Release Gate Procedure
|
|
728
|
+
|
|
729
|
+
Before tagging v2.0.0:
|
|
730
|
+
1. ALL 65 checklist items must be checked ✅
|
|
731
|
+
2. Verifier name entered for each item
|
|
732
|
+
3. Date entered for each item
|
|
733
|
+
4. Final sign-off: `git tag -a v2.0.0 -m "The Autonomous Enterprise"`
|
|
734
|
+
5. Push: `git push origin v2.0.0`
|
|
735
|
+
6. npm publish: `npm publish --access public`
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
**Commit:**
|
|
739
|
+
```bash
|
|
740
|
+
git add .mindforge/production/production-checklist.md
|
|
741
|
+
git commit -m "feat(v2-release): extend production checklist to 65 points with Section F v2.0.0 features"
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
---
|
|
745
|
+
|
|
746
|
+
## TASK 5 — Write the Complete v2.0.0 CHANGELOG Entry
|
|
747
|
+
|
|
748
|
+
### Update `CHANGELOG.md`
|
|
749
|
+
|
|
750
|
+
Add the full v2.0.0 entry at the top:
|
|
751
|
+
|
|
752
|
+
```markdown
|
|
753
|
+
## [2.0.0] — "The Autonomous Enterprise" — 2026-03-23
|
|
754
|
+
|
|
755
|
+
> The only agentic framework simultaneously enterprise-grade AND autonomously capable.
|
|
756
|
+
> MindForge v2.0.0 ships everything your team needs to walk away and come back to
|
|
757
|
+
> a built feature — with your team watching it happen in real time.
|
|
758
|
+
|
|
759
|
+
### Major new features
|
|
760
|
+
|
|
761
|
+
#### Autonomous Execution Mode (Days 8)
|
|
762
|
+
**Branch:** `feat/mindforge-v2-autonomous-engine`
|
|
763
|
+
- `/mindforge:auto [--phase N] [--milestone M] [--timeout T]` — walk-away execution mode
|
|
764
|
+
- `/mindforge:steer [instruction] [--priority normal|urgent|stop]` — mid-execution guidance
|
|
765
|
+
- Node repair operator: RETRY → DECOMPOSE → PRUNE → ESCALATE hierarchy
|
|
766
|
+
- RETRY: injects error context and retries with fresh context (max 1 attempt)
|
|
767
|
+
- DECOMPOSE: splits multi-domain plans into parallel sub-plans
|
|
768
|
+
- PRUNE: defers non-critical tasks to DEFERRED-ITEMS.md
|
|
769
|
+
- ESCALATE: saves state and notifies human (Tier 3 changes: immediate)
|
|
770
|
+
- Stuck detection: S01 (file churn), S02 (time overrun), S03 (identical errors),
|
|
771
|
+
S04 (context explosion), S05 (cascade failures) — all with automatic recovery
|
|
772
|
+
- Headless CI mode: exit 0 on timeout (state preserved), exit 1 on gate failures
|
|
773
|
+
- `bin/autonomous/` — headless.js, repair-operator.js, stuck-monitor.js, steer.js
|
|
774
|
+
- `tests/autonomous.test.js` (16th suite)
|
|
775
|
+
|
|
776
|
+
#### Persistent Browser Runtime + Visual QA (Day 9)
|
|
777
|
+
**Branch:** `feat/mindforge-v2-browser-runtime`
|
|
778
|
+
- Long-lived Chromium daemon at localhost:7338 (Playwright-backed, 16 HTTP endpoints)
|
|
779
|
+
- `/mindforge:browse` — navigate, click, type, screenshot, evaluate in live browser
|
|
780
|
+
- `/mindforge:qa` — systematic visual QA against affected routes after execution
|
|
781
|
+
- `<verify-visual>` XML tag in PLAN files — 13 directives for UI verification
|
|
782
|
+
- Cookie import from Chrome, Arc, Brave, Edge (handles SQLite + Windows FILETIME epoch)
|
|
783
|
+
- Named session persistence with per-session console error capture
|
|
784
|
+
- Screenshot store with phase namespacing and quota enforcement
|
|
785
|
+
- Auto-generated Playwright regression tests: `tests/regression/phase[N]-[slug].test.ts`
|
|
786
|
+
- `bin/browser/` — 8 modules for daemon, sessions, visual verification, QA, regressions
|
|
787
|
+
- `tests/browser.test.js` (17th suite)
|
|
788
|
+
|
|
789
|
+
#### Multi-Model Intelligence Layer (Day 10)
|
|
790
|
+
**Branch:** `feat/mindforge-v2-cross-model-review`
|
|
791
|
+
- 7-model registry: Claude (Opus/Sonnet/Haiku), GPT-4o/mini, Gemini (2.5 Pro/Flash)
|
|
792
|
+
- Persona-to-model routing (architect→PLANNER_MODEL, developer→EXECUTOR_MODEL, etc.)
|
|
793
|
+
- Tier 3 override: auth/payment/PII tasks always use SECURITY_MODEL
|
|
794
|
+
- `/mindforge:cross-review` — 3-round adversarial review (primary + adversarial + research)
|
|
795
|
+
- Consensus findings (2+ models agree) = high confidence
|
|
796
|
+
- Model-specific findings + contradiction detection
|
|
797
|
+
- `/mindforge:research` — deep research with Gemini 2.5 Pro 1M context
|
|
798
|
+
- `/mindforge:costs` — real-time cost tracking dashboard by model/phase/session
|
|
799
|
+
- Daily budget enforcement: MODEL_COST_HARD_LIMIT_USD blocks before API calls
|
|
800
|
+
- SSRF protection in research URL fetcher
|
|
801
|
+
- `bin/models/` + `bin/review/` + `bin/research/` — 9 modules
|
|
802
|
+
- `tests/model-routing.test.js` (18th suite)
|
|
803
|
+
|
|
804
|
+
#### Persistent Knowledge Graph (Day 11)
|
|
805
|
+
**Branch:** `feat/mindforge-v2-persistent-memory`
|
|
806
|
+
- Append-only JSONL knowledge graph: 5 types × 4 JSONL files
|
|
807
|
+
- `architectural_decision`, `code_pattern`, `bug_pattern`, `team_preference`, `domain_knowledge`
|
|
808
|
+
- TF-IDF relevance scoring with 30-second mtime-aware index cache
|
|
809
|
+
- 7 automatic capture triggers: phase completion, compaction, debug sessions,
|
|
810
|
+
retrospectives, security findings, cross-review consensus, steering instructions
|
|
811
|
+
- Injection guard: rejects prompt injection in knowledge content
|
|
812
|
+
- Global knowledge store: `~/.mindforge/global-knowledge-base.jsonl` (cross-project)
|
|
813
|
+
- Session start preloads relevant memories (🧠 Knowledge Base — N memories loaded)
|
|
814
|
+
- `/mindforge:remember` — add/query/export/stats/promote/deprecate
|
|
815
|
+
- `sdk/src/memory.ts` — TypeScript `MindForgeMemory` class
|
|
816
|
+
- `bin/memory/` — 5 modules: store, indexer, capture, session-loader, global-sync
|
|
817
|
+
- `tests/memory.test.js` (19th suite)
|
|
818
|
+
|
|
819
|
+
#### Real-Time Web Observability Dashboard (Day 12)
|
|
820
|
+
**Branch:** `feat/mindforge-v2-realtime-dashboard`
|
|
821
|
+
- Express.js server at localhost:7339 (localhost-only, no build step needed)
|
|
822
|
+
- 5-page dashboard: Activity Feed, Quality Metrics, Pending Approvals,
|
|
823
|
+
Knowledge Graph, Team Activity
|
|
824
|
+
- Server-Sent Events: live AUDIT.jsonl tail, inode rotation detection
|
|
825
|
+
- REST API: 10 endpoints for all project state
|
|
826
|
+
- Approval UI: approve/reject Tier 2/3 from browser
|
|
827
|
+
- Tier 3 requires typing plan ID to confirm (ADR-034)
|
|
828
|
+
- Quality charts: session scores, verify rates, security findings, cost trends
|
|
829
|
+
- Team activity: active developers, last-seen, file conflict detection
|
|
830
|
+
- `/mindforge:dashboard [--port 7339] [--open] [--stop]`
|
|
831
|
+
- `bin/dashboard/` — 6 modules + single-file HTML frontend (no external deps)
|
|
832
|
+
- `tests/dashboard.test.js` (20th suite)
|
|
833
|
+
|
|
834
|
+
#### Self-Building Skills Platform (Day 13)
|
|
835
|
+
**Branch:** `feat/mindforge-v2-self-building-skills`
|
|
836
|
+
- `/mindforge:learn [url|path|npm:pkg|--session]` — documentation-to-skill converter
|
|
837
|
+
- Auto-selects Gemini 2.5 Pro (1M context) for large docs, sonnet for smaller
|
|
838
|
+
- 3-step AI pipeline: extract patterns → generate triggers → write SKILL.md
|
|
839
|
+
- SSRF protection + redirect loop prevention (max 5 hops)
|
|
840
|
+
- Pre-save injection check: rejects skills containing injection patterns
|
|
841
|
+
- 7-dimension quality scorer (100 points, static analysis, < 100ms):
|
|
842
|
+
trigger_coverage(30) + mandatory_actions(25) + code_examples(20) + self_check(15)
|
|
843
|
+
+ injection_safe(10) + no_placeholders(10) + version_history(10)
|
|
844
|
+
- Minimum to register: 60; minimum to publish: 80; injection = absolute FAIL
|
|
845
|
+
- Auto-capture: phase completion hook detects patterns across 2+ tasks
|
|
846
|
+
- `/mindforge:marketplace [search|featured|trending|install|publish]`
|
|
847
|
+
- Curated layer on top of npm registry with 12 featured skills
|
|
848
|
+
- `session_quality_lift` metric: real signal of skill value
|
|
849
|
+
- `bin/skills-builder/` — 6 modules
|
|
850
|
+
- `tests/self-building-skills.test.js` (21st suite)
|
|
851
|
+
|
|
852
|
+
#### Multi-Runtime Expansion (Day 14)
|
|
853
|
+
**Branch:** `feat/mindforge-v2-release`
|
|
854
|
+
- 6 supported runtimes: Claude Code, Antigravity, Cursor, OpenCode, Gemini CLI,
|
|
855
|
+
GitHub Copilot
|
|
856
|
+
- Runtime-specific entry files: CLAUDE.md, GEMINI.md, .cursorrules, copilot-instructions.md
|
|
857
|
+
- `/mindforge:new-runtime [name]` — scaffold support for any custom runtime
|
|
858
|
+
- `bin/installer-core.js` RUNTIMES config expanded with runtime detection, display names,
|
|
859
|
+
command format flags, and install documentation links
|
|
860
|
+
|
|
861
|
+
### Breaking changes from v1.0.0
|
|
862
|
+
|
|
863
|
+
All changes are backwards compatible. Run `/mindforge:migrate` to update project files.
|
|
864
|
+
|
|
865
|
+
- `PLAN XML`: gains optional `<verify-visual>` tag (backwards compatible)
|
|
866
|
+
- `HANDOFF.json`: gains `autonomous_mode`, `steering_queue_path`, `knowledge_base_path` (optional)
|
|
867
|
+
- `AUDIT.jsonl`: gains `model_used`, `node_repair` fields (optional — backfilled by migration)
|
|
868
|
+
- `token-usage.jsonl`: gains `cost_usd` field per entry (optional — null for v1 entries)
|
|
869
|
+
|
|
870
|
+
### Migration
|
|
871
|
+
|
|
872
|
+
```bash
|
|
873
|
+
# Upgrade an existing v1.0.0 project to v2.0.0
|
|
874
|
+
/mindforge:migrate --from 1.0.0 --to 2.0.0
|
|
875
|
+
|
|
876
|
+
# Or for a fresh install on an existing project
|
|
877
|
+
npx mindforge-cc@latest --update
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
All v1.0.0 projects are fully compatible with v2.0.0. The migration is additive-only.
|
|
881
|
+
|
|
882
|
+
### Architecture Decision Records
|
|
883
|
+
|
|
884
|
+
v2.0.0 adds ADR-021 through ADR-041 (20 new ADRs):
|
|
885
|
+
- ADR-021: Autonomy boundary — human steers intent, agent executes
|
|
886
|
+
- ADR-022: Node repair hierarchy — RETRY → DECOMPOSE → PRUNE → ESCALATE
|
|
887
|
+
- ADR-023: Gate 3 pre-commit timing in auto mode
|
|
888
|
+
- ADR-024: Browser daemon localhost-only
|
|
889
|
+
- ADR-025: `<verify-visual>` failure = `<verify>` failure
|
|
890
|
+
- ADR-026: Session files gitignored — auth tokens never in git
|
|
891
|
+
- ADR-027: Persona determines model; Tier 3 always overrides to SECURITY_MODEL
|
|
892
|
+
- ADR-028: Adversarial second-reviewer prompt for cross-review
|
|
893
|
+
- ADR-029: Gemini uses x-goog-api-key header (not URL query param)
|
|
894
|
+
- ADR-030: Knowledge graph append-only — deprecate, never delete
|
|
895
|
+
- ADR-031: Knowledge reinforcement on explicit acknowledgment, not on load
|
|
896
|
+
- ADR-032: Global knowledge entries get 0.1 confidence penalty
|
|
897
|
+
- ADR-033: Dashboard binds to localhost only
|
|
898
|
+
- ADR-034: Tier 3 dashboard approvals require typing plan ID
|
|
899
|
+
- ADR-035: AUDIT entry written before approval file update
|
|
900
|
+
- ADR-036: Documentation is the authoritative source for skill content
|
|
901
|
+
- ADR-037: Pattern frequency ≥ 2 tasks as auto-capture threshold
|
|
902
|
+
- ADR-038: Minimum quality score of 60 for skill registration
|
|
903
|
+
- ADR-039: 6-runtime support via unified RUNTIMES config
|
|
904
|
+
- ADR-040: Migration is additive-only — no destructive schema changes in v2.0.0
|
|
905
|
+
- ADR-041: v2.0.0 stable interface contract (all v2 commands, ports, schemas are stable in 2.x)
|
|
906
|
+
|
|
907
|
+
### Metrics at v2.0.0
|
|
908
|
+
|
|
909
|
+
| Metric | v1.0.0 | v2.0.0 |
|
|
910
|
+
|---|---|---|
|
|
911
|
+
| Commands | 36 | 48 |
|
|
912
|
+
| Core skills | 10 | 10 + marketplace |
|
|
913
|
+
| Agent personas | 8 | 9 (+ research-agent) |
|
|
914
|
+
| ADRs | 20 | 41 |
|
|
915
|
+
| Test suites | 15 | 22 |
|
|
916
|
+
| Runtimes | 2 | 6 |
|
|
917
|
+
| Network ports | 1 (SSE:7337) | 3 (SSE:7337, Browser:7338, Dashboard:7339) |
|
|
918
|
+
| npm package | mindforge-cc | mindforge-cc |
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
**Commit:**
|
|
922
|
+
```bash
|
|
923
|
+
git add CHANGELOG.md
|
|
924
|
+
git commit -m "docs(v2-release): complete v2.0.0 CHANGELOG — The Autonomous Enterprise"
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
---
|
|
928
|
+
|
|
929
|
+
## TASK 6 — Write the v2.0.0 Release Test Suite
|
|
930
|
+
|
|
931
|
+
### `tests/release.test.js`
|
|
932
|
+
|
|
933
|
+
```javascript
|
|
934
|
+
/**
|
|
935
|
+
* MindForge v2.0.0 — Release Test Suite (22nd suite)
|
|
936
|
+
* Tests all v2.0.0 release requirements:
|
|
937
|
+
* - All 48 commands exist in both runtimes
|
|
938
|
+
* - All 6 runtimes have correct config
|
|
939
|
+
* - v2.0.0 migration script is complete
|
|
940
|
+
* - Production checklist has Section F
|
|
941
|
+
* - CHANGELOG has v2.0.0 entry
|
|
942
|
+
* - Version is exactly 2.0.0
|
|
943
|
+
* - All ADRs through ADR-041 exist
|
|
944
|
+
* - All 9 v2 components present (bins)
|
|
945
|
+
* - 65-point production checklist
|
|
946
|
+
* - SDK has memory.ts module
|
|
947
|
+
*
|
|
948
|
+
* Run: node tests/release.test.js
|
|
949
|
+
*/
|
|
950
|
+
'use strict';
|
|
951
|
+
|
|
952
|
+
const fs = require('fs');
|
|
953
|
+
const path = require('path');
|
|
954
|
+
const os = require('os');
|
|
955
|
+
const assert = require('assert');
|
|
956
|
+
|
|
957
|
+
let passed = 0, failed = 0;
|
|
958
|
+
|
|
959
|
+
function test(name, fn) {
|
|
960
|
+
try { fn(); console.log(` ✅ ${name}`); passed++; }
|
|
961
|
+
catch(e) { console.error(` ❌ ${name}\n ${e.message}`); failed++; }
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
965
|
+
console.log('\nMindForge v2.0.0 — Release Test Suite\n');
|
|
966
|
+
|
|
967
|
+
// ── Version ───────────────────────────────────────────────────────────────────
|
|
968
|
+
console.log('Version:');
|
|
969
|
+
|
|
970
|
+
test('package.json version is exactly 2.0.0', () => {
|
|
971
|
+
const v = JSON.parse(fs.readFileSync('package.json', 'utf8')).version;
|
|
972
|
+
assert.strictEqual(v, '2.0.0', `Expected exactly 2.0.0, got ${v}`);
|
|
973
|
+
});
|
|
974
|
+
|
|
975
|
+
test('CHANGELOG.md has ## [2.0.0] entry', () => {
|
|
976
|
+
const content = fs.readFileSync('CHANGELOG.md', 'utf8');
|
|
977
|
+
assert.ok(content.includes('## [2.0.0]'), 'CHANGELOG must have [2.0.0] entry');
|
|
978
|
+
assert.ok(content.includes('Autonomous Enterprise'), 'CHANGELOG must mention "Autonomous Enterprise"');
|
|
979
|
+
});
|
|
980
|
+
|
|
981
|
+
// ── All 48 commands ───────────────────────────────────────────────────────────
|
|
982
|
+
console.log('\nAll 48 commands:');
|
|
983
|
+
|
|
984
|
+
const ALL_COMMANDS = [
|
|
985
|
+
// v1.0.0 (36)
|
|
986
|
+
'help','init-project','plan-phase','execute-phase','verify-phase','ship',
|
|
987
|
+
'next','quick','status','debug',
|
|
988
|
+
'skills','review','security-scan','map-codebase','discuss-phase',
|
|
989
|
+
'audit','milestone','complete-milestone','approve','sync-jira','sync-confluence',
|
|
990
|
+
'health','retrospective','profile-team','metrics',
|
|
991
|
+
'init-org','install-skill','publish-skill','pr-review','workspace','benchmark',
|
|
992
|
+
'update','migrate','plugins','tokens','release',
|
|
993
|
+
// v2.0.0 additions (12)
|
|
994
|
+
'auto','steer', // Day 8
|
|
995
|
+
'browse','qa', // Day 9
|
|
996
|
+
'cross-review','research','costs', // Day 10
|
|
997
|
+
'remember', // Day 11
|
|
998
|
+
'dashboard', // Day 12
|
|
999
|
+
'learn','marketplace', // Day 13
|
|
1000
|
+
'new-runtime', // Day 14
|
|
1001
|
+
];
|
|
1002
|
+
|
|
1003
|
+
assert.strictEqual(ALL_COMMANDS.length, 48, `Expected 48 commands, counted ${ALL_COMMANDS.length}`);
|
|
1004
|
+
|
|
1005
|
+
test('all 48 commands in .claude/commands/mindforge/', () => {
|
|
1006
|
+
const missing = ALL_COMMANDS.filter(c => !fs.existsSync(`.claude/commands/mindforge/${c}.md`));
|
|
1007
|
+
assert.strictEqual(missing.length, 0, `Missing: ${missing.join(', ')}`);
|
|
1008
|
+
});
|
|
1009
|
+
|
|
1010
|
+
test('all 48 commands mirrored in .agent/mindforge/', () => {
|
|
1011
|
+
const missing = ALL_COMMANDS.filter(c => !fs.existsSync(`.agent/mindforge/${c}.md`));
|
|
1012
|
+
assert.strictEqual(missing.length, 0, `Missing in .agent/: ${missing.join(', ')}`);
|
|
1013
|
+
});
|
|
1014
|
+
|
|
1015
|
+
test('no extra/unexpected command files in .claude/commands/mindforge/', () => {
|
|
1016
|
+
const actual = fs.readdirSync('.claude/commands/mindforge/').filter(f => f.endsWith('.md'));
|
|
1017
|
+
const expected = new Set(ALL_COMMANDS.map(c => `${c}.md`));
|
|
1018
|
+
const extra = actual.filter(f => !expected.has(f));
|
|
1019
|
+
assert.strictEqual(extra.length, 0, `Unexpected commands: ${extra.join(', ')}`);
|
|
1020
|
+
});
|
|
1021
|
+
|
|
1022
|
+
// ── All 6 runtimes ────────────────────────────────────────────────────────────
|
|
1023
|
+
console.log('\nMulti-runtime (6 runtimes):');
|
|
1024
|
+
|
|
1025
|
+
const EXPECTED_RUNTIMES = ['claude', 'antigravity', 'cursor', 'opencode', 'gemini', 'copilot'];
|
|
1026
|
+
|
|
1027
|
+
test('installer-core.js defines all 6 runtimes', () => {
|
|
1028
|
+
const content = fs.readFileSync('bin/installer-core.js', 'utf8');
|
|
1029
|
+
EXPECTED_RUNTIMES.forEach(rt => {
|
|
1030
|
+
assert.ok(content.includes(`'${rt}'`) || content.includes(`"${rt}"`),
|
|
1031
|
+
`Runtime "${rt}" not found in installer-core.js`);
|
|
1032
|
+
});
|
|
1033
|
+
});
|
|
1034
|
+
|
|
1035
|
+
test('Claude runtime has correct entry file (CLAUDE.md)', () => {
|
|
1036
|
+
const content = fs.readFileSync('bin/installer-core.js', 'utf8');
|
|
1037
|
+
assert.ok(content.includes("entryFile: 'CLAUDE.md'") || content.includes('entryFile: "CLAUDE.md"'),
|
|
1038
|
+
'Claude runtime must use CLAUDE.md as entry file');
|
|
1039
|
+
});
|
|
1040
|
+
|
|
1041
|
+
test('Gemini runtime has correct entry file (GEMINI.md)', () => {
|
|
1042
|
+
const content = fs.readFileSync('bin/installer-core.js', 'utf8');
|
|
1043
|
+
assert.ok(content.includes("'GEMINI.md'") || content.includes('"GEMINI.md"'),
|
|
1044
|
+
'Gemini runtime must use GEMINI.md');
|
|
1045
|
+
});
|
|
1046
|
+
|
|
1047
|
+
test('Cursor runtime has correct entry file (.cursorrules)', () => {
|
|
1048
|
+
const content = fs.readFileSync('bin/installer-core.js', 'utf8');
|
|
1049
|
+
assert.ok(content.includes("'.cursorrules'") || content.includes('".cursorrules"'),
|
|
1050
|
+
'Cursor runtime must use .cursorrules');
|
|
1051
|
+
});
|
|
1052
|
+
|
|
1053
|
+
test('Copilot runtime has correct entry file (copilot-instructions.md)', () => {
|
|
1054
|
+
const content = fs.readFileSync('bin/installer-core.js', 'utf8');
|
|
1055
|
+
assert.ok(content.includes('copilot-instructions.md'),
|
|
1056
|
+
'Copilot runtime must use copilot-instructions.md');
|
|
1057
|
+
});
|
|
1058
|
+
|
|
1059
|
+
test('new-runtime command exists in both runtimes', () => {
|
|
1060
|
+
assert.ok(fs.existsSync('.claude/commands/mindforge/new-runtime.md'), 'Missing in .claude/');
|
|
1061
|
+
assert.ok(fs.existsSync('.agent/mindforge/new-runtime.md'), 'Missing in .agent/');
|
|
1062
|
+
});
|
|
1063
|
+
|
|
1064
|
+
// ── Migration script ──────────────────────────────────────────────────────────
|
|
1065
|
+
console.log('\nMigration (v1.0.0 → v2.0.0):');
|
|
1066
|
+
|
|
1067
|
+
test('1.0.0-to-2.0.0.js migration script exists', () => {
|
|
1068
|
+
assert.ok(fs.existsSync('bin/migrations/1.0.0-to-2.0.0.js'), 'Migration script missing');
|
|
1069
|
+
});
|
|
1070
|
+
|
|
1071
|
+
test('migration script has correct fromVersion/toVersion', () => {
|
|
1072
|
+
const migration = require('../bin/migrations/1.0.0-to-2.0.0.js');
|
|
1073
|
+
assert.strictEqual(migration.fromVersion, '1.0.0', 'fromVersion must be 1.0.0');
|
|
1074
|
+
assert.strictEqual(migration.toVersion, '2.0.0', 'toVersion must be 2.0.0');
|
|
1075
|
+
});
|
|
1076
|
+
|
|
1077
|
+
test('migration adds autonomous_mode to HANDOFF.json', async () => {
|
|
1078
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mf-migrate-'));
|
|
1079
|
+
const origCwd = process.cwd();
|
|
1080
|
+
process.chdir(tmpDir);
|
|
1081
|
+
try {
|
|
1082
|
+
// Create a minimal v1.0.0 HANDOFF.json
|
|
1083
|
+
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
|
1084
|
+
fs.mkdirSync(path.join(tmpDir, '.mindforge', 'metrics'), { recursive: true });
|
|
1085
|
+
fs.writeFileSync(
|
|
1086
|
+
path.join(tmpDir, '.planning', 'HANDOFF.json'),
|
|
1087
|
+
JSON.stringify({ schema_version: '1.0.0', next_task: 'Plan 1', _warning: 'no secrets', context_refs: [], blockers: [], decisions_needed: [] })
|
|
1088
|
+
);
|
|
1089
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'AUDIT.jsonl'), '');
|
|
1090
|
+
|
|
1091
|
+
const migration = require('../bin/migrations/1.0.0-to-2.0.0.js');
|
|
1092
|
+
await migration.run({ verbose: false });
|
|
1093
|
+
|
|
1094
|
+
const updated = JSON.parse(fs.readFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'), 'utf8'));
|
|
1095
|
+
assert.ok(updated.autonomous_mode, 'Migration should add autonomous_mode');
|
|
1096
|
+
assert.strictEqual(updated.schema_version, '2.0.0', 'Migration should update schema_version to 2.0.0');
|
|
1097
|
+
assert.ok(updated.steering_queue_path, 'Migration should add steering_queue_path');
|
|
1098
|
+
assert.ok(updated.knowledge_base_path, 'Migration should add knowledge_base_path');
|
|
1099
|
+
} finally { process.chdir(origCwd); fs.rmSync(tmpDir, { recursive: true, force: true }); }
|
|
1100
|
+
});
|
|
1101
|
+
|
|
1102
|
+
test('migration creates auto-state.json', async () => {
|
|
1103
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mf-migrate2-'));
|
|
1104
|
+
const origCwd = process.cwd();
|
|
1105
|
+
process.chdir(tmpDir);
|
|
1106
|
+
try {
|
|
1107
|
+
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
|
1108
|
+
fs.mkdirSync(path.join(tmpDir, '.mindforge', 'metrics'), { recursive: true });
|
|
1109
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'),
|
|
1110
|
+
JSON.stringify({ schema_version: '1.0.0', next_task: '', _warning: 'no secrets', context_refs: [], blockers: [], decisions_needed: [] }));
|
|
1111
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'AUDIT.jsonl'), '');
|
|
1112
|
+
|
|
1113
|
+
const migration = require('../bin/migrations/1.0.0-to-2.0.0.js');
|
|
1114
|
+
await migration.run({ verbose: false });
|
|
1115
|
+
|
|
1116
|
+
assert.ok(fs.existsSync(path.join(tmpDir, '.planning', 'auto-state.json')),
|
|
1117
|
+
'Migration should create auto-state.json');
|
|
1118
|
+
const state = JSON.parse(fs.readFileSync(path.join(tmpDir, '.planning', 'auto-state.json'), 'utf8'));
|
|
1119
|
+
assert.strictEqual(state.status, 'idle', 'auto-state.json should initialize to idle');
|
|
1120
|
+
} finally { process.chdir(origCwd); fs.rmSync(tmpDir, { recursive: true, force: true }); }
|
|
1121
|
+
});
|
|
1122
|
+
|
|
1123
|
+
test('migration is additive-only (no data loss)', async () => {
|
|
1124
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mf-migrate3-'));
|
|
1125
|
+
const origCwd = process.cwd();
|
|
1126
|
+
process.chdir(tmpDir);
|
|
1127
|
+
try {
|
|
1128
|
+
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
|
1129
|
+
fs.mkdirSync(path.join(tmpDir, '.mindforge', 'metrics'), { recursive: true });
|
|
1130
|
+
const originalHandoff = {
|
|
1131
|
+
schema_version: '1.0.0',
|
|
1132
|
+
next_task: 'Run Plan 3-04',
|
|
1133
|
+
_warning: 'no secrets',
|
|
1134
|
+
context_refs: ['.planning/PROJECT.md'],
|
|
1135
|
+
blockers: [],
|
|
1136
|
+
decisions_needed: [],
|
|
1137
|
+
project: 'my-project', // Custom field that must survive migration
|
|
1138
|
+
custom_field: 'preserved',
|
|
1139
|
+
};
|
|
1140
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'), JSON.stringify(originalHandoff));
|
|
1141
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'AUDIT.jsonl'), '');
|
|
1142
|
+
|
|
1143
|
+
const migration = require('../bin/migrations/1.0.0-to-2.0.0.js');
|
|
1144
|
+
await migration.run({ verbose: false });
|
|
1145
|
+
|
|
1146
|
+
const migrated = JSON.parse(fs.readFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'), 'utf8'));
|
|
1147
|
+
// Original fields must be preserved
|
|
1148
|
+
assert.strictEqual(migrated.next_task, 'Run Plan 3-04', 'next_task must be preserved');
|
|
1149
|
+
assert.strictEqual(migrated.project, 'my-project', 'project field must be preserved');
|
|
1150
|
+
assert.strictEqual(migrated.custom_field, 'preserved', 'Custom fields must be preserved');
|
|
1151
|
+
assert.deepStrictEqual(migrated.context_refs, ['.planning/PROJECT.md'], 'context_refs must be preserved');
|
|
1152
|
+
} finally { process.chdir(origCwd); fs.rmSync(tmpDir, { recursive: true, force: true }); }
|
|
1153
|
+
});
|
|
1154
|
+
|
|
1155
|
+
// ── Production checklist ──────────────────────────────────────────────────────
|
|
1156
|
+
console.log('\nProduction checklist:');
|
|
1157
|
+
|
|
1158
|
+
test('production-checklist.md has 65 items', () => {
|
|
1159
|
+
const content = fs.readFileSync('.mindforge/production/production-checklist.md', 'utf8');
|
|
1160
|
+
// Count table rows with | A/B/C/D/E/F[0-9][0-9] | pattern
|
|
1161
|
+
const items = content.match(/^\| [A-F]\d{2} \|/gm) || [];
|
|
1162
|
+
assert.ok(items.length >= 65, `Expected ≥65 checklist items, found ${items.length}`);
|
|
1163
|
+
});
|
|
1164
|
+
|
|
1165
|
+
test('production-checklist.md has Section F (v2.0.0 features)', () => {
|
|
1166
|
+
const content = fs.readFileSync('.mindforge/production/production-checklist.md', 'utf8');
|
|
1167
|
+
assert.ok(content.includes('Section F'), 'Must have Section F');
|
|
1168
|
+
assert.ok(content.includes('F01'), 'Must have F01 item');
|
|
1169
|
+
assert.ok(content.includes('F15'), 'Must have F15 item');
|
|
1170
|
+
const fItems = (content.match(/^\| F\d{2} \|/gm) || []).length;
|
|
1171
|
+
assert.strictEqual(fItems, 15, `Section F must have exactly 15 items, found ${fItems}`);
|
|
1172
|
+
});
|
|
1173
|
+
|
|
1174
|
+
// ── All ADRs through ADR-041 ──────────────────────────────────────────────────
|
|
1175
|
+
console.log('\nADRs (all 41):');
|
|
1176
|
+
|
|
1177
|
+
test('all 41 ADRs exist in .planning/decisions/', () => {
|
|
1178
|
+
if (!fs.existsSync('.planning/decisions')) {
|
|
1179
|
+
console.log(' (skipping — .planning/decisions not present in dev environment)');
|
|
1180
|
+
return;
|
|
1181
|
+
}
|
|
1182
|
+
const adrs = fs.readdirSync('.planning/decisions').filter(f => f.startsWith('ADR-') && f.endsWith('.md'));
|
|
1183
|
+
const numbers = adrs.map(f => parseInt(f.match(/ADR-(\d+)/)?.[1] || '0', 10)).filter(n => n > 0);
|
|
1184
|
+
assert.ok(Math.max(...numbers) >= 41, `Max ADR number should be ≥41, got ${Math.max(...numbers)}`);
|
|
1185
|
+
assert.ok(adrs.length >= 41, `Expected ≥41 ADRs, found ${adrs.length}`);
|
|
1186
|
+
});
|
|
1187
|
+
|
|
1188
|
+
test('ADR decision index mentions all v2.0.0 ADRs', () => {
|
|
1189
|
+
const indexPath = 'docs/architecture/decision-records-index.md';
|
|
1190
|
+
if (!fs.existsSync(indexPath)) return; // Skip if docs not yet updated
|
|
1191
|
+
const content = fs.readFileSync(indexPath, 'utf8');
|
|
1192
|
+
assert.ok(content.includes('ADR-039') || content.includes('ADR-041'),
|
|
1193
|
+
'ADR index should reference v2.0.0 ADRs');
|
|
1194
|
+
});
|
|
1195
|
+
|
|
1196
|
+
// ── v2.0.0 component bins ────────────────────────────────────────────────────
|
|
1197
|
+
console.log('\nv2.0.0 component bins:');
|
|
1198
|
+
|
|
1199
|
+
const V2_BINS = [
|
|
1200
|
+
'bin/autonomous/headless.js',
|
|
1201
|
+
'bin/autonomous/repair-operator.js',
|
|
1202
|
+
'bin/autonomous/stuck-monitor.js',
|
|
1203
|
+
'bin/browser/browser-daemon.js',
|
|
1204
|
+
'bin/browser/visual-verify-executor.js',
|
|
1205
|
+
'bin/browser/qa-engine.js',
|
|
1206
|
+
'bin/models/model-client.js',
|
|
1207
|
+
'bin/models/model-router.js',
|
|
1208
|
+
'bin/models/cost-tracker.js',
|
|
1209
|
+
'bin/review/cross-review-engine.js',
|
|
1210
|
+
'bin/research/research-engine.js',
|
|
1211
|
+
'bin/memory/knowledge-store.js',
|
|
1212
|
+
'bin/memory/knowledge-indexer.js',
|
|
1213
|
+
'bin/memory/knowledge-capture.js',
|
|
1214
|
+
'bin/dashboard/server.js',
|
|
1215
|
+
'bin/dashboard/sse-bridge.js',
|
|
1216
|
+
'bin/dashboard/api-router.js',
|
|
1217
|
+
'bin/skills-builder/skill-generator.js',
|
|
1218
|
+
'bin/skills-builder/skill-scorer.js',
|
|
1219
|
+
'bin/skills-builder/source-loader.js',
|
|
1220
|
+
];
|
|
1221
|
+
|
|
1222
|
+
test(`all ${V2_BINS.length} v2.0.0 binary modules exist`, () => {
|
|
1223
|
+
const missing = V2_BINS.filter(b => !fs.existsSync(b));
|
|
1224
|
+
assert.strictEqual(missing.length, 0, `Missing v2 bins:\n ${missing.join('\n ')}`);
|
|
1225
|
+
});
|
|
1226
|
+
|
|
1227
|
+
// ── All 22 test suites ────────────────────────────────────────────────────────
|
|
1228
|
+
console.log('\nAll 22 test suites:');
|
|
1229
|
+
|
|
1230
|
+
const ALL_SUITES = [
|
|
1231
|
+
// v1.0.0 (15 suites)
|
|
1232
|
+
'install','wave-engine','audit','compaction','skills-platform',
|
|
1233
|
+
'integrations','governance','intelligence','metrics',
|
|
1234
|
+
'distribution','ci-mode','sdk','production','migration','e2e',
|
|
1235
|
+
// v2.0.0 additions (7 suites)
|
|
1236
|
+
'autonomous','browser','model-routing','memory','dashboard',
|
|
1237
|
+
'self-building-skills','release',
|
|
1238
|
+
];
|
|
1239
|
+
|
|
1240
|
+
assert.strictEqual(ALL_SUITES.length, 22);
|
|
1241
|
+
|
|
1242
|
+
test(`all ${ALL_SUITES.length} test suites exist in tests/`, () => {
|
|
1243
|
+
const missing = ALL_SUITES.filter(s => !fs.existsSync(`tests/${s}.test.js`));
|
|
1244
|
+
assert.strictEqual(missing.length, 0, `Missing test suites: ${missing.join(', ')}`);
|
|
1245
|
+
});
|
|
1246
|
+
|
|
1247
|
+
// ── SDK memory module ─────────────────────────────────────────────────────────
|
|
1248
|
+
console.log('\nSDK:');
|
|
1249
|
+
|
|
1250
|
+
test('sdk/src/memory.ts exists (Day 11 addition)', () => {
|
|
1251
|
+
assert.ok(fs.existsSync('sdk/src/memory.ts'), 'sdk/src/memory.ts must exist');
|
|
1252
|
+
});
|
|
1253
|
+
|
|
1254
|
+
test('sdk/src/memory.ts exports MindForgeMemory class', () => {
|
|
1255
|
+
const content = fs.readFileSync('sdk/src/memory.ts', 'utf8');
|
|
1256
|
+
assert.ok(content.includes('MindForgeMemory'), 'Must export MindForgeMemory class');
|
|
1257
|
+
assert.ok(content.includes('remember('), 'Must have remember() method');
|
|
1258
|
+
assert.ok(content.includes('query('), 'Must have query() method');
|
|
1259
|
+
});
|
|
1260
|
+
|
|
1261
|
+
// ── Network ports (all 3) ────────────────────────────────────────────────────
|
|
1262
|
+
console.log('\nNetwork ports (all localhost-only):');
|
|
1263
|
+
|
|
1264
|
+
test('SDK SSE binds to 127.0.0.1:7337', () => {
|
|
1265
|
+
const content = fs.readFileSync('sdk/src/events.ts', 'utf8');
|
|
1266
|
+
assert.ok(content.includes('7337'), 'SDK SSE should use port 7337');
|
|
1267
|
+
assert.ok(content.includes('127.0.0.1'), 'SDK SSE must bind to 127.0.0.1');
|
|
1268
|
+
});
|
|
1269
|
+
|
|
1270
|
+
test('Browser daemon uses port 7338 (localhost)', () => {
|
|
1271
|
+
const content = fs.readFileSync('bin/browser/browser-daemon.js', 'utf8');
|
|
1272
|
+
assert.ok(content.includes('7338'), 'Browser daemon should use port 7338');
|
|
1273
|
+
assert.ok(content.includes('127.0.0.1'), 'Browser daemon must bind to 127.0.0.1');
|
|
1274
|
+
});
|
|
1275
|
+
|
|
1276
|
+
test('Dashboard server uses port 7339 (localhost)', () => {
|
|
1277
|
+
const content = fs.readFileSync('bin/dashboard/server.js', 'utf8');
|
|
1278
|
+
assert.ok(content.includes('7339'), 'Dashboard should use port 7339');
|
|
1279
|
+
assert.ok(content.includes('127.0.0.1'), 'Dashboard must bind to 127.0.0.1');
|
|
1280
|
+
assert.ok(!content.includes("'0.0.0.0'"), 'Dashboard must NOT bind to 0.0.0.0');
|
|
1281
|
+
});
|
|
1282
|
+
|
|
1283
|
+
// ── Security: no secrets in codebase ─────────────────────────────────────────
|
|
1284
|
+
console.log('\nSecurity:');
|
|
1285
|
+
|
|
1286
|
+
test('no hardcoded API keys in bin/ or .mindforge/', () => {
|
|
1287
|
+
const { execSync } = require('child_process');
|
|
1288
|
+
try {
|
|
1289
|
+
const result = execSync(
|
|
1290
|
+
'grep -r --include="*.js" --include="*.ts" --include="*.md" ' +
|
|
1291
|
+
'-E "(sk-[a-zA-Z0-9]{20,}|AKIA[A-Z0-9]{16}|AIza[a-zA-Z0-9_-]{35})" ' +
|
|
1292
|
+
'bin/ .mindforge/ sdk/ 2>/dev/null || echo "CLEAN"',
|
|
1293
|
+
{ encoding: 'utf8' }
|
|
1294
|
+
);
|
|
1295
|
+
const lines = result.split('\n').filter(l => l && !l.includes('CLEAN') && !l.includes('TEST_ONLY') && !l.includes('example'));
|
|
1296
|
+
assert.strictEqual(lines.length, 0, `Found potential API keys:\n${lines.join('\n')}`);
|
|
1297
|
+
} catch { /* grep returning non-zero = clean */ }
|
|
1298
|
+
});
|
|
1299
|
+
|
|
1300
|
+
test('all server bindings checked — none on 0.0.0.0', () => {
|
|
1301
|
+
const serverFiles = [
|
|
1302
|
+
'bin/dashboard/server.js',
|
|
1303
|
+
'bin/browser/browser-daemon.js',
|
|
1304
|
+
'sdk/src/events.ts',
|
|
1305
|
+
];
|
|
1306
|
+
for (const f of serverFiles) {
|
|
1307
|
+
if (!fs.existsSync(f)) continue;
|
|
1308
|
+
const content = fs.readFileSync(f, 'utf8');
|
|
1309
|
+
assert.ok(!content.includes("'0.0.0.0'") && !content.includes('"0.0.0.0"'),
|
|
1310
|
+
`${f} must NOT bind to 0.0.0.0`);
|
|
1311
|
+
}
|
|
1312
|
+
});
|
|
1313
|
+
|
|
1314
|
+
// ── v2.0.0 MINDFORGE.md settings ─────────────────────────────────────────────
|
|
1315
|
+
console.log('\nMINDFORGE.md v2.0.0 settings:');
|
|
1316
|
+
|
|
1317
|
+
const REQUIRED_V2_SETTINGS = [
|
|
1318
|
+
'PLANNER_MODEL', 'EXECUTOR_MODEL', 'SECURITY_MODEL', 'RESEARCH_MODEL',
|
|
1319
|
+
'AUTO_MODE_DEFAULT_TIMEOUT_MINUTES', 'AUTO_NODE_REPAIR_BUDGET',
|
|
1320
|
+
'BROWSER_PORT', 'BROWSER_HEADLESS',
|
|
1321
|
+
'AUTO_CAPTURE_SKILLS', 'SKILL_QUALITY_MIN_SCORE',
|
|
1322
|
+
'MODEL_COST_HARD_LIMIT_USD',
|
|
1323
|
+
];
|
|
1324
|
+
|
|
1325
|
+
test('MINDFORGE.md has all required v2.0.0 settings', () => {
|
|
1326
|
+
const content = fs.readFileSync('MINDFORGE.md', 'utf8');
|
|
1327
|
+
const missing = REQUIRED_V2_SETTINGS.filter(s => !content.includes(s));
|
|
1328
|
+
assert.strictEqual(missing.length, 0, `Missing MINDFORGE.md settings: ${missing.join(', ')}`);
|
|
1329
|
+
});
|
|
1330
|
+
|
|
1331
|
+
// ── Results ───────────────────────────────────────────────────────────────────
|
|
1332
|
+
console.log(`\n${'═'.repeat(60)}`);
|
|
1333
|
+
console.log(`Release validation: ${passed} passed, ${failed} failed`);
|
|
1334
|
+
|
|
1335
|
+
if (failed > 0) {
|
|
1336
|
+
console.error(`\n❌ ${failed} release validation(s) failed.`);
|
|
1337
|
+
console.error(' v2.0.0 cannot be released until all pass.\n');
|
|
1338
|
+
process.exit(1);
|
|
1339
|
+
} else {
|
|
1340
|
+
console.log('\n✅ All release validations passed.');
|
|
1341
|
+
console.log(' MindForge v2.0.0 "The Autonomous Enterprise" is ready to ship.\n');
|
|
1342
|
+
}
|
|
1343
|
+
```
|
|
1344
|
+
|
|
1345
|
+
**Commit:**
|
|
1346
|
+
```bash
|
|
1347
|
+
git add tests/release.test.js
|
|
1348
|
+
git commit -m "test(v2-release): add release validation suite (22nd and final test suite)"
|
|
1349
|
+
```
|
|
1350
|
+
|
|
1351
|
+
---
|
|
1352
|
+
|
|
1353
|
+
## TASK 7 — Run the Full Test Battery × 3 Runs
|
|
1354
|
+
|
|
1355
|
+
```bash
|
|
1356
|
+
#!/usr/bin/env bash
|
|
1357
|
+
# Final pre-release test battery
|
|
1358
|
+
echo ""
|
|
1359
|
+
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
1360
|
+
echo "║ MindForge v2.0.0 — Final Test Battery × 3 ║"
|
|
1361
|
+
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
1362
|
+
|
|
1363
|
+
SUITES=(install wave-engine audit compaction skills-platform \
|
|
1364
|
+
integrations governance intelligence metrics \
|
|
1365
|
+
distribution ci-mode sdk production migration e2e \
|
|
1366
|
+
autonomous browser model-routing memory dashboard \
|
|
1367
|
+
self-building-skills release)
|
|
1368
|
+
|
|
1369
|
+
ALL_PASS=true
|
|
1370
|
+
|
|
1371
|
+
for RUN in 1 2 3; do
|
|
1372
|
+
echo ""
|
|
1373
|
+
echo " Run $RUN of 3"
|
|
1374
|
+
echo " ─────────────────────────────────────────────────────────"
|
|
1375
|
+
FAIL=0
|
|
1376
|
+
for s in "${SUITES[@]}"; do
|
|
1377
|
+
printf " %-35s" "${s}..."
|
|
1378
|
+
node tests/${s}.test.js 2>&1 | tail -1 | grep -q "passed" && echo "✅" || { echo "❌"; ((FAIL++)); ALL_PASS=false; }
|
|
1379
|
+
done
|
|
1380
|
+
[ "$FAIL" -gt 0 ] && echo " Run $RUN: $FAIL failure(s)" || echo " Run $RUN: All 22 passed ✅"
|
|
1381
|
+
done
|
|
1382
|
+
|
|
1383
|
+
echo ""
|
|
1384
|
+
$ALL_PASS && echo "✅ ALL 22 SUITES × 3 RUNS — RELEASE APPROVED" || { echo "❌ FAILURES — DO NOT RELEASE"; exit 1; }
|
|
1385
|
+
```
|
|
1386
|
+
|
|
1387
|
+
---
|
|
1388
|
+
|
|
1389
|
+
## TASK 8 — Update docs/architecture/decision-records-index.md
|
|
1390
|
+
|
|
1391
|
+
```bash
|
|
1392
|
+
cat >> docs/architecture/decision-records-index.md << 'EOF'
|
|
1393
|
+
|
|
1394
|
+
## v2.0.0 ADRs (Days 8-14)
|
|
1395
|
+
|
|
1396
|
+
| ADR | Title | Day |
|
|
1397
|
+
|---|---|---|
|
|
1398
|
+
| ADR-021 | Autonomy boundary: human steers intent, agent executes implementation | 8 |
|
|
1399
|
+
| ADR-022 | Node repair hierarchy: RETRY before DECOMPOSE before PRUNE | 8 |
|
|
1400
|
+
| ADR-023 | Gate 3 runs pre-commit in auto mode (not post-wave) | 8 |
|
|
1401
|
+
| ADR-024 | Browser daemon localhost-only (127.0.0.1) | 9 |
|
|
1402
|
+
| ADR-025 | `<verify-visual>` failure = `<verify>` failure for node repair | 9 |
|
|
1403
|
+
| ADR-026 | Session files gitignored — auth tokens never in git | 9 |
|
|
1404
|
+
| ADR-027 | Persona determines model; Tier 3 always overrides to SECURITY_MODEL | 10 |
|
|
1405
|
+
| ADR-028 | Adversarial second-reviewer prompt for cross-review | 10 |
|
|
1406
|
+
| ADR-029 | Gemini uses x-goog-api-key header (not URL query param) | 10 |
|
|
1407
|
+
| ADR-030 | Knowledge graph is append-only (deprecate, never delete) | 11 |
|
|
1408
|
+
| ADR-031 | Knowledge reinforcement on explicit acknowledgment, not on load | 11 |
|
|
1409
|
+
| ADR-032 | Global knowledge entries carry a 0.1 confidence penalty | 11 |
|
|
1410
|
+
| ADR-033 | Dashboard binds to localhost only (127.0.0.1) | 12 |
|
|
1411
|
+
| ADR-034 | Tier 3 dashboard approvals require typing the plan ID | 12 |
|
|
1412
|
+
| ADR-035 | AUDIT entry written before approval file update (fail-safe ordering) | 12 |
|
|
1413
|
+
| ADR-036 | Documentation is the authoritative source for skill content | 13 |
|
|
1414
|
+
| ADR-037 | Pattern frequency ≥ 2 tasks as the auto-capture threshold | 13 |
|
|
1415
|
+
| ADR-038 | Minimum quality score of 60 for skill registration | 13 |
|
|
1416
|
+
| ADR-039 | 6-runtime support via unified RUNTIMES config map | 14 |
|
|
1417
|
+
| ADR-040 | v2.0.0 migration is additive-only (no destructive schema changes) | 14 |
|
|
1418
|
+
| ADR-041 | v2.0.0 stable interface contract (all ports, schemas, commands stable in 2.x) | 14 |
|
|
1419
|
+
EOF
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
**Commit:**
|
|
1423
|
+
```bash
|
|
1424
|
+
git add docs/architecture/decision-records-index.md
|
|
1425
|
+
git commit -m "docs(v2-release): update ADR index with all 21 v2.0.0 ADRs (021-041)"
|
|
1426
|
+
```
|
|
1427
|
+
|
|
1428
|
+
---
|
|
1429
|
+
|
|
1430
|
+
## TASK 9 — Bump to v2.0.0 and create git tag
|
|
1431
|
+
|
|
1432
|
+
```bash
|
|
1433
|
+
# Final version bump
|
|
1434
|
+
node -e "
|
|
1435
|
+
const fs = require('fs');
|
|
1436
|
+
const p = JSON.parse(fs.readFileSync('package.json','utf8'));
|
|
1437
|
+
p.version = '2.0.0';
|
|
1438
|
+
fs.writeFileSync('package.json', JSON.stringify(p, null, 2) + '\n');
|
|
1439
|
+
console.log('Bumped to v2.0.0');
|
|
1440
|
+
"
|
|
1441
|
+
|
|
1442
|
+
# Final commit for the release
|
|
1443
|
+
git add package.json
|
|
1444
|
+
git commit -m "chore(release): bump to v2.0.0 — The Autonomous Enterprise"
|
|
1445
|
+
|
|
1446
|
+
# Tag the release
|
|
1447
|
+
git tag -a v2.0.0 -m "MindForge v2.0.0 — The Autonomous Enterprise
|
|
1448
|
+
|
|
1449
|
+
48 commands · 22 test suites · 41 ADRs · 9 personas · 10 skills · 6 runtimes · 3 ports
|
|
1450
|
+
|
|
1451
|
+
New in v2.0.0:
|
|
1452
|
+
- /mindforge:auto — walk-away autonomous execution with node repair
|
|
1453
|
+
- /mindforge:browse, /mindforge:qa — persistent browser runtime + visual QA
|
|
1454
|
+
- /mindforge:cross-review, /mindforge:research, /mindforge:costs — multi-model intelligence
|
|
1455
|
+
- /mindforge:remember — persistent knowledge graph across sessions
|
|
1456
|
+
- /mindforge:dashboard — real-time web UI at localhost:7339
|
|
1457
|
+
- /mindforge:learn, /mindforge:marketplace — self-building skills platform
|
|
1458
|
+
- 6 runtimes: Claude Code, Antigravity, Cursor, OpenCode, Gemini CLI, GitHub Copilot"
|
|
1459
|
+
|
|
1460
|
+
git push origin feat/mindforge-v2-release
|
|
1461
|
+
git push origin v2.0.0
|
|
1462
|
+
```
|
|
1463
|
+
|
|
1464
|
+
---
|
|
1465
|
+
|
|
1466
|
+
## TASK 10 — npm pack simulation (pre-publish verification)
|
|
1467
|
+
|
|
1468
|
+
```bash
|
|
1469
|
+
#!/usr/bin/env bash
|
|
1470
|
+
echo "npm publish simulation"
|
|
1471
|
+
echo "════════════════════════"
|
|
1472
|
+
|
|
1473
|
+
# Create the tarball
|
|
1474
|
+
npm pack --dry-run 2>&1 | head -30
|
|
1475
|
+
|
|
1476
|
+
# Check actual pack
|
|
1477
|
+
npm pack
|
|
1478
|
+
TARBALL=$(ls mindforge-cc-2.0.0.tgz 2>/dev/null)
|
|
1479
|
+
|
|
1480
|
+
if [ -z "$TARBALL" ]; then
|
|
1481
|
+
echo "❌ npm pack failed — tarball not created"
|
|
1482
|
+
exit 1
|
|
1483
|
+
fi
|
|
1484
|
+
|
|
1485
|
+
echo "✅ Tarball created: $TARBALL"
|
|
1486
|
+
echo " Size: $(du -sh $TARBALL | cut -f1)"
|
|
1487
|
+
|
|
1488
|
+
# Verify tarball contents
|
|
1489
|
+
echo ""
|
|
1490
|
+
echo "Tarball contents:"
|
|
1491
|
+
tar -tzf "$TARBALL" | grep -E "\.(js|ts|md|json)$" | head -40
|
|
1492
|
+
echo "..."
|
|
1493
|
+
|
|
1494
|
+
# Verify critical files are included
|
|
1495
|
+
REQUIRED_IN_PACK=(
|
|
1496
|
+
"package/bin/install.js"
|
|
1497
|
+
"package/bin/installer-core.js"
|
|
1498
|
+
"package/.claude/CLAUDE.md"
|
|
1499
|
+
"package/.mindforge/org/SECURITY.md"
|
|
1500
|
+
"package/CHANGELOG.md"
|
|
1501
|
+
)
|
|
1502
|
+
|
|
1503
|
+
for f in "${REQUIRED_IN_PACK[@]}"; do
|
|
1504
|
+
tar -tzf "$TARBALL" | grep -q "$f" && echo " ✅ $f" || echo " ❌ MISSING: $f"
|
|
1505
|
+
done
|
|
1506
|
+
|
|
1507
|
+
# Verify node_modules NOT in tarball
|
|
1508
|
+
NODE_MODULES=$(tar -tzf "$TARBALL" | grep "node_modules" | wc -l | tr -d ' ')
|
|
1509
|
+
[ "$NODE_MODULES" -eq 0 ] && echo "✅ node_modules not in tarball" || echo "❌ node_modules IN tarball — check .npmignore"
|
|
1510
|
+
|
|
1511
|
+
# Clean up
|
|
1512
|
+
rm -f mindforge-cc-2.0.0.tgz
|
|
1513
|
+
|
|
1514
|
+
echo ""
|
|
1515
|
+
echo "✅ npm pack simulation complete — ready to publish"
|
|
1516
|
+
echo " To publish: npm publish --access public"
|
|
1517
|
+
```
|
|
1518
|
+
|
|
1519
|
+
**Commit:**
|
|
1520
|
+
```bash
|
|
1521
|
+
git add .
|
|
1522
|
+
git commit -m "chore(v2-release): final pre-publish verification — all checks passed"
|
|
1523
|
+
```
|
|
1524
|
+
|
|
1525
|
+
---
|
|
1526
|
+
|
|
1527
|
+
# ═══════════════════════════════════════════════════════════════════════
|
|
1528
|
+
# PART 2 — REVIEW PROMPT
|
|
1529
|
+
# ═══════════════════════════════════════════════════════════════════════
|
|
1530
|
+
|
|
1531
|
+
---
|
|
1532
|
+
|
|
1533
|
+
## DAY 14 REVIEW
|
|
1534
|
+
|
|
1535
|
+
Activate **`architect.md` + `security-reviewer.md` + `release-manager.md`** simultaneously.
|
|
1536
|
+
|
|
1537
|
+
Day 14 risk profile (release-specific):
|
|
1538
|
+
1. **Migration data loss** — v1.0.0→v2.0.0 migration must be truly additive; any destructive operation loses user data
|
|
1539
|
+
2. **Runtime cross-contamination** — installer copying wrong files to wrong runtime directories
|
|
1540
|
+
3. **Tarball completeness** — npm pack missing critical files; or including sensitive files
|
|
1541
|
+
4. **Version contract breakage** — v2.0.0 commands accidentally breaking v1.0.0 workflows
|
|
1542
|
+
5. **Test suite inter-dependency** — test suites that pass individually but fail in sequence
|
|
1543
|
+
6. **ADR-041 contract completeness** — the v2.0.0 stable interface contract must be precisely defined
|
|
1544
|
+
|
|
1545
|
+
---
|
|
1546
|
+
|
|
1547
|
+
## REVIEW PASS 1 — Migration: Data Preservation
|
|
1548
|
+
|
|
1549
|
+
Read `bin/migrations/1.0.0-to-2.0.0.js` completely.
|
|
1550
|
+
|
|
1551
|
+
- [ ] **`run()` does not run backup before making changes.** The v1.0.0 migration (Day 7) created a backup before applying any changes. The v2.0.0 migration writes directly to HANDOFF.json and AUDIT.jsonl without backup. If the migration is interrupted mid-way (process kill, disk full), files are partially modified. Fix: "Follow the same backup pattern as `bin/migrations/migrate.js`: create backup copy of HANDOFF.json and AUDIT.jsonl before any writes, restore on exception."
|
|
1552
|
+
|
|
1553
|
+
- [ ] **AUDIT.jsonl backfill reads and rewrites the ENTIRE file.** For projects with large AUDIT.jsonl files (10K+ lines), this loads the entire file into memory, modifies it, and writes it back. This is an O(n) memory and disk operation. Fix: "Only backfill if needed: check the first entry in AUDIT.jsonl to see if it already has `model_used`. If it does, skip the backfill — it was already run or this is a v2.0.0 project."
|
|
1554
|
+
|
|
1555
|
+
- [ ] **`require('../bin/migrations/1.0.0-to-2.0.0.js')` in test file may cache the module.** The test calls the migration three times across different temp directories (`process.chdir(tmpDir)`), but `require()` caches modules. The migration module reads `process.cwd()` at call time — this should work correctly. But the `require` cache means if the migration uses any module-level state (it doesn't, but document this explicitly with a comment in the migration file).
|
|
1556
|
+
|
|
1557
|
+
---
|
|
1558
|
+
|
|
1559
|
+
## REVIEW PASS 2 — Multi-Runtime: Installer Correctness
|
|
1560
|
+
|
|
1561
|
+
Read the updated `bin/installer-core.js` completely.
|
|
1562
|
+
|
|
1563
|
+
- [ ] **Cursor runtime uses `supportsSlash: false` but the commands are still `.md` files.** If Cursor doesn't support /slash commands, installing 48 command files that use `/mindforge:cmd` syntax as `@mindforge-cmd` references may confuse users. Fix: "For non-slash runtimes (cursor, copilot), add a preamble to each command file explaining how to reference it: '# To use this command in Cursor: @[filename without .md]'."
|
|
1564
|
+
|
|
1565
|
+
- [ ] **`generateGeminiMd()` does a model string replacement on CLAUDE.md.** If the CLAUDE.md content doesn't have the expected model strings (they may not be hardcoded in CLAUDE.md — they're in MINDFORGE.md), the replacement produces the original file with no changes and no error. Fix: "Verify the replacement was meaningful: if the generated GEMINI.md is identical to CLAUDE.md after replacement, log a warning rather than silently writing a wrong file."
|
|
1566
|
+
|
|
1567
|
+
- [ ] **The RUNTIMES config has `detect()` functions but the installer does not call them automatically.** The detection functions are only useful if the installer auto-detects which runtimes are present. If the user doesn't specify `--runtime`, the installer should call `detect()` and suggest detected runtimes. Document: "Auto-detection is provided for future use; in v2.0.0 the user explicitly specifies `--runtime`. Auto-suggest is planned for v2.1.0."
|
|
1568
|
+
|
|
1569
|
+
---
|
|
1570
|
+
|
|
1571
|
+
## REVIEW PASS 3 — Production Checklist: Completeness
|
|
1572
|
+
|
|
1573
|
+
Read `.mindforge/production/production-checklist.md` completely.
|
|
1574
|
+
|
|
1575
|
+
- [ ] **Section F item F13 says "All 6 runtimes install correctly" but doesn't specify which test to run.** The verification column says only "Run installer with each runtime flag" — this needs to be more precise. Fix: "F13 verification: `node bin/install.js --runtime cursor --dry-run && node bin/install.js --runtime gemini --dry-run && node bin/install.js --runtime copilot --dry-run`"
|
|
1576
|
+
|
|
1577
|
+
- [ ] **The checklist has items F14 and F15 about regression and migration, but these are tested by E01-E03 (all 22 suites × 3 runs).** There is overlap between Section E and Section F for regression testing. This is intentional (belt-and-suspenders for a release gate) but should be documented to avoid confusion: "F14 and F15 are explicit human verification steps, not automated — they confirm that the human ran the tests and confirmed results."
|
|
1578
|
+
|
|
1579
|
+
---
|
|
1580
|
+
|
|
1581
|
+
## REVIEW PASS 4 — Release Test Suite: Coverage Gaps
|
|
1582
|
+
|
|
1583
|
+
Read `tests/release.test.js` completely.
|
|
1584
|
+
|
|
1585
|
+
- [ ] **Migration data preservation test uses `process.chdir()` which affects ALL subsequent tests in the same process.** If a test fails mid-chdir, the process may remain in the temp directory, causing all subsequent tests to fail with file-not-found errors. Fix: "Each migration test should use a `try/finally` block that always calls `process.chdir(origCwd)` regardless of test outcome — this is already done in the test, but add `p.cleanup()` call to ensure temp dirs are removed."
|
|
1586
|
+
|
|
1587
|
+
- [ ] **The "no hardcoded API keys" test uses `grep` which may not be available on Windows.** The test uses `execSync('grep -r ...')`. Fix: "Add a `try/catch` around the execSync call and skip the test gracefully on Windows: `if (process.platform === 'win32') { console.log(' (skipping — grep not available on Windows)'); return; }`"
|
|
1588
|
+
|
|
1589
|
+
- [ ] **Missing test: migration dry_run mode.** The migration has a `dry_run` parameter but no test verifies it actually prevents file writes. Add: "Test that calling `migration.run({ dry_run: true })` on a v1.0.0 HANDOFF.json leaves the file unchanged."
|
|
1590
|
+
|
|
1591
|
+
---
|
|
1592
|
+
|
|
1593
|
+
## REVIEW PASS 5 — ADR-041: Stable Interface Contract
|
|
1594
|
+
|
|
1595
|
+
Read the Day 14 ADR additions.
|
|
1596
|
+
|
|
1597
|
+
- [ ] **ADR-041 (v2.0.0 stable interface contract) is referenced but not fully defined.** Like ADR-020 (v1.0.0 contract), ADR-041 must precisely specify what is stable in v2.0.0 and cannot change without a MAJOR version bump. Ensure ADR-041 explicitly lists:
|
|
1598
|
+
- All 48 command names (stable — no renames without deprecation period)
|
|
1599
|
+
- All 3 network port numbers (7337, 7338, 7339 — stable)
|
|
1600
|
+
- HANDOFF.json schema fields that are stable
|
|
1601
|
+
- AUDIT.jsonl event types that are stable
|
|
1602
|
+
- SDK public exports that are stable
|
|
1603
|
+
- Plugin API version (stable)
|
|
1604
|
+
- SKILL.md frontmatter format (stable)
|
|
1605
|
+
|
|
1606
|
+
---
|
|
1607
|
+
|
|
1608
|
+
## REVIEW PASS 6 — CHANGELOG and Documentation Completeness
|
|
1609
|
+
|
|
1610
|
+
Read `CHANGELOG.md` v2.0.0 entry completely.
|
|
1611
|
+
|
|
1612
|
+
- [ ] **The CHANGELOG entry doesn't mention the specific breaking changes file locations.** Users upgrading from v1.0.0 need to know exactly what changed in their `.planning/` directory. Fix: "Add to breaking changes: 'See `bin/migrations/1.0.0-to-2.0.0.js` for the complete list of schema changes. Run `/mindforge:migrate --from 1.0.0 --to 2.0.0 --dry-run` to preview changes before applying.'"
|
|
1613
|
+
|
|
1614
|
+
- [ ] **`docs/reference/commands.md` should be updated to list all 48 commands but may still show 36.** Verify: "Check `docs/reference/commands.md` — it must list all 48 commands with v2 additions clearly marked as 'New in v2.0.0'."
|
|
1615
|
+
|
|
1616
|
+
---
|
|
1617
|
+
|
|
1618
|
+
## REVIEW SUMMARY TABLE
|
|
1619
|
+
|
|
1620
|
+
```
|
|
1621
|
+
## Day 14 Review Summary
|
|
1622
|
+
|
|
1623
|
+
| Category | BLOCKING | MAJOR | MINOR | SUGGESTION |
|
|
1624
|
+
|-------------------------|----------|-------|-------|------------|
|
|
1625
|
+
| Migration Safety | | | | |
|
|
1626
|
+
| Multi-Runtime Installer | | | | |
|
|
1627
|
+
| Production Checklist | | | | |
|
|
1628
|
+
| Release Test Suite | | | | |
|
|
1629
|
+
| ADR-041 Contract | | | | |
|
|
1630
|
+
| CHANGELOG/Docs | | | | |
|
|
1631
|
+
| **TOTAL** | | | | |
|
|
1632
|
+
|
|
1633
|
+
## Verdict
|
|
1634
|
+
[ ] ✅ APPROVED — Proceed to HARDEN section
|
|
1635
|
+
[ ] ⚠️ APPROVED WITH CONDITIONS
|
|
1636
|
+
[ ] ❌ NOT APPROVED — DO NOT RELEASE
|
|
1637
|
+
```
|
|
1638
|
+
|
|
1639
|
+
---
|
|
1640
|
+
|
|
1641
|
+
# ═══════════════════════════════════════════════════════════════════════
|
|
1642
|
+
# PART 3 — HARDENING PROMPT
|
|
1643
|
+
# ═══════════════════════════════════════════════════════════════════════
|
|
1644
|
+
|
|
1645
|
+
---
|
|
1646
|
+
|
|
1647
|
+
## DAY 14 HARDENING
|
|
1648
|
+
|
|
1649
|
+
Activate **`security-reviewer.md` + `release-manager.md` + `architect.md`** simultaneously.
|
|
1650
|
+
|
|
1651
|
+
```bash
|
|
1652
|
+
# Confirm all 22 suites pass before hardening
|
|
1653
|
+
for suite in install wave-engine audit compaction skills-platform \
|
|
1654
|
+
integrations governance intelligence metrics \
|
|
1655
|
+
distribution ci-mode sdk production migration e2e \
|
|
1656
|
+
autonomous browser model-routing memory dashboard \
|
|
1657
|
+
self-building-skills release; do
|
|
1658
|
+
printf " %-35s" "${suite}..."
|
|
1659
|
+
node tests/${suite}.test.js 2>&1 | tail -1
|
|
1660
|
+
done
|
|
1661
|
+
```
|
|
1662
|
+
|
|
1663
|
+
---
|
|
1664
|
+
|
|
1665
|
+
## HARDEN 1 — Add backup/restore to migration script
|
|
1666
|
+
|
|
1667
|
+
Update `bin/migrations/1.0.0-to-2.0.0.js`:
|
|
1668
|
+
|
|
1669
|
+
```javascript
|
|
1670
|
+
// Add backup at the top of run():
|
|
1671
|
+
async function run(context = {}) {
|
|
1672
|
+
const { dry_run = false, verbose = false } = context;
|
|
1673
|
+
const log = msg => verbose && console.log(` [1.0.0→2.0.0] ${msg}`);
|
|
1674
|
+
const changes = [];
|
|
1675
|
+
|
|
1676
|
+
// ── BACKUP before any writes (consistent with migrate.js pattern) ──────────
|
|
1677
|
+
const backupDir = path.join(PLANNING_DIR, '.migration-backup-2.0.0');
|
|
1678
|
+
if (!dry_run) {
|
|
1679
|
+
fs.mkdirSync(backupDir, { recursive: true });
|
|
1680
|
+
|
|
1681
|
+
const filesToBackup = [
|
|
1682
|
+
path.join(PLANNING_DIR, 'HANDOFF.json'),
|
|
1683
|
+
path.join(PLANNING_DIR, 'AUDIT.jsonl'),
|
|
1684
|
+
path.join(MFDIR, 'metrics', 'token-usage.jsonl'),
|
|
1685
|
+
].filter(f => fs.existsSync(f));
|
|
1686
|
+
|
|
1687
|
+
for (const f of filesToBackup) {
|
|
1688
|
+
const backupPath = path.join(backupDir, path.basename(f));
|
|
1689
|
+
fs.copyFileSync(f, backupPath);
|
|
1690
|
+
log(`Backed up: ${path.relative(process.cwd(), f)}`);
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1694
|
+
try {
|
|
1695
|
+
// ... existing migration logic unchanged ...
|
|
1696
|
+
return { success: true, changes, version_from: '1.0.0', version_to: '2.0.0' };
|
|
1697
|
+
} catch (err) {
|
|
1698
|
+
// Restore from backup on failure
|
|
1699
|
+
if (!dry_run && fs.existsSync(backupDir)) {
|
|
1700
|
+
for (const f of fs.readdirSync(backupDir)) {
|
|
1701
|
+
const backupPath = path.join(backupDir, f);
|
|
1702
|
+
const originalPath = f === 'HANDOFF.json' || f === 'AUDIT.jsonl'
|
|
1703
|
+
? path.join(PLANNING_DIR, f)
|
|
1704
|
+
: path.join(MFDIR, 'metrics', f);
|
|
1705
|
+
fs.copyFileSync(backupPath, originalPath);
|
|
1706
|
+
log(`Restored from backup: ${f}`);
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
throw err;
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
```
|
|
1713
|
+
|
|
1714
|
+
**Commit:**
|
|
1715
|
+
```bash
|
|
1716
|
+
git add bin/migrations/1.0.0-to-2.0.0.js
|
|
1717
|
+
git commit -m "harden(v2-release): add backup/restore to v2.0.0 migration script"
|
|
1718
|
+
```
|
|
1719
|
+
|
|
1720
|
+
---
|
|
1721
|
+
|
|
1722
|
+
## HARDEN 2 — Add AUDIT.jsonl smart backfill (skip if already v2)
|
|
1723
|
+
|
|
1724
|
+
Update backfill logic in migration:
|
|
1725
|
+
|
|
1726
|
+
```javascript
|
|
1727
|
+
// Replace the AUDIT.jsonl backfill section:
|
|
1728
|
+
const auditPath = path.join(PLANNING_DIR, 'AUDIT.jsonl');
|
|
1729
|
+
if (fs.existsSync(auditPath)) {
|
|
1730
|
+
const content = fs.readFileSync(auditPath, 'utf8');
|
|
1731
|
+
const firstLine = content.split('\n').find(l => l.trim());
|
|
1732
|
+
|
|
1733
|
+
if (firstLine) {
|
|
1734
|
+
try {
|
|
1735
|
+
const firstEntry = JSON.parse(firstLine);
|
|
1736
|
+
// SMART SKIP: if first entry already has model_used, this is already v2
|
|
1737
|
+
if (firstEntry.model_used !== undefined) {
|
|
1738
|
+
log('AUDIT.jsonl already has v2 fields — skipping backfill');
|
|
1739
|
+
// Do NOT add to changes
|
|
1740
|
+
} else {
|
|
1741
|
+
// Needs backfill
|
|
1742
|
+
const lines = content.split('\n').filter(Boolean);
|
|
1743
|
+
const updated = lines.map(line => {
|
|
1744
|
+
try {
|
|
1745
|
+
const entry = JSON.parse(line);
|
|
1746
|
+
if (entry.model_used === undefined) entry.model_used = 'unknown';
|
|
1747
|
+
if (entry.node_repair === undefined) entry.node_repair = false;
|
|
1748
|
+
return JSON.stringify(entry);
|
|
1749
|
+
} catch { return line; }
|
|
1750
|
+
});
|
|
1751
|
+
if (!dry_run) fs.writeFileSync(auditPath, updated.join('\n') + '\n');
|
|
1752
|
+
log(`Backfilled ${lines.length} AUDIT.jsonl entries`);
|
|
1753
|
+
changes.push(`AUDIT.jsonl: backfilled ${lines.length} entries`);
|
|
1754
|
+
}
|
|
1755
|
+
} catch { /* malformed first line — skip backfill silently */ }
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
```
|
|
1759
|
+
|
|
1760
|
+
**Commit:**
|
|
1761
|
+
```bash
|
|
1762
|
+
git add bin/migrations/1.0.0-to-2.0.0.js
|
|
1763
|
+
git commit -m "harden(v2-release): smart AUDIT.jsonl backfill — skip if already v2"
|
|
1764
|
+
```
|
|
1765
|
+
|
|
1766
|
+
---
|
|
1767
|
+
|
|
1768
|
+
## HARDEN 3 — Write the full ADR-041 (v2.0.0 stable interface contract)
|
|
1769
|
+
|
|
1770
|
+
### `.planning/decisions/ADR-041-v2-stable-interface-contract.md`
|
|
1771
|
+
|
|
1772
|
+
```markdown
|
|
1773
|
+
# ADR-041: v2.0.0 Stable Interface Contract
|
|
1774
|
+
|
|
1775
|
+
**Status:** Accepted | **Date:** v2.0.0 | **Day:** 14
|
|
1776
|
+
|
|
1777
|
+
## Context
|
|
1778
|
+
Like ADR-020 defined the v1.0.0 stable contract, this ADR defines exactly what
|
|
1779
|
+
is stable in v2.0.0 and cannot change without a MAJOR version bump (to 3.0.0).
|
|
1780
|
+
|
|
1781
|
+
## Decision
|
|
1782
|
+
|
|
1783
|
+
### Stable: Command names (all 48)
|
|
1784
|
+
The following command names are stable. They may not be renamed, removed, or
|
|
1785
|
+
have their core behaviour changed without a deprecation period of at least
|
|
1786
|
+
one minor version:
|
|
1787
|
+
```
|
|
1788
|
+
v1.0.0 (36): help, init-project, plan-phase, execute-phase, verify-phase, ship,
|
|
1789
|
+
next, quick, status, debug, skills, review, security-scan, map-codebase,
|
|
1790
|
+
discuss-phase, audit, milestone, complete-milestone, approve, sync-jira,
|
|
1791
|
+
sync-confluence, health, retrospective, profile-team, metrics, init-org,
|
|
1792
|
+
install-skill, publish-skill, pr-review, workspace, benchmark, update,
|
|
1793
|
+
migrate, plugins, tokens, release
|
|
1794
|
+
|
|
1795
|
+
v2.0.0 additions (12): auto, steer, browse, qa, cross-review, research, costs,
|
|
1796
|
+
remember, dashboard, learn, marketplace, new-runtime
|
|
1797
|
+
```
|
|
1798
|
+
|
|
1799
|
+
### Stable: Network ports
|
|
1800
|
+
- 7337: SDK SSE event stream — stable in 2.x
|
|
1801
|
+
- 7338: Browser daemon HTTP API — stable in 2.x
|
|
1802
|
+
- 7339: Dashboard server — stable in 2.x
|
|
1803
|
+
|
|
1804
|
+
### Stable: HANDOFF.json schema fields
|
|
1805
|
+
All fields present in schema_version: "2.0.0" are stable.
|
|
1806
|
+
Fields may be added (minor version), but not removed or renamed (major version).
|
|
1807
|
+
Core stable fields: schema_version, next_task, _warning, context_refs, blockers,
|
|
1808
|
+
decisions_needed, phase, plan, recent_commits, recent_files, autonomous_mode,
|
|
1809
|
+
steering_queue_path, knowledge_base_path.
|
|
1810
|
+
|
|
1811
|
+
### Stable: AUDIT.jsonl event types
|
|
1812
|
+
These event types are stable — consumers may rely on them:
|
|
1813
|
+
task_started, task_completed, task_failed, security_finding, quality_gate_failed,
|
|
1814
|
+
context_compaction, phase_completed, decision_recorded, phase_execution_started,
|
|
1815
|
+
phase_execution_completed, skill_learned, model_routed, approval_granted,
|
|
1816
|
+
approval_rejected, dashboard_started, memory_applied, cross_review_completed.
|
|
1817
|
+
New event types may be added (minor version).
|
|
1818
|
+
|
|
1819
|
+
### Stable: SDK public exports (sdk/src/index.ts)
|
|
1820
|
+
MindForgeClient, MindForgeEventStream, MindForgeMemory, and all TypeScript
|
|
1821
|
+
interfaces exported from sdk/src/index.ts are stable in 2.x.
|
|
1822
|
+
Internal modules (not exported via index.ts) are NOT stable.
|
|
1823
|
+
|
|
1824
|
+
### Stable: Plugin API version
|
|
1825
|
+
plugin_api_version: "2.0.0" is stable — plugins targeting 2.x will work
|
|
1826
|
+
on any 2.x version.
|
|
1827
|
+
|
|
1828
|
+
### Stable: SKILL.md frontmatter format
|
|
1829
|
+
The SKILL.md frontmatter schema (name, version, status, triggers, description)
|
|
1830
|
+
is stable in 2.x. New frontmatter fields may be added (minor version).
|
|
1831
|
+
|
|
1832
|
+
### Stable: PLAN XML fields
|
|
1833
|
+
All XML tags in PLAN files (<task>, <n>, <persona>, <files>, <context>,
|
|
1834
|
+
<action>, <verify>, <verify-visual>, <dependencies>, <done>) are stable.
|
|
1835
|
+
|
|
1836
|
+
### NOT stable in 2.x (may change in minor versions)
|
|
1837
|
+
- Internal `bin/` module APIs (used by CLI only)
|
|
1838
|
+
- `.mindforge/` spec file contents (engine/governance/intelligence specs)
|
|
1839
|
+
- Dashboard HTML/CSS/JS structure
|
|
1840
|
+
- HANDOFF.json optional fields added by v2 features
|
|
1841
|
+
|
|
1842
|
+
## Consequences
|
|
1843
|
+
Plugins targeting v2.0.0 will work on v2.1.0, v2.2.0, etc.
|
|
1844
|
+
v1.0.0 projects can upgrade to v2.x without breaking any existing workflows.
|
|
1845
|
+
Developers building integrations on the SDK TypeScript types can rely on them
|
|
1846
|
+
through all 2.x releases.
|
|
1847
|
+
```
|
|
1848
|
+
|
|
1849
|
+
**Commit:**
|
|
1850
|
+
```bash
|
|
1851
|
+
git add .planning/decisions/ADR-041-v2-stable-interface-contract.md
|
|
1852
|
+
git commit -m "docs(adr): add ADR-041 v2.0.0 stable interface contract"
|
|
1853
|
+
```
|
|
1854
|
+
|
|
1855
|
+
---
|
|
1856
|
+
|
|
1857
|
+
## HARDEN 4 — Add migration dry_run test and grep platform guard
|
|
1858
|
+
|
|
1859
|
+
```javascript
|
|
1860
|
+
// Add to tests/release.test.js:
|
|
1861
|
+
|
|
1862
|
+
console.log('\nHardening tests:');
|
|
1863
|
+
|
|
1864
|
+
test('migration dry_run leaves HANDOFF.json unchanged', async () => {
|
|
1865
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mf-dryrun-'));
|
|
1866
|
+
const origCwd = process.cwd();
|
|
1867
|
+
process.chdir(tmpDir);
|
|
1868
|
+
try {
|
|
1869
|
+
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
|
1870
|
+
fs.mkdirSync(path.join(tmpDir, '.mindforge', 'metrics'), { recursive: true });
|
|
1871
|
+
const originalContent = JSON.stringify({
|
|
1872
|
+
schema_version: '1.0.0', next_task: 'preserved', _warning: 'no secrets', context_refs: [], blockers: [], decisions_needed: []
|
|
1873
|
+
});
|
|
1874
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'), originalContent);
|
|
1875
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'AUDIT.jsonl'), '');
|
|
1876
|
+
|
|
1877
|
+
const migration = require('../bin/migrations/1.0.0-to-2.0.0.js');
|
|
1878
|
+
await migration.run({ dry_run: true, verbose: false });
|
|
1879
|
+
|
|
1880
|
+
// File must be unchanged
|
|
1881
|
+
const afterContent = fs.readFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'), 'utf8');
|
|
1882
|
+
assert.strictEqual(afterContent, originalContent, 'dry_run must not modify HANDOFF.json');
|
|
1883
|
+
} finally { process.chdir(origCwd); fs.rmSync(tmpDir, { recursive: true, force: true }); }
|
|
1884
|
+
});
|
|
1885
|
+
|
|
1886
|
+
test('migration smart backfill skips AUDIT.jsonl already having v2 fields', async () => {
|
|
1887
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mf-smart-'));
|
|
1888
|
+
const origCwd = process.cwd();
|
|
1889
|
+
process.chdir(tmpDir);
|
|
1890
|
+
try {
|
|
1891
|
+
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
|
1892
|
+
fs.mkdirSync(path.join(tmpDir, '.mindforge', 'metrics'), { recursive: true });
|
|
1893
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'HANDOFF.json'),
|
|
1894
|
+
JSON.stringify({ schema_version: '1.0.0', next_task: '', _warning: 'no secrets', context_refs: [], blockers: [], decisions_needed: [] }));
|
|
1895
|
+
// AUDIT.jsonl already has model_used (simulates previously migrated)
|
|
1896
|
+
const alreadyV2 = JSON.stringify({ id: 'abc', timestamp: '2026-01-01T00:00:00Z', event: 'task_completed', agent: 'test', session_id: 's1', model_used: 'claude-sonnet-4-6', node_repair: false });
|
|
1897
|
+
fs.writeFileSync(path.join(tmpDir, '.planning', 'AUDIT.jsonl'), alreadyV2 + '\n');
|
|
1898
|
+
|
|
1899
|
+
const migration = require('../bin/migrations/1.0.0-to-2.0.0.js');
|
|
1900
|
+
const result = await migration.run({ verbose: false });
|
|
1901
|
+
|
|
1902
|
+
// Should NOT have 'AUDIT.jsonl: backfilled' in changes
|
|
1903
|
+
const backfillChange = result.changes.find(c => c.includes('AUDIT.jsonl: backfilled'));
|
|
1904
|
+
assert.ok(!backfillChange, 'Smart backfill should skip AUDIT.jsonl that already has v2 fields');
|
|
1905
|
+
} finally { process.chdir(origCwd); fs.rmSync(tmpDir, { recursive: true, force: true }); }
|
|
1906
|
+
});
|
|
1907
|
+
```
|
|
1908
|
+
|
|
1909
|
+
**Commit:**
|
|
1910
|
+
```bash
|
|
1911
|
+
git add tests/release.test.js
|
|
1912
|
+
git commit -m "test(v2-release): add dry_run and smart backfill skip tests"
|
|
1913
|
+
```
|
|
1914
|
+
|
|
1915
|
+
---
|
|
1916
|
+
|
|
1917
|
+
## HARDEN 5 — Write final ADRs (ADR-039 and ADR-040)
|
|
1918
|
+
|
|
1919
|
+
### `.planning/decisions/ADR-039-6-runtime-support.md`
|
|
1920
|
+
|
|
1921
|
+
```markdown
|
|
1922
|
+
# ADR-039: 6-runtime support via unified RUNTIMES config map
|
|
1923
|
+
|
|
1924
|
+
**Status:** Accepted | **Date:** v2.0.0 | **Day:** 14
|
|
1925
|
+
|
|
1926
|
+
## Context
|
|
1927
|
+
MindForge v1.0.0 supported Claude Code and Antigravity via hardcoded paths
|
|
1928
|
+
in the installer. How should additional runtimes be added?
|
|
1929
|
+
|
|
1930
|
+
## Decision
|
|
1931
|
+
All runtime configurations are defined in a single RUNTIMES map in
|
|
1932
|
+
`bin/installer-core.js`. Each entry specifies: id, displayName, globalDir,
|
|
1933
|
+
localDir, commandsSubdir, entryFile, commandFormat, supportsSlash,
|
|
1934
|
+
detect function, description, installDocs, and optional notes.
|
|
1935
|
+
|
|
1936
|
+
## Rationale
|
|
1937
|
+
A config-driven approach (vs. per-runtime code) means:
|
|
1938
|
+
1. New runtimes require only a new config entry + an entry file generator
|
|
1939
|
+
2. The installer logic is runtime-agnostic
|
|
1940
|
+
3. auto-detection is unified (each runtime has a `detect()` function)
|
|
1941
|
+
4. Tests can enumerate all runtimes from the config map
|
|
1942
|
+
|
|
1943
|
+
## Consequences
|
|
1944
|
+
Adding a 7th runtime (e.g., Zed, Void) requires only a RUNTIMES entry.
|
|
1945
|
+
The `/mindforge:new-runtime` command lets teams add custom runtime support
|
|
1946
|
+
without modifying the core installer.
|
|
1947
|
+
```
|
|
1948
|
+
|
|
1949
|
+
### `.planning/decisions/ADR-040-migration-additive-only.md`
|
|
1950
|
+
|
|
1951
|
+
```markdown
|
|
1952
|
+
# ADR-040: v2.0.0 migration is additive-only — no destructive schema changes
|
|
1953
|
+
|
|
1954
|
+
**Status:** Accepted | **Date:** v2.0.0 | **Day:** 14
|
|
1955
|
+
|
|
1956
|
+
## Context
|
|
1957
|
+
How should v1.0.0→v2.0.0 migration handle schema changes?
|
|
1958
|
+
|
|
1959
|
+
## Decision
|
|
1960
|
+
All v2.0.0 schema changes are additive. The migration adds new fields to
|
|
1961
|
+
existing files but never removes, renames, or modifies existing field values.
|
|
1962
|
+
If a field already exists with a non-null value, it is preserved unchanged.
|
|
1963
|
+
|
|
1964
|
+
## Rationale
|
|
1965
|
+
Destructive migration operations are irreversible without a backup.
|
|
1966
|
+
Additive-only means:
|
|
1967
|
+
1. Migration is safe to run multiple times (idempotent for new fields)
|
|
1968
|
+
2. Rollback is trivial (remove the added fields, done)
|
|
1969
|
+
3. v1.0.0 tools can still read v2.0.0 files (graceful degradation)
|
|
1970
|
+
4. Custom fields in user HANDOFF.json files are never touched
|
|
1971
|
+
|
|
1972
|
+
## Implementation
|
|
1973
|
+
- `autonomous_mode`, `steering_queue_path`, `knowledge_base_path` are ADDED to HANDOFF.json
|
|
1974
|
+
- `model_used`, `node_repair` are ADDED to existing AUDIT.jsonl entries (backfill)
|
|
1975
|
+
- `cost_usd` is ADDED to token-usage.jsonl entries (backfill with null)
|
|
1976
|
+
- Nothing is deleted, renamed, or overwritten with different semantics
|
|
1977
|
+
|
|
1978
|
+
## Consequences
|
|
1979
|
+
The migration can be re-run safely on already-migrated projects (smart skip).
|
|
1980
|
+
Teams who customised their HANDOFF.json schema do not lose custom fields.
|
|
1981
|
+
All changes are verified by `tests/release.test.js` migration data preservation test.
|
|
1982
|
+
```
|
|
1983
|
+
|
|
1984
|
+
**Commit:**
|
|
1985
|
+
```bash
|
|
1986
|
+
git add .planning/decisions/ADR-039*.md .planning/decisions/ADR-040*.md
|
|
1987
|
+
git commit -m "docs(adr): add ADR-039 6-runtime config, ADR-040 additive-only migration"
|
|
1988
|
+
```
|
|
1989
|
+
|
|
1990
|
+
---
|
|
1991
|
+
|
|
1992
|
+
## HARDEN 6 — Update docs/reference/commands.md with all 48 commands
|
|
1993
|
+
|
|
1994
|
+
```bash
|
|
1995
|
+
# Verify the commands reference is current
|
|
1996
|
+
grep -c "^## /mindforge:" docs/reference/commands.md 2>/dev/null | tr -d ' '
|
|
1997
|
+
# Must be >= 48
|
|
1998
|
+
|
|
1999
|
+
# If not, add v2.0.0 commands section:
|
|
2000
|
+
cat >> docs/reference/commands.md << 'EOF'
|
|
2001
|
+
|
|
2002
|
+
---
|
|
2003
|
+
|
|
2004
|
+
## v2.0.0 Commands (New in "The Autonomous Enterprise")
|
|
2005
|
+
|
|
2006
|
+
### /mindforge:auto
|
|
2007
|
+
Walk-away autonomous execution mode. See `auto.md` for full documentation.
|
|
2008
|
+
|
|
2009
|
+
### /mindforge:steer
|
|
2010
|
+
Mid-execution guidance injection. See `steer.md`.
|
|
2011
|
+
|
|
2012
|
+
### /mindforge:browse
|
|
2013
|
+
Persistent browser control with session management. See `browse.md`.
|
|
2014
|
+
|
|
2015
|
+
### /mindforge:qa
|
|
2016
|
+
Visual QA against affected routes. See `qa.md`.
|
|
2017
|
+
|
|
2018
|
+
### /mindforge:cross-review
|
|
2019
|
+
Multi-model adversarial code review. See `cross-review.md`.
|
|
2020
|
+
|
|
2021
|
+
### /mindforge:research
|
|
2022
|
+
Deep research via Gemini 1M context window. See `research.md`.
|
|
2023
|
+
|
|
2024
|
+
### /mindforge:costs
|
|
2025
|
+
Real-time cost tracking dashboard. See `costs.md`.
|
|
2026
|
+
|
|
2027
|
+
### /mindforge:remember
|
|
2028
|
+
Persistent knowledge graph management. See `remember.md`.
|
|
2029
|
+
|
|
2030
|
+
### /mindforge:dashboard
|
|
2031
|
+
Real-time web observability dashboard. See `dashboard.md`.
|
|
2032
|
+
|
|
2033
|
+
### /mindforge:learn
|
|
2034
|
+
Convert any documentation into a reusable skill. See `learn.md`.
|
|
2035
|
+
|
|
2036
|
+
### /mindforge:marketplace
|
|
2037
|
+
Community skills marketplace. See `marketplace.md`.
|
|
2038
|
+
|
|
2039
|
+
### /mindforge:new-runtime
|
|
2040
|
+
Scaffold support for a new AI coding runtime. See `new-runtime.md`.
|
|
2041
|
+
EOF
|
|
2042
|
+
```
|
|
2043
|
+
|
|
2044
|
+
**Commit:**
|
|
2045
|
+
```bash
|
|
2046
|
+
git add docs/reference/commands.md
|
|
2047
|
+
git commit -m "docs(v2-release): update commands reference with all 48 v2.0.0 commands"
|
|
2048
|
+
```
|
|
2049
|
+
|
|
2050
|
+
---
|
|
2051
|
+
|
|
2052
|
+
## HARDEN 7 — Final × 3 test battery and release verification
|
|
2053
|
+
|
|
2054
|
+
```bash
|
|
2055
|
+
#!/usr/bin/env bash
|
|
2056
|
+
echo ""
|
|
2057
|
+
echo "╔══════════════════════════════════════════════════════════════════╗"
|
|
2058
|
+
echo "║ MindForge v2.0.0 — FINAL RELEASE VERIFICATION ║"
|
|
2059
|
+
echo "╚══════════════════════════════════════════════════════════════════╝"
|
|
2060
|
+
echo ""
|
|
2061
|
+
|
|
2062
|
+
PASS=true
|
|
2063
|
+
|
|
2064
|
+
# ── Version check ──────────────────────────────────────────────────────────────
|
|
2065
|
+
V=$(node -e "console.log(require('./package.json').version)")
|
|
2066
|
+
[[ "${V}" == "2.0.0" ]] && echo " Version: ${V} ✅" || { echo " ❌ Version is ${V}, must be 2.0.0"; PASS=false; }
|
|
2067
|
+
|
|
2068
|
+
# ── Command counts ─────────────────────────────────────────────────────────────
|
|
2069
|
+
CLAUDE_CMDS=$(ls .claude/commands/mindforge/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
2070
|
+
AGENT_CMDS=$(ls .agent/mindforge/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
2071
|
+
[ "$CLAUDE_CMDS" -eq 48 ] && echo " .claude commands: ${CLAUDE_CMDS} ✅" || { echo " ❌ .claude commands: ${CLAUDE_CMDS} (expected 48)"; PASS=false; }
|
|
2072
|
+
[ "$AGENT_CMDS" -eq 48 ] && echo " .agent commands: ${AGENT_CMDS} ✅" || { echo " ❌ .agent commands: ${AGENT_CMDS} (expected 48)"; PASS=false; }
|
|
2073
|
+
|
|
2074
|
+
# ── Test battery × 3 ──────────────────────────────────────────────────────────
|
|
2075
|
+
SUITES=(install wave-engine audit compaction skills-platform \
|
|
2076
|
+
integrations governance intelligence metrics \
|
|
2077
|
+
distribution ci-mode sdk production migration e2e \
|
|
2078
|
+
autonomous browser model-routing memory dashboard \
|
|
2079
|
+
self-building-skills release)
|
|
2080
|
+
|
|
2081
|
+
for RUN in 1 2 3; do
|
|
2082
|
+
echo ""
|
|
2083
|
+
echo " ── Test run ${RUN}/3 ──────────────────────────────────────────────"
|
|
2084
|
+
FAIL=0
|
|
2085
|
+
for s in "${SUITES[@]}"; do
|
|
2086
|
+
printf " %-35s" "${s}..."
|
|
2087
|
+
node tests/${s}.test.js 2>&1 | tail -1 | grep -q "passed" && echo "✅" || { echo "❌"; ((FAIL++)); PASS=false; }
|
|
2088
|
+
done
|
|
2089
|
+
[ "$FAIL" -gt 0 ] && echo " ❌ Run ${RUN}: ${FAIL} failure(s)" || echo " ✅ Run ${RUN}: All 22 passed"
|
|
2090
|
+
done
|
|
2091
|
+
|
|
2092
|
+
# ── Security checks ────────────────────────────────────────────────────────────
|
|
2093
|
+
echo ""
|
|
2094
|
+
echo " ── Security ──────────────────────────────────────────────────────"
|
|
2095
|
+
|
|
2096
|
+
# No 0.0.0.0 bindings
|
|
2097
|
+
UNSAFE=$(grep -r "0\.0\.0\.0" bin/dashboard/ bin/browser/ sdk/ 2>/dev/null | grep -v "#" | grep -v "//" || true)
|
|
2098
|
+
[ -z "$UNSAFE" ] && echo " Localhost-only bindings ✅" || { echo " ❌ 0.0.0.0 binding found"; PASS=false; }
|
|
2099
|
+
|
|
2100
|
+
# No API keys in code
|
|
2101
|
+
KEYS=$(grep -r --include="*.js" -E "sk-[a-zA-Z0-9]{20,}" bin/ 2>/dev/null | grep -v "TEST_ONLY\|example\|REDACTED" || true)
|
|
2102
|
+
[ -z "$KEYS" ] && echo " No hardcoded API keys ✅" || { echo " ❌ Potential API keys found"; PASS=false; }
|
|
2103
|
+
|
|
2104
|
+
# ── CHANGELOG ─────────────────────────────────────────────────────────────────
|
|
2105
|
+
echo ""
|
|
2106
|
+
echo " ── Documentation ─────────────────────────────────────────────────"
|
|
2107
|
+
head -3 CHANGELOG.md | grep -q "2.0.0" && echo " CHANGELOG has v2.0.0 entry ✅" || { echo " ❌ CHANGELOG missing v2.0.0"; PASS=false; }
|
|
2108
|
+
|
|
2109
|
+
ADRS=$(ls .planning/decisions/ADR-*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
2110
|
+
[ "$ADRS" -ge 41 ] && echo " ADRs: ${ADRS} ✅" || { echo " ❌ ADRs: ${ADRS} (expected ≥41)"; PASS=false; }
|
|
2111
|
+
|
|
2112
|
+
# ── Final verdict ──────────────────────────────────────────────────────────────
|
|
2113
|
+
echo ""
|
|
2114
|
+
echo "══════════════════════════════════════════════════════════════════"
|
|
2115
|
+
if $PASS; then
|
|
2116
|
+
echo " ✅✅✅ ALL CHECKS PASSED — v2.0.0 RELEASE APPROVED ✅✅✅"
|
|
2117
|
+
echo ""
|
|
2118
|
+
echo " Next steps:"
|
|
2119
|
+
echo " git tag -a v2.0.0 -m 'The Autonomous Enterprise'"
|
|
2120
|
+
echo " git push origin v2.0.0"
|
|
2121
|
+
echo " npm publish --access public"
|
|
2122
|
+
else
|
|
2123
|
+
echo " ❌ RELEASE BLOCKED — Fix failures above before releasing v2.0.0"
|
|
2124
|
+
exit 1
|
|
2125
|
+
fi
|
|
2126
|
+
```
|
|
2127
|
+
|
|
2128
|
+
**Final commit:**
|
|
2129
|
+
```bash
|
|
2130
|
+
git add .
|
|
2131
|
+
git commit -m "harden(v2-release): final release hardening — backup in migration, ADR-041 contract, test fixes"
|
|
2132
|
+
git push origin feat/mindforge-v2-release
|
|
2133
|
+
```
|
|
2134
|
+
|
|
2135
|
+
---
|
|
2136
|
+
|
|
2137
|
+
## TASK 11 — Create Final v2.0.0 State File
|
|
2138
|
+
|
|
2139
|
+
Create `MINDFORGE-STATE-V2.md` as the authoritative context file for anyone
|
|
2140
|
+
continuing work after v2.0.0 ships:
|
|
2141
|
+
|
|
2142
|
+
```bash
|
|
2143
|
+
# The state file is the MINDFORGE-STATE-DAY12.md from the previous session,
|
|
2144
|
+
# updated with Day 13 and Day 14 additions.
|
|
2145
|
+
# See MINDFORGE-STATE-DAY12.md for the full day-by-day history.
|
|
2146
|
+
# This brief state file provides the Day 14-onwards quick context.
|
|
2147
|
+
```
|
|
2148
|
+
|
|
2149
|
+
```markdown
|
|
2150
|
+
# MINDFORGE-STATE-V2.md
|
|
2151
|
+
# Post-release state for v2.0.0 "The Autonomous Enterprise"
|
|
2152
|
+
# Use this file to start any new work after the v2.0.0 release
|
|
2153
|
+
|
|
2154
|
+
## Version: 2.0.0 (stable release)
|
|
2155
|
+
## Branch: main (post-merge)
|
|
2156
|
+
|
|
2157
|
+
## What was shipped in v2.0.0
|
|
2158
|
+
(see CHANGELOG.md ## [2.0.0] for complete list)
|
|
2159
|
+
|
|
2160
|
+
## Metrics
|
|
2161
|
+
- Commands: 48 (36 v1.0.0 + 12 v2.0.0)
|
|
2162
|
+
- Test suites: 22
|
|
2163
|
+
- ADRs: 41
|
|
2164
|
+
- Personas: 9
|
|
2165
|
+
- Core skills: 10
|
|
2166
|
+
- Runtimes: 6
|
|
2167
|
+
- Network ports: 3 (7337/7338/7339)
|
|
2168
|
+
- npm: mindforge-cc@2.0.0
|
|
2169
|
+
|
|
2170
|
+
## Known gaps for v2.1.0
|
|
2171
|
+
1. SDK TypeScript compilation — sdk/dist/ still not built
|
|
2172
|
+
2. Windows path handling — not validated on Windows
|
|
2173
|
+
3. Runtime auto-detection — detect() functions exist but not used in installer
|
|
2174
|
+
4. Lazy file reading enforcement — still advisory
|
|
2175
|
+
5. True parallel wave execution in interactive mode — still sequential
|
|
2176
|
+
6. Dashboard knowledge graph as force-directed graph — still a list view
|
|
2177
|
+
7. PLAN XML format — should migrate to YAML (MAJOR breaking change, deferred to v3.0.0)
|
|
2178
|
+
|
|
2179
|
+
## v2.1.0 roadmap candidates
|
|
2180
|
+
- SDK TypeScript build pipeline (npx tsc in sdk/)
|
|
2181
|
+
- Runtime auto-detection in installer (suggest detected runtimes)
|
|
2182
|
+
- Dashboard WebSocket upgrade (vs current SSE for full bidirectional)
|
|
2183
|
+
- Skills: session_quality_lift computation (requires telemetry system)
|
|
2184
|
+
- /mindforge:auto --milestone M across multiple phases
|
|
2185
|
+
- Windows path handling validation and fix
|
|
2186
|
+
```
|
|
2187
|
+
|
|
2188
|
+
**Commit:**
|
|
2189
|
+
```bash
|
|
2190
|
+
git add MINDFORGE-STATE-V2.md
|
|
2191
|
+
git commit -m "docs(v2-release): add post-release v2.0.0 state file for continuation"
|
|
2192
|
+
git push origin feat/mindforge-v2-release
|
|
2193
|
+
```
|
|
2194
|
+
|
|
2195
|
+
---
|
|
2196
|
+
|
|
2197
|
+
## DAY 14 COMPLETE — v2.0.0 SHIPPED
|
|
2198
|
+
|
|
2199
|
+
| Component | Status |
|
|
2200
|
+
|---|---|
|
|
2201
|
+
| Multi-runtime (6): Claude, Antigravity, Cursor, OpenCode, Gemini, Copilot | ✅ |
|
|
2202
|
+
| `/mindforge:new-runtime` command (48th command) | ✅ |
|
|
2203
|
+
| v1.0.0→v2.0.0 migration script (additive-only, with backup) | ✅ |
|
|
2204
|
+
| 65-point production checklist (50 + 15 new Section F items) | ✅ |
|
|
2205
|
+
| Complete v2.0.0 CHANGELOG | ✅ |
|
|
2206
|
+
| Full test battery × 3 runs — all 22 suites | ✅ |
|
|
2207
|
+
| `tests/release.test.js` (22nd and final suite) | ✅ |
|
|
2208
|
+
| ADR-039 (6-runtime config), ADR-040 (additive migration), ADR-041 (stable contract) | ✅ |
|
|
2209
|
+
| npm pack simulation — tarball integrity verified | ✅ |
|
|
2210
|
+
| git tag v2.0.0 — "The Autonomous Enterprise" | ✅ |
|
|
2211
|
+
| MINDFORGE-STATE-V2.md — post-release continuation file | ✅ |
|
|
2212
|
+
|
|
2213
|
+
---
|
|
2214
|
+
|
|
2215
|
+
## FINAL v2.0.0 METRICS
|
|
2216
|
+
|
|
2217
|
+
| Metric | v1.0.0 | v2.0.0 | Change |
|
|
2218
|
+
|---|---|---|---|
|
|
2219
|
+
| Commands | 36 | 48 | +12 |
|
|
2220
|
+
| Core skills | 10 | 10 + ∞ marketplace | |
|
|
2221
|
+
| Agent personas | 8 | 9 | +1 (research-agent) |
|
|
2222
|
+
| ADRs | 20 | 41 | +21 |
|
|
2223
|
+
| Test suites | 15 | 22 | +7 |
|
|
2224
|
+
| Runtimes | 2 | 6 | +4 |
|
|
2225
|
+
| Network ports | 1 | 3 | +2 |
|
|
2226
|
+
| Binary modules | ~12 | ~40 | +28 |
|
|
2227
|
+
| SDK modules | 5 | 6 (+memory.ts) | +1 |
|
|
2228
|
+
| npm package | mindforge-cc@1.0.0 | mindforge-cc@2.0.0 | |
|
|
2229
|
+
|
|
2230
|
+
---
|
|
2231
|
+
|
|
2232
|
+
## THE v2.0.0 COMPETITIVE POSITION
|
|
2233
|
+
|
|
2234
|
+
> **"The only agentic framework that is simultaneously enterprise-grade AND
|
|
2235
|
+
> autonomously capable. Everything else is either enterprise without autonomy,
|
|
2236
|
+
> or autonomous without enterprise."**
|
|
2237
|
+
|
|
2238
|
+
| Capability | MindForge v2 | MindForge v2 | BMAD v6 | Superpowers | gstack |
|
|
2239
|
+
|---|---|---|---|---|---|
|
|
2240
|
+
| Autonomous walk-away mode | ✅✅ | ✅ | ❌ | ❌ | ❌ |
|
|
2241
|
+
| Node repair / stuck recovery | ✅✅ | ✅ | ❌ | ❌ | ❌ |
|
|
2242
|
+
| Persistent browser runtime | ✅✅ | ❌ | ❌ | ❌ | ✅ |
|
|
2243
|
+
| Cross-model code review | ✅✅ | ❌ | ❌ | ❌ | ✅ |
|
|
2244
|
+
| Enterprise governance | ✅✅✅ | ❌ | Partial | ❌ | ❌ |
|
|
2245
|
+
| Persistent long-term memory | ✅✅ | ❌ | ❌ | ❌ | ❌ |
|
|
2246
|
+
| Real-time web dashboard | ✅✅ | ❌ | ❌ | ❌ | Partial |
|
|
2247
|
+
| Self-building skills | ✅✅ | ❌ | ❌ | ✅ | ❌ |
|
|
2248
|
+
| Multi-runtime support | ✅✅ (6) | ✅ (6+) | ✅ (4+) | ✅ (5+) | ✅ (1) |
|
|
2249
|
+
| TypeScript SDK | ✅✅ | ❌ | ❌ | ❌ | ❌ |
|
|
2250
|
+
| Jira/Confluence/Slack | ✅✅ | ❌ | ❌ | ❌ | ❌ |
|
|
2251
|
+
|
|
2252
|
+
**MindForge v2.0.0 — "The Autonomous Enterprise"**
|
|
2253
|
+
**Branch:** `feat/mindforge-v2-release`
|
|
2254
|
+
**Tag:** `v2.0.0`
|
|
2255
|
+
**npm:** `mindforge-cc@2.0.0`
|