mindforge-cc 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/CLAUDE.md +462 -0
- package/.agent/forge/help.md +7 -0
- package/.agent/forge/init-project.md +32 -0
- package/.agent/forge/plan-phase.md +30 -0
- package/.agent/mindforge/approve.md +18 -0
- package/.agent/mindforge/audit.md +30 -0
- package/.agent/mindforge/benchmark.md +33 -0
- package/.agent/mindforge/complete-milestone.md +18 -0
- package/.agent/mindforge/debug.md +126 -0
- package/.agent/mindforge/discuss-phase.md +138 -0
- package/.agent/mindforge/execute-phase.md +165 -0
- package/.agent/mindforge/health.md +21 -0
- package/.agent/mindforge/help.md +23 -0
- package/.agent/mindforge/init-org.md +131 -0
- package/.agent/mindforge/init-project.md +155 -0
- package/.agent/mindforge/install-skill.md +15 -0
- package/.agent/mindforge/map-codebase.md +298 -0
- package/.agent/mindforge/metrics.md +22 -0
- package/.agent/mindforge/migrate.md +40 -0
- package/.agent/mindforge/milestone.md +12 -0
- package/.agent/mindforge/next.md +105 -0
- package/.agent/mindforge/plan-phase.md +125 -0
- package/.agent/mindforge/plugins.md +40 -0
- package/.agent/mindforge/pr-review.md +41 -0
- package/.agent/mindforge/profile-team.md +23 -0
- package/.agent/mindforge/publish-skill.md +19 -0
- package/.agent/mindforge/quick.md +135 -0
- package/.agent/mindforge/release.md +10 -0
- package/.agent/mindforge/retrospective.md +26 -0
- package/.agent/mindforge/review.md +157 -0
- package/.agent/mindforge/security-scan.md +233 -0
- package/.agent/mindforge/ship.md +100 -0
- package/.agent/mindforge/skills.md +141 -0
- package/.agent/mindforge/status.md +104 -0
- package/.agent/mindforge/sync-confluence.md +11 -0
- package/.agent/mindforge/sync-jira.md +12 -0
- package/.agent/mindforge/tokens.md +8 -0
- package/.agent/mindforge/update.md +42 -0
- package/.agent/mindforge/verify-phase.md +62 -0
- package/.agent/mindforge/workspace.md +29 -0
- package/.claude/CLAUDE.md +462 -0
- package/.claude/commands/forge/help.md +7 -0
- package/.claude/commands/forge/init-project.md +32 -0
- package/.claude/commands/forge/plan-phase.md +30 -0
- package/.claude/commands/mindforge/approve.md +18 -0
- package/.claude/commands/mindforge/audit.md +30 -0
- package/.claude/commands/mindforge/benchmark.md +33 -0
- package/.claude/commands/mindforge/complete-milestone.md +18 -0
- package/.claude/commands/mindforge/debug.md +126 -0
- package/.claude/commands/mindforge/discuss-phase.md +138 -0
- package/.claude/commands/mindforge/execute-phase.md +165 -0
- package/.claude/commands/mindforge/health.md +21 -0
- package/.claude/commands/mindforge/help.md +23 -0
- package/.claude/commands/mindforge/init-org.md +131 -0
- package/.claude/commands/mindforge/init-project.md +155 -0
- package/.claude/commands/mindforge/install-skill.md +15 -0
- package/.claude/commands/mindforge/map-codebase.md +298 -0
- package/.claude/commands/mindforge/metrics.md +22 -0
- package/.claude/commands/mindforge/migrate.md +40 -0
- package/.claude/commands/mindforge/milestone.md +12 -0
- package/.claude/commands/mindforge/next.md +105 -0
- package/.claude/commands/mindforge/plan-phase.md +125 -0
- package/.claude/commands/mindforge/plugins.md +40 -0
- package/.claude/commands/mindforge/pr-review.md +41 -0
- package/.claude/commands/mindforge/profile-team.md +23 -0
- package/.claude/commands/mindforge/publish-skill.md +19 -0
- package/.claude/commands/mindforge/quick.md +135 -0
- package/.claude/commands/mindforge/release.md +10 -0
- package/.claude/commands/mindforge/retrospective.md +26 -0
- package/.claude/commands/mindforge/review.md +157 -0
- package/.claude/commands/mindforge/security-scan.md +233 -0
- package/.claude/commands/mindforge/ship.md +100 -0
- package/.claude/commands/mindforge/skills.md +141 -0
- package/.claude/commands/mindforge/status.md +104 -0
- package/.claude/commands/mindforge/sync-confluence.md +11 -0
- package/.claude/commands/mindforge/sync-jira.md +12 -0
- package/.claude/commands/mindforge/tokens.md +8 -0
- package/.claude/commands/mindforge/update.md +42 -0
- package/.claude/commands/mindforge/verify-phase.md +62 -0
- package/.claude/commands/mindforge/workspace.md +29 -0
- package/.forge/org/CONVENTIONS.md +0 -0
- package/.forge/org/ORG.md +0 -0
- package/.forge/org/SECURITY.md +0 -0
- package/.forge/org/TOOLS.md +0 -0
- package/.forge/personas/analyst.md +0 -0
- package/.forge/personas/architect.md +0 -0
- package/.forge/personas/debug-specialist.md +0 -0
- package/.forge/personas/developer.md +26 -0
- package/.forge/personas/qa-engineer.md +0 -0
- package/.forge/personas/release-manager.md +0 -0
- package/.forge/personas/security-reviewer.md +33 -0
- package/.forge/personas/tech-writer.md +0 -0
- package/.forge/skills/api-design/SKILL.md +0 -0
- package/.forge/skills/code-quality/SKILL.md +0 -0
- package/.forge/skills/documentation/SKILL.md +0 -0
- package/.forge/skills/security-review/SKILL.md +23 -0
- package/.forge/skills/testing-standards/SKILL.md +27 -0
- package/.github/workflows/mindforge-ci.yml +224 -0
- package/.gitlab-ci-mindforge.yml +18 -0
- package/.mindforge/MINDFORGE-SCHEMA.json +165 -0
- package/.mindforge/audit/AUDIT-SCHEMA.md +451 -0
- package/.mindforge/ci/ci-config-schema.md +21 -0
- package/.mindforge/ci/ci-mode.md +179 -0
- package/.mindforge/ci/github-actions-adapter.md +224 -0
- package/.mindforge/ci/gitlab-ci-adapter.md +31 -0
- package/.mindforge/ci/jenkins-adapter.md +44 -0
- package/.mindforge/distribution/registry-client.md +166 -0
- package/.mindforge/distribution/registry-schema.md +96 -0
- package/.mindforge/distribution/skill-publisher.md +44 -0
- package/.mindforge/distribution/skill-validator.md +74 -0
- package/.mindforge/engine/compaction-protocol.md +182 -0
- package/.mindforge/engine/context-injector.md +128 -0
- package/.mindforge/engine/dependency-parser.md +113 -0
- package/.mindforge/engine/skills/conflict-resolver.md +69 -0
- package/.mindforge/engine/skills/loader.md +184 -0
- package/.mindforge/engine/skills/registry.md +98 -0
- package/.mindforge/engine/skills/versioning.md +75 -0
- package/.mindforge/engine/verification-pipeline.md +111 -0
- package/.mindforge/engine/wave-executor.md +235 -0
- package/.mindforge/governance/GOVERNANCE-CONFIG.md +17 -0
- package/.mindforge/governance/approval-workflow.md +37 -0
- package/.mindforge/governance/change-classifier.md +63 -0
- package/.mindforge/governance/compliance-gates.md +31 -0
- package/.mindforge/integrations/confluence.md +27 -0
- package/.mindforge/integrations/connection-manager.md +163 -0
- package/.mindforge/integrations/github.md +25 -0
- package/.mindforge/integrations/gitlab.md +13 -0
- package/.mindforge/integrations/jira.md +102 -0
- package/.mindforge/integrations/slack.md +41 -0
- package/.mindforge/intelligence/antipattern-detector.md +75 -0
- package/.mindforge/intelligence/difficulty-scorer.md +55 -0
- package/.mindforge/intelligence/health-engine.md +208 -0
- package/.mindforge/intelligence/skill-gap-analyser.md +40 -0
- package/.mindforge/intelligence/smart-compaction.md +71 -0
- package/.mindforge/metrics/METRICS-SCHEMA.md +42 -0
- package/.mindforge/metrics/quality-tracker.md +32 -0
- package/.mindforge/monorepo/cross-package-planner.md +114 -0
- package/.mindforge/monorepo/dependency-graph-builder.md +32 -0
- package/.mindforge/monorepo/workspace-detector.md +129 -0
- package/.mindforge/org/CONVENTIONS.md +62 -0
- package/.mindforge/org/ORG.md +51 -0
- package/.mindforge/org/SECURITY.md +50 -0
- package/.mindforge/org/TOOLS.md +53 -0
- package/.mindforge/org/integrations/INTEGRATIONS-CONFIG.md +58 -0
- package/.mindforge/org/skills/MANIFEST.md +38 -0
- package/.mindforge/personas/analyst.md +52 -0
- package/.mindforge/personas/architect.md +75 -0
- package/.mindforge/personas/debug-specialist.md +52 -0
- package/.mindforge/personas/developer.md +85 -0
- package/.mindforge/personas/overrides/README.md +85 -0
- package/.mindforge/personas/qa-engineer.md +61 -0
- package/.mindforge/personas/release-manager.md +76 -0
- package/.mindforge/personas/security-reviewer.md +91 -0
- package/.mindforge/personas/tech-writer.md +51 -0
- package/.mindforge/plugins/PLUGINS-MANIFEST.md +23 -0
- package/.mindforge/plugins/plugin-loader.md +93 -0
- package/.mindforge/plugins/plugin-registry.md +44 -0
- package/.mindforge/plugins/plugin-schema.md +68 -0
- package/.mindforge/pr-review/ai-reviewer.md +266 -0
- package/.mindforge/pr-review/finding-formatter.md +46 -0
- package/.mindforge/pr-review/review-prompt-templates.md +44 -0
- package/.mindforge/production/compatibility-layer.md +39 -0
- package/.mindforge/production/migration-engine.md +52 -0
- package/.mindforge/production/production-checklist.md +165 -0
- package/.mindforge/production/token-optimiser.md +68 -0
- package/.mindforge/skills/accessibility/SKILL.md +106 -0
- package/.mindforge/skills/api-design/SKILL.md +98 -0
- package/.mindforge/skills/code-quality/SKILL.md +88 -0
- package/.mindforge/skills/data-privacy/SKILL.md +126 -0
- package/.mindforge/skills/database-patterns/SKILL.md +192 -0
- package/.mindforge/skills/documentation/SKILL.md +91 -0
- package/.mindforge/skills/incident-response/SKILL.md +180 -0
- package/.mindforge/skills/performance/SKILL.md +120 -0
- package/.mindforge/skills/security-review/SKILL.md +83 -0
- package/.mindforge/skills/testing-standards/SKILL.md +97 -0
- package/.mindforge/team/TEAM-PROFILE.md +42 -0
- package/.mindforge/team/multi-handoff.md +23 -0
- package/.mindforge/team/profiles/README.md +13 -0
- package/.mindforge/team/session-merger.md +18 -0
- package/.planning/ARCHITECTURE.md +0 -0
- package/.planning/AUDIT.jsonl +0 -0
- package/.planning/HANDOFF.json +28 -0
- package/.planning/PROJECT.md +33 -0
- package/.planning/RELEASE-CHECKLIST.md +68 -0
- package/.planning/REQUIREMENTS.md +0 -0
- package/.planning/ROADMAP.md +0 -0
- package/.planning/STATE.md +31 -0
- package/.planning/approvals/.gitkeep +1 -0
- package/.planning/archive/.gitkeep +1 -0
- package/.planning/audit-archive/.gitkeep +1 -0
- package/.planning/decisions/.gitkeep +0 -0
- package/.planning/decisions/ADR-001-handoff-tracking.md +41 -0
- package/.planning/decisions/ADR-002-markdown-commands.md +46 -0
- package/.planning/decisions/ADR-003-skills-trigger-model.md +37 -0
- package/.planning/decisions/ADR-004-wave-parallelism-model.md +45 -0
- package/.planning/decisions/ADR-005-append-only-audit-log.md +51 -0
- package/.planning/decisions/ADR-006-tiered-skills-system.md +22 -0
- package/.planning/decisions/ADR-007-trigger-keyword-model.md +22 -0
- package/.planning/decisions/ADR-008-just-in-time-skill-loading.md +29 -0
- package/.planning/decisions/ADR-009-enterprise-integration-retry-policy.md +8 -0
- package/.planning/decisions/ADR-010-governance-tier-escalation.md +8 -0
- package/.planning/decisions/ADR-011-multi-developer-handoff-contract.md +8 -0
- package/.planning/decisions/ADR-012-intelligence-feedback-loops.md +19 -0
- package/.planning/decisions/ADR-013-mindforge-md-constitution.md +16 -0
- package/.planning/decisions/ADR-014-metrics-as-signals-not-evaluation.md +15 -0
- package/.planning/decisions/ADR-015-npm-based-skill-registry.md +26 -0
- package/.planning/decisions/ADR-016-ci-exit-code-0-on-timeout.md +27 -0
- package/.planning/decisions/ADR-017-sdk-localhost-only.md +28 -0
- package/.planning/decisions/ADR-018-installer-self-install-detection.md +15 -0
- package/.planning/decisions/ADR-019-self-update-scope-preservation.md +14 -0
- package/.planning/decisions/ADR-020-v1.0.0-stable-interface-contract.md +23 -0
- package/.planning/jira-sync.json +9 -0
- package/.planning/milestones/.gitkeep +1 -0
- package/.planning/phases/day1/REVIEW-DAY1.md +50 -0
- package/.planning/phases/day1/SECURITY-REVIEW-DAY1.md +15 -0
- package/.planning/phases/day2/REVIEW-DAY2.md +521 -0
- package/.planning/phases/day3/REVIEW-DAY3.md +234 -0
- package/.planning/slack-threads.json +6 -0
- package/CHANGELOG.md +175 -0
- package/LICENSE +21 -0
- package/MINDFORGE.md +76 -0
- package/README.md +182 -0
- package/RELEASENOTES.md +41 -0
- package/SECURITY.md +4 -0
- package/bin/install.js +120 -0
- package/bin/installer-core.js +292 -0
- package/bin/migrations/0.1.0-to-0.5.0.js +37 -0
- package/bin/migrations/0.5.0-to-0.6.0.js +17 -0
- package/bin/migrations/0.6.0-to-1.0.0.js +100 -0
- package/bin/migrations/migrate.js +151 -0
- package/bin/migrations/schema-versions.js +64 -0
- package/bin/updater/changelog-fetcher.js +62 -0
- package/bin/updater/self-update.js +169 -0
- package/bin/updater/version-comparator.js +68 -0
- package/bin/validate-config.js +92 -0
- package/bin/wizard/config-generator.js +112 -0
- package/bin/wizard/environment-detector.js +76 -0
- package/bin/wizard/setup-wizard.js +237 -0
- package/docs/Context/Master-Context.md +701 -0
- package/docs/architecture/README.md +35 -0
- package/docs/architecture/decision-records-index.md +26 -0
- package/docs/ci-cd-integration.md +30 -0
- package/docs/ci-quickstart.md +78 -0
- package/docs/commands-reference.md +11 -0
- package/docs/contributing/CONTRIBUTING.md +38 -0
- package/docs/contributing/plugin-authoring.md +50 -0
- package/docs/contributing/skill-authoring.md +41 -0
- package/docs/enterprise-setup.md +25 -0
- package/docs/faq.md +38 -0
- package/docs/getting-started.md +36 -0
- package/docs/governance-guide.md +23 -0
- package/docs/mindforge-md-reference.md +53 -0
- package/docs/monorepo-guide.md +26 -0
- package/docs/persona-customisation.md +56 -0
- package/docs/quick-verify.md +33 -0
- package/docs/reference/audit-events.md +53 -0
- package/docs/reference/commands.md +82 -0
- package/docs/reference/config-reference.md +64 -0
- package/docs/reference/sdk-api.md +48 -0
- package/docs/reference/skills-api.md +57 -0
- package/docs/release-checklist-guide.md +37 -0
- package/docs/requirements.md +29 -0
- package/docs/sdk-reference.md +27 -0
- package/docs/security/SECURITY.md +42 -0
- package/docs/security/penetration-test-results.md +31 -0
- package/docs/security/threat-model.md +142 -0
- package/docs/skills-authoring-guide.md +119 -0
- package/docs/skills-publishing-guide.md +21 -0
- package/docs/team-setup-guide.md +21 -0
- package/docs/troubleshooting.md +119 -0
- package/docs/tutorial.md +195 -0
- package/docs/upgrade.md +44 -0
- package/docs/user-guide.md +131 -0
- package/docs/usp-features.md +214 -0
- package/eslint.config.mjs +31 -0
- package/examples/starter-project/.planning/AUDIT.jsonl +1 -0
- package/examples/starter-project/.planning/HANDOFF.json +23 -0
- package/examples/starter-project/.planning/PROJECT.md +27 -0
- package/examples/starter-project/.planning/STATE.md +10 -0
- package/examples/starter-project/MINDFORGE.md +40 -0
- package/examples/starter-project/README.md +14 -0
- package/implementation-roadmap/day-1-imp/DAY1-HARDEN.md +823 -0
- package/implementation-roadmap/day-1-imp/DAY1-IMPLEMENT.md +2459 -0
- package/implementation-roadmap/day-1-imp/DAY1-REVIEW.md +288 -0
- package/implementation-roadmap/day-2-imp/DAY2-HARDEN.md +954 -0
- package/implementation-roadmap/day-2-imp/DAY2-IMPLEMENT.md +2347 -0
- package/implementation-roadmap/day-2-imp/DAY2-REVIEW.md +422 -0
- package/implementation-roadmap/day-3-imp/DAY3-HARDEN.md +870 -0
- package/implementation-roadmap/day-3-imp/DAY3-IMPLEMENT.md +2798 -0
- package/implementation-roadmap/day-3-imp/DAY3-REVIEW.md +484 -0
- package/implementation-roadmap/day-4-imp/DAY4-HARDEN.md +1087 -0
- package/implementation-roadmap/day-4-imp/DAY4-IMPLEMENT.md +2874 -0
- package/implementation-roadmap/day-4-imp/DAY4-REVIEW.md +386 -0
- package/implementation-roadmap/day-5-imp/DAY5-HARDEN.md +1078 -0
- package/implementation-roadmap/day-5-imp/DAY5-IMPLEMENT.md +3151 -0
- package/implementation-roadmap/day-5-imp/DAY5-REVIEW.md +345 -0
- package/implementation-roadmap/day-6-imp/DAY6-COMPLETE.md +3919 -0
- package/implementation-roadmap/day-7-imp-prod/DAY7-PRODUCTION-FINAL.md +4513 -0
- package/package.json +31 -0
- package/sdk/README.md +69 -0
- package/sdk/eslint.config.mjs +34 -0
- package/sdk/package-lock.json +1507 -0
- package/sdk/package.json +30 -0
- package/sdk/src/client.ts +133 -0
- package/sdk/src/commands.ts +63 -0
- package/sdk/src/events.ts +166 -0
- package/sdk/src/index.ts +22 -0
- package/sdk/src/types.ts +87 -0
- package/sdk/tsconfig.json +13 -0
- package/tests/audit.test.js +206 -0
- package/tests/ci-mode.test.js +162 -0
- package/tests/compaction.test.js +161 -0
- package/tests/distribution.test.js +205 -0
- package/tests/e2e.test.js +618 -0
- package/tests/governance.test.js +130 -0
- package/tests/install.test.js +209 -0
- package/tests/integrations.test.js +128 -0
- package/tests/intelligence.test.js +117 -0
- package/tests/metrics.test.js +96 -0
- package/tests/migration.test.js +309 -0
- package/tests/production.test.js +416 -0
- package/tests/sdk.test.js +200 -0
- package/tests/skills-platform.test.js +403 -0
- package/tests/wave-engine.test.js +338 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"project": null,
|
|
4
|
+
"phase": null,
|
|
5
|
+
"plan": null,
|
|
6
|
+
"plan_step": null,
|
|
7
|
+
"last_completed_task": {
|
|
8
|
+
"description": null,
|
|
9
|
+
"commit_sha": null,
|
|
10
|
+
"verified": null
|
|
11
|
+
},
|
|
12
|
+
"next_task": "Run /mindforge:init-project",
|
|
13
|
+
"in_progress": {
|
|
14
|
+
"file": null,
|
|
15
|
+
"intent": null,
|
|
16
|
+
"completed_steps": [],
|
|
17
|
+
"remaining_steps": []
|
|
18
|
+
},
|
|
19
|
+
"blockers": [],
|
|
20
|
+
"decisions_needed": [],
|
|
21
|
+
"context_refs": [],
|
|
22
|
+
"agent_notes": "",
|
|
23
|
+
"session_summary": "",
|
|
24
|
+
"recent_files": [],
|
|
25
|
+
"recent_commits": [],
|
|
26
|
+
"updated_at": null,
|
|
27
|
+
"_warning": "Never store secrets, tokens, or passwords in this file. It is tracked in git."
|
|
28
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# [Project Name]
|
|
2
|
+
|
|
3
|
+
> One sentence describing what this project does and for whom.
|
|
4
|
+
|
|
5
|
+
## Status
|
|
6
|
+
🚧 In development — Phase 0 (not started)
|
|
7
|
+
|
|
8
|
+
## Problem statement
|
|
9
|
+
[What pain does this solve? Be specific.]
|
|
10
|
+
|
|
11
|
+
## Target users
|
|
12
|
+
[Who uses this? Describe them precisely. Avoid "developers" — say "solo developers
|
|
13
|
+
building production apps with Claude Code who want structured AI workflows."]
|
|
14
|
+
|
|
15
|
+
## Tech stack
|
|
16
|
+
| Layer | Technology | Version | Rationale |
|
|
17
|
+
|------------|-------------|---------|----------------------------------|
|
|
18
|
+
| | | | |
|
|
19
|
+
|
|
20
|
+
## v1 Scope — IN
|
|
21
|
+
- [ ] [Feature 1]
|
|
22
|
+
- [ ] [Feature 2]
|
|
23
|
+
|
|
24
|
+
## v1 Scope — OUT (explicitly excluded)
|
|
25
|
+
- [Item 1] — reason: [why not v1]
|
|
26
|
+
- [Item 2] — reason: [why not v1]
|
|
27
|
+
|
|
28
|
+
## Success criteria
|
|
29
|
+
[How will you know v1 is done? Be specific and measurable.]
|
|
30
|
+
|
|
31
|
+
## Key constraints
|
|
32
|
+
- [Constraint 1]
|
|
33
|
+
- [Constraint 2]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# MindForge v1.0.0 — Release Checklist
|
|
2
|
+
|
|
3
|
+
Use this file to record verification results for the 50-point production
|
|
4
|
+
readiness checklist in `.mindforge/production/production-checklist.md`.
|
|
5
|
+
|
|
6
|
+
## Metadata
|
|
7
|
+
- Target version: v1.0.0
|
|
8
|
+
- Release date: 2026-03-22
|
|
9
|
+
- Release manager: [name]
|
|
10
|
+
|
|
11
|
+
## Verification log
|
|
12
|
+
| Item | Result | Verified by | Date | Notes |
|
|
13
|
+
|---|---|---|---|---|
|
|
14
|
+
| A01 | | | | |
|
|
15
|
+
| A02 | | | | |
|
|
16
|
+
| A03 | | | | |
|
|
17
|
+
| A04 | | | | |
|
|
18
|
+
| A05 | | | | |
|
|
19
|
+
| A06 | | | | |
|
|
20
|
+
| A07 | | | | |
|
|
21
|
+
| A08 | | | | |
|
|
22
|
+
| A09 | | | | |
|
|
23
|
+
| A10 | | | | |
|
|
24
|
+
| B01 | | | | |
|
|
25
|
+
| B02 | | | | |
|
|
26
|
+
| B03 | | | | |
|
|
27
|
+
| B04 | | | | |
|
|
28
|
+
| B05 | | | | |
|
|
29
|
+
| B06 | | | | |
|
|
30
|
+
| B07 | | | | |
|
|
31
|
+
| B08 | | | | |
|
|
32
|
+
| B09 | | | | |
|
|
33
|
+
| B10 | | | | |
|
|
34
|
+
| C01 | | | | |
|
|
35
|
+
| C02 | | | | |
|
|
36
|
+
| C03 | | | | |
|
|
37
|
+
| C04 | | | | |
|
|
38
|
+
| C05 | | | | |
|
|
39
|
+
| C06 | | | | |
|
|
40
|
+
| C07 | | | | |
|
|
41
|
+
| C08 | | | | |
|
|
42
|
+
| C09 | | | | |
|
|
43
|
+
| C10 | | | | |
|
|
44
|
+
| D01 | | | | |
|
|
45
|
+
| D02 | | | | |
|
|
46
|
+
| D03 | | | | |
|
|
47
|
+
| D04 | | | | |
|
|
48
|
+
| D05 | | | | |
|
|
49
|
+
| D06 | | | | |
|
|
50
|
+
| D07 | | | | |
|
|
51
|
+
| D08 | | | | |
|
|
52
|
+
| D09 | | | | |
|
|
53
|
+
| D10 | | | | |
|
|
54
|
+
| E01 | | | | |
|
|
55
|
+
| E02 | | | | |
|
|
56
|
+
| E03 | | | | |
|
|
57
|
+
| E04 | | | | |
|
|
58
|
+
| E05 | | | | |
|
|
59
|
+
| E06 | | | | |
|
|
60
|
+
| E07 | | | | |
|
|
61
|
+
| E08 | | | | |
|
|
62
|
+
| E09 | | | | |
|
|
63
|
+
| E10 | | | | |
|
|
64
|
+
| F01 | | | | |
|
|
65
|
+
| F02 | | | | |
|
|
66
|
+
| F03 | | | | |
|
|
67
|
+
| F04 | | | | |
|
|
68
|
+
| F05 | | | | |
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# MindForge — Project State
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
🔴 Not started
|
|
5
|
+
|
|
6
|
+
## IMPORTANT
|
|
7
|
+
HANDOFF.json is committed to git. Never write secrets or credentials into it.
|
|
8
|
+
Write "see .env" or "stored in secrets manager" if a note needs to reference credentials.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Current phase
|
|
12
|
+
None
|
|
13
|
+
|
|
14
|
+
## Last completed task
|
|
15
|
+
None — project not yet initialised.
|
|
16
|
+
|
|
17
|
+
## Next action
|
|
18
|
+
Run `/mindforge:init-project` to initialise this project.
|
|
19
|
+
|
|
20
|
+
## Decisions made
|
|
21
|
+
None yet.
|
|
22
|
+
|
|
23
|
+
## Active blockers
|
|
24
|
+
None.
|
|
25
|
+
|
|
26
|
+
## Context for next session
|
|
27
|
+
Fresh MindForge install. No project has been initialised yet.
|
|
28
|
+
Start by running `/mindforge:init-project`.
|
|
29
|
+
|
|
30
|
+
## Last updated
|
|
31
|
+
[ISO 8601 timestamp on first use]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
File without changes
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ADR-001: Track HANDOFF.json in git
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
**Deciders:** MindForge core team
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
HANDOFF.json stores the current session state for agent continuity.
|
|
9
|
+
It needs to be readable by the next agent session. The question is whether
|
|
10
|
+
it should be committed to git (team-visible) or gitignored (local-only).
|
|
11
|
+
|
|
12
|
+
## Decision
|
|
13
|
+
Track HANDOFF.json in git.
|
|
14
|
+
|
|
15
|
+
## Options considered
|
|
16
|
+
|
|
17
|
+
### Option A — Track in git (chosen)
|
|
18
|
+
Pros:
|
|
19
|
+
- Any team member or new machine can pick up where the last session left off
|
|
20
|
+
- Git history shows the evolution of session state
|
|
21
|
+
- No risk of losing state on machine failure
|
|
22
|
+
|
|
23
|
+
Cons:
|
|
24
|
+
- File changes create noise in git history
|
|
25
|
+
- Risk of accidentally committing sensitive session data
|
|
26
|
+
|
|
27
|
+
Mitigations:
|
|
28
|
+
- Added `_warning` field to prevent accidental secret storage
|
|
29
|
+
- SUMMARY.md captures human-readable history; HANDOFF.json is machine state only
|
|
30
|
+
|
|
31
|
+
### Option B — Gitignore
|
|
32
|
+
Pros: No git noise, no secret exposure risk
|
|
33
|
+
Cons: State lost on machine switch or re-clone; breaks team continuity
|
|
34
|
+
|
|
35
|
+
## Rationale
|
|
36
|
+
Team continuity outweighs the git noise concern. The warning field and
|
|
37
|
+
documentation mitigate the secret exposure risk sufficiently.
|
|
38
|
+
|
|
39
|
+
## Consequences
|
|
40
|
+
Team must be educated to never write secrets into HANDOFF.json.
|
|
41
|
+
CI should include a secret-scanning step that checks HANDOFF.json.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# ADR-002: Use Markdown files for slash commands (not TypeScript)
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
**Deciders:** MindForge core team
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
MindForge slash commands could be implemented as:
|
|
9
|
+
A) Markdown instruction files (what we chose)
|
|
10
|
+
B) TypeScript/JavaScript executable scripts
|
|
11
|
+
C) A mix of both
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
Markdown instruction files for all commands.
|
|
15
|
+
|
|
16
|
+
## Options considered
|
|
17
|
+
|
|
18
|
+
### Option A — Markdown instruction files (chosen)
|
|
19
|
+
Pros:
|
|
20
|
+
- Readable and editable without a build step
|
|
21
|
+
- Can be updated directly by modifying text — no recompile
|
|
22
|
+
- Agents can read and follow them natively
|
|
23
|
+
- Community can contribute without TypeScript knowledge
|
|
24
|
+
- Work identically across all runtimes (Claude Code, Antigravity, OpenCode)
|
|
25
|
+
|
|
26
|
+
Cons:
|
|
27
|
+
- No type safety for command logic
|
|
28
|
+
- Cannot run unit tests on individual steps
|
|
29
|
+
- Edge case handling is described in prose, not enforced in code
|
|
30
|
+
|
|
31
|
+
### Option B — TypeScript scripts
|
|
32
|
+
Pros: Type safety, unit testable, programmatic edge case handling
|
|
33
|
+
Cons: Build step required, runtime-specific, harder to contribute to,
|
|
34
|
+
loses the "human-readable instructions" quality that makes them good agent prompts
|
|
35
|
+
|
|
36
|
+
### Option C — Mix
|
|
37
|
+
Assessed as worst of both: complexity of both without full benefit of either.
|
|
38
|
+
|
|
39
|
+
## Rationale
|
|
40
|
+
MindForge commands are agent prompts, not programs. Their primary consumer is
|
|
41
|
+
an AI agent reading natural language. Markdown is the best format for that use case.
|
|
42
|
+
Logic enforcement happens through agent quality gates, not code compilation.
|
|
43
|
+
|
|
44
|
+
## Consequences
|
|
45
|
+
Command edge cases must be described carefully in prose.
|
|
46
|
+
A future "command validator" tool could parse and verify command files statically.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# ADR-003: Keyword-trigger model for skill discovery
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
**Deciders:** MindForge core team
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
Skills need to be loaded by the agent at the right time. The question is
|
|
9
|
+
how the agent knows which skills are relevant for a given task.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
Keyword matching against a `triggers:` list in skill frontmatter.
|
|
13
|
+
|
|
14
|
+
## Options considered
|
|
15
|
+
|
|
16
|
+
### Option A — Keyword triggers in frontmatter (chosen)
|
|
17
|
+
Pros: Simple, transparent, editable by anyone, no dependency on AI judgment
|
|
18
|
+
Cons: Can miss contextual relevance; false positives on common words
|
|
19
|
+
|
|
20
|
+
### Option B — AI decides which skills to load
|
|
21
|
+
Pros: Contextually accurate matching
|
|
22
|
+
Cons: Non-deterministic; different sessions might load different skills
|
|
23
|
+
for the same task; hard to debug; requires extra model call
|
|
24
|
+
|
|
25
|
+
### Option C — Explicit user invocation only
|
|
26
|
+
Pros: Precise control
|
|
27
|
+
Cons: Loses the "just-in-time" benefit; users forget to invoke skills
|
|
28
|
+
|
|
29
|
+
## Rationale
|
|
30
|
+
Determinism is more valuable than perfect accuracy for a framework.
|
|
31
|
+
Teams need to be able to predict what skills will activate. Keyword triggers
|
|
32
|
+
provide that predictability. False positives are acceptable — loading a skill
|
|
33
|
+
unnecessarily has low cost; missing a needed skill has high cost.
|
|
34
|
+
|
|
35
|
+
## Consequences
|
|
36
|
+
Trigger keyword lists must be maintained as skills evolve.
|
|
37
|
+
A skill with too-narrow triggers will be missed. Err on the side of more triggers.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ADR-004: Wave-based parallel execution over full parallelism
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
**Deciders:** MindForge core team
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
When executing multiple tasks in a phase, we can choose:
|
|
9
|
+
A) Run all tasks simultaneously (maximum parallelism)
|
|
10
|
+
B) Run tasks in dependency-ordered waves (wave parallelism — chosen)
|
|
11
|
+
C) Run tasks sequentially (no parallelism)
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
Wave-based parallel execution. Tasks within a wave run in parallel.
|
|
15
|
+
Waves execute sequentially.
|
|
16
|
+
|
|
17
|
+
## Options considered
|
|
18
|
+
|
|
19
|
+
### Option A — Full parallelism
|
|
20
|
+
Pros: Maximum speed
|
|
21
|
+
Cons: Cannot handle dependencies safely. If Plan 03 depends on Plan 01's output
|
|
22
|
+
and both run simultaneously, Plan 03 reads stale data. Produces corrupt output.
|
|
23
|
+
|
|
24
|
+
### Option B — Wave parallelism (chosen)
|
|
25
|
+
Pros: Safely parallel within dependency constraints. Significantly faster than
|
|
26
|
+
sequential. Dependency correctness is guaranteed by wave ordering.
|
|
27
|
+
Cons: Some tasks that could theoretically run in parallel must wait for their
|
|
28
|
+
dependency wave to complete.
|
|
29
|
+
|
|
30
|
+
### Option C — Sequential
|
|
31
|
+
Pros: Simplest to implement and reason about.
|
|
32
|
+
Cons: Discards the primary quality advantage of parallel subagents — isolated
|
|
33
|
+
200K token contexts per task. In sequential mode, the orchestrator's context
|
|
34
|
+
fills up across tasks, degrading output quality over time.
|
|
35
|
+
|
|
36
|
+
## Rationale
|
|
37
|
+
Wave parallelism gives the correctness of sequential execution (dependency order
|
|
38
|
+
respected) with the quality benefits of parallel isolation (each task gets a
|
|
39
|
+
fresh 200K context). This is the optimal tradeoff.
|
|
40
|
+
|
|
41
|
+
## Consequences
|
|
42
|
+
- Plan authors must declare dependencies accurately — incorrect dependencies
|
|
43
|
+
can cause parallel tasks to conflict.
|
|
44
|
+
- The dependency parser must catch cycles and conflicts before execution starts.
|
|
45
|
+
- A small planning overhead (building the wave graph) is incurred per phase.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# ADR-005: Append-only JSONL audit log over structured database
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
**Deciders:** MindForge core team
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
MindForge needs an audit trail of agent actions. The storage format choices are:
|
|
9
|
+
A) Append-only JSONL file (chosen)
|
|
10
|
+
B) SQLite database
|
|
11
|
+
C) In-memory log (written to JSON on session end)
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
Append-only JSONL file: `.planning/AUDIT.jsonl`
|
|
15
|
+
|
|
16
|
+
## Options considered
|
|
17
|
+
|
|
18
|
+
### Option A — Append-only JSONL (chosen)
|
|
19
|
+
Pros:
|
|
20
|
+
- Zero dependencies (no SQLite driver needed)
|
|
21
|
+
- Readable with standard Unix tools (grep, jq, tail)
|
|
22
|
+
- Git-trackable — history of history
|
|
23
|
+
- Tamper-evident via git (any deletion or modification is visible in `git diff`)
|
|
24
|
+
- Works identically across all platforms and environments
|
|
25
|
+
|
|
26
|
+
Cons:
|
|
27
|
+
- No query language — filtering requires grep/jq
|
|
28
|
+
- File grows unboundedly (mitigated by archiving strategy)
|
|
29
|
+
- No transactions — a crash mid-write could produce a partial line
|
|
30
|
+
|
|
31
|
+
### Option B — SQLite
|
|
32
|
+
Pros: Full SQL query capability, transactional writes
|
|
33
|
+
Cons: Binary file — not readable without tooling, not meaningfully git-diffable,
|
|
34
|
+
adds a native dependency, harder to inspect in CI/CD environments
|
|
35
|
+
|
|
36
|
+
### Option C — In-memory log
|
|
37
|
+
Pros: No I/O overhead during session
|
|
38
|
+
Cons: Lost entirely if session crashes mid-execution — exactly when the audit log
|
|
39
|
+
is most needed.
|
|
40
|
+
|
|
41
|
+
## Rationale
|
|
42
|
+
For a framework targeting solo developers and small teams, readability and
|
|
43
|
+
zero-dependency simplicity outweigh query sophistication. The primary audit use
|
|
44
|
+
case is "what happened in this phase?" which grep handles well.
|
|
45
|
+
|
|
46
|
+
## Consequences
|
|
47
|
+
- A partial-line recovery tool should be built in a future hardening pass.
|
|
48
|
+
(Run `python3 -c "import sys,json;[print(l.strip()) for l in sys.stdin if json.loads(l)]"`
|
|
49
|
+
to filter clean lines from a corrupted AUDIT.jsonl)
|
|
50
|
+
- An archiving strategy (rotate after 10,000 lines) will be added in Day 4.
|
|
51
|
+
- The `status` command reads AUDIT.jsonl from the tail for performance.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# ADR-006: Three-tier skills architecture (Core → Org → Project)
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Skills need to be distributed at three scopes: universal best practices,
|
|
8
|
+
organisation-specific standards, and project-specific patterns.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
Three-tier architecture with explicit priority: Project (T3) > Org (T2) > Core (T1).
|
|
12
|
+
|
|
13
|
+
## Rationale
|
|
14
|
+
The tier system solves the key tension: MindForge provides sensible defaults
|
|
15
|
+
(Core), organisations customise for their standards (Org), and projects fine-tune
|
|
16
|
+
for their specific context (Project). Higher tiers override lower tiers by same name,
|
|
17
|
+
enabling intentional, documented overrides without modifying shared core skills.
|
|
18
|
+
|
|
19
|
+
## Consequences
|
|
20
|
+
- Skill authors must understand which tier is appropriate for their skill
|
|
21
|
+
- Conflict resolution rules must be well-documented (see conflict-resolver.md)
|
|
22
|
+
- Org-tier skills should be maintained in a shared repo, not per-project
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# ADR-007: Keyword-trigger model over AI-decided skill selection
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
How should the agent decide which skills to load for a given task?
|
|
8
|
+
Options: keyword triggers in frontmatter vs. AI-decided relevance.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
Keyword triggers in frontmatter (same model as Day 1 ADR-003, confirmed at Day 3 scale).
|
|
12
|
+
|
|
13
|
+
## Additional rationale at Day 3 scale
|
|
14
|
+
With 10+ skills, AI-decided selection has a higher risk of selecting wrong skills
|
|
15
|
+
due to hallucinated relevance. Keyword triggers are deterministic — identical tasks
|
|
16
|
+
always load identical skills, enabling reproducible results across sessions.
|
|
17
|
+
The added specificity of file-name matching (not just text matching) improves
|
|
18
|
+
trigger accuracy without sacrificing determinism.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
Trigger keyword lists require ongoing maintenance as skill content evolves.
|
|
22
|
+
The conflict resolver handles cases where multiple skills match.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# ADR-008: Just-in-time skill loading over session-start loading
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
When should skills be loaded — at session start (front-loaded) or at task time (JIT)?
|
|
8
|
+
|
|
9
|
+
## Decision
|
|
10
|
+
Just-in-time loading: skills are loaded immediately before the task that needs them.
|
|
11
|
+
Skills are not loaded at session start.
|
|
12
|
+
|
|
13
|
+
## Rationale
|
|
14
|
+
Front-loading all skills at session start would:
|
|
15
|
+
- Consume 30K+ tokens for 10 skills before any work begins
|
|
16
|
+
- Load skills irrelevant to the current task (e.g., loading incident-response
|
|
17
|
+
skills for a UI component task)
|
|
18
|
+
- Pollute the agent's context with contradictory guidance from multiple domains
|
|
19
|
+
|
|
20
|
+
JIT loading means:
|
|
21
|
+
- Each task starts with only the relevant skills in context
|
|
22
|
+
- Context budget is spent on relevant expertise, not irrelevant policies
|
|
23
|
+
- Skills load at the moment they are most useful to the agent
|
|
24
|
+
|
|
25
|
+
## Consequences
|
|
26
|
+
- Skills must be re-loaded for each task (no session-level caching)
|
|
27
|
+
- The trigger index is built once at session start (inexpensive: reads frontmatter only)
|
|
28
|
+
- Skills that need to be available across multiple tasks should use the
|
|
29
|
+
minimal context injection (trigger + mandatory actions only) to save budget
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# ADR-010: Governance tier escalation by path, content, and history
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Decision
|
|
7
|
+
Classify changes using path signals, code-content risk signals, and recent audit
|
|
8
|
+
history so risk is not underestimated by filename-only matching.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# ADR-011: Multi-developer handoff must remain append-only and conflict-aware
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Decision
|
|
7
|
+
Use append-only handoff records with staleness checks and explicit ownership of
|
|
8
|
+
files/plans to reduce merge-time coordination failures.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ADR-012: Intelligence outputs must feed back into behavior
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Day 5 introduces difficulty scoring, retrospectives, compaction quality, and
|
|
8
|
+
session metrics. Without explicit feedback connectors these become passive
|
|
9
|
+
reports.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
Use explicit loops:
|
|
13
|
+
- difficulty -> planning granularity
|
|
14
|
+
- retrospective -> MINDFORGE updates
|
|
15
|
+
- quality metrics -> session behavior adjustments
|
|
16
|
+
- compaction -> richer handoff continuity
|
|
17
|
+
|
|
18
|
+
## Consequences
|
|
19
|
+
Every intelligence artifact must define its downstream behavioral effect.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# ADR-013: MINDFORGE.md is configurable but cannot disable governance primitives
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Project-level customization is required, but unrestricted overrides would allow
|
|
8
|
+
accidental or malicious disabling of core safety guarantees.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
Allow MINDFORGE overrides only for configurable preferences and thresholds.
|
|
12
|
+
Keep secret detection, security auto-trigger, plan-first, and audit-writing
|
|
13
|
+
as non-overridable primitives.
|
|
14
|
+
|
|
15
|
+
## Consequences
|
|
16
|
+
Customization remains flexible while governance stays enforceable.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# ADR-014: Metrics are process signals, not developer performance metrics
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-20
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Session and phase quality metrics can be misused as individual performance
|
|
8
|
+
scores, which undermines reliability and psychological safety.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
Use metrics solely for system/process improvement and personalization.
|
|
12
|
+
Do not use them for individual performance evaluation.
|
|
13
|
+
|
|
14
|
+
## Consequences
|
|
15
|
+
Documentation and profile policy must explicitly prohibit evaluative use.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# ADR-015: npm as the MindForge Skills Registry
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-21
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
MindForge needs a way to distribute community and organisation skills.
|
|
8
|
+
Options: custom registry server, GitHub releases, npm registry.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
Use the standard npm registry with `mindforge-skill-` package naming convention.
|
|
12
|
+
|
|
13
|
+
## Rationale
|
|
14
|
+
npm is the world's largest package registry with existing infrastructure for:
|
|
15
|
+
versioning, authentication, access control, search, and deprecation.
|
|
16
|
+
Building a custom registry duplicates all of this at significant cost.
|
|
17
|
+
The npm ecosystem's supply chain security tooling (npm audit, Dependabot,
|
|
18
|
+
Snyk) works natively. Private registries (Verdaccio, Artifactory, GitHub Packages)
|
|
19
|
+
are npm-compatible — organisations with private skills don't need separate tooling.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
- Skill names follow npm conventions (lowercase, hyphens)
|
|
23
|
+
- Version management follows npm semver conventions
|
|
24
|
+
- Private skills require a compatible private npm registry
|
|
25
|
+
- The injection guard and validation pipeline are the primary
|
|
26
|
+
supply chain security controls (npm audit is insufficient alone for SKILL.md content)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# ADR-016: CI timeout exits with code 0 (soft stop)
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-21
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
MindForge CI may run out of time before completing all phases.
|
|
8
|
+
The question is: should timeout exit with code 0 (success) or non-zero (failure)?
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
Timeout exits with code 0. State is saved. Next CI run resumes.
|
|
12
|
+
|
|
13
|
+
## Rationale
|
|
14
|
+
A MindForge CI timeout is not a code failure — it is a resource limit.
|
|
15
|
+
Failing the build on timeout would:
|
|
16
|
+
1. Block the PR with a failure that has no fix (the code is fine — time ran out)
|
|
17
|
+
2. Force teams to either increase CI limits or split phases artificially
|
|
18
|
+
3. Make MindForge feel unreliable ("it randomly fails when there's a lot to do")
|
|
19
|
+
|
|
20
|
+
The correct behaviour: save progress, exit cleanly, let the next run continue.
|
|
21
|
+
The CI pipeline is designed for continuation, not completion in a single run.
|
|
22
|
+
|
|
23
|
+
## Consequences
|
|
24
|
+
- CI pipelines may run multiple times for a single phase
|
|
25
|
+
- HANDOFF.json must be committed during CI runs (CI has write access)
|
|
26
|
+
- Teams must monitor CI for timeout patterns (frequent timeouts → split phases)
|
|
27
|
+
- GitHub Actions step summary provides visibility into timeout state
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# ADR-017: MindForge SDK event stream is localhost-only
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted
|
|
4
|
+
**Date:** 2026-03-21
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
The MindForge SDK includes an SSE event stream for real-time progress.
|
|
8
|
+
The question is whether it should bind to all interfaces or localhost only.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
The event stream binds to 127.0.0.1 (localhost) only.
|
|
12
|
+
|
|
13
|
+
## Rationale
|
|
14
|
+
The event stream exposes:
|
|
15
|
+
- AUDIT.jsonl entries (which contain sensitive project state)
|
|
16
|
+
- Task completion events (which reveal code structure and timing)
|
|
17
|
+
- Security finding events (which reveal vulnerability information)
|
|
18
|
+
|
|
19
|
+
Exposing this to all network interfaces in a shared development environment
|
|
20
|
+
(VMs, shared cloud desktops, containers) would allow other users to monitor
|
|
21
|
+
another developer's project state in real-time.
|
|
22
|
+
Localhost binding provides adequate protection for the primary use case
|
|
23
|
+
(local developer tooling) without requiring authentication infrastructure.
|
|
24
|
+
|
|
25
|
+
## Consequences
|
|
26
|
+
- Remote integrations cannot use the event stream directly
|
|
27
|
+
- For remote monitoring: use the audit log query API via SSH tunnel
|
|
28
|
+
- Container environments: map the port explicitly if remote access is needed
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# ADR-018: Installer detects and handles self-install scenario
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted | **Date:** v1.0.0 | **Day:** 7
|
|
4
|
+
|
|
5
|
+
## Context
|
|
6
|
+
Running `npx mindforge-cc --claude --local` inside the MindForge repo itself
|
|
7
|
+
would copy `.mindforge/` to `.mindforge/` (source = destination).
|
|
8
|
+
|
|
9
|
+
## Decision
|
|
10
|
+
Detect self-install by checking `package.json.name === 'mindforge-cc'`.
|
|
11
|
+
If self-install: skip framework file copies. Only install commands.
|
|
12
|
+
|
|
13
|
+
## Rationale
|
|
14
|
+
Core team runs the installer locally for testing frequently.
|
|
15
|
+
Silent no-op with a clear warning is better than a cryptic error or accidental self-overwrite.
|