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,98 @@
|
|
|
1
|
+
# MindForge Skills Engine — Registry
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
The skills registry tracks every available skill pack across all three tiers,
|
|
5
|
+
their versions, trigger keywords, compatibility requirements, and source locations.
|
|
6
|
+
The registry is the first thing the skills loader reads.
|
|
7
|
+
|
|
8
|
+
## Registry file location
|
|
9
|
+
`.mindforge/org/skills/MANIFEST.md` — org-level manifest (shared via git)
|
|
10
|
+
|
|
11
|
+
## Manifest format
|
|
12
|
+
|
|
13
|
+
The MANIFEST.md uses a structured table format readable by both humans and agents:
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
# MindForge Skills Manifest
|
|
17
|
+
# Version: 1.0.0
|
|
18
|
+
# MindForge compatibility: >=0.1.0
|
|
19
|
+
# Last updated: [ISO-8601]
|
|
20
|
+
|
|
21
|
+
## Core Skills (Tier 1 — maintained by MindForge)
|
|
22
|
+
|
|
23
|
+
| Name | Version | Status | Min MindForge | Triggers (excerpt) |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| security-review | 1.0.0 | stable | 0.1.0 | auth, password, token, JWT |
|
|
26
|
+
| code-quality | 1.0.0 | stable | 0.1.0 | refactor, review, lint |
|
|
27
|
+
| api-design | 1.0.0 | stable | 0.1.0 | API, endpoint, REST |
|
|
28
|
+
| testing-standards | 1.0.0 | stable | 0.1.0 | test, spec, coverage |
|
|
29
|
+
| documentation | 1.0.0 | stable | 0.1.0 | README, docs, changelog |
|
|
30
|
+
| performance | 1.0.0 | stable | 0.3.0 | performance, latency, cache |
|
|
31
|
+
| accessibility | 1.0.0 | stable | 0.3.0 | a11y, aria, wcag, screen reader |
|
|
32
|
+
| data-privacy | 1.0.0 | stable | 0.3.0 | GDPR, PII, consent, retention |
|
|
33
|
+
| incident-response | 1.0.0 | stable | 0.3.0 | incident, outage, postmortem |
|
|
34
|
+
| database-patterns | 1.0.0 | stable | 0.3.0 | query, index, migration, N+1 |
|
|
35
|
+
|
|
36
|
+
## Org Skills (Tier 2 — maintained by your organisation)
|
|
37
|
+
|
|
38
|
+
| Name | Version | Status | Min MindForge | Triggers (excerpt) |
|
|
39
|
+
|---|---|---|---|---|
|
|
40
|
+
| [org-skill-name] | 1.0.0 | stable | 0.1.0 | [trigger keywords] |
|
|
41
|
+
|
|
42
|
+
## Project Skills (Tier 3 — maintained per project)
|
|
43
|
+
|
|
44
|
+
| Name | Version | Status | Min MindForge | Triggers (excerpt) |
|
|
45
|
+
|---|---|---|---|---|
|
|
46
|
+
| [project-skill-name] | 1.0.0 | stable | 0.1.0 | [trigger keywords] |
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Parsing rules for MANIFEST.md
|
|
50
|
+
|
|
51
|
+
1. Only parse rows inside the three tier tables.
|
|
52
|
+
2. Treat the header row as column definitions.
|
|
53
|
+
3. Columns are positional: Name | Version | Status | Min MindForge | Triggers (excerpt) or Path.
|
|
54
|
+
4. Ignore placeholder rows like `(none yet ...)`.
|
|
55
|
+
5. If a row is missing required columns: mark as invalid and warn.
|
|
56
|
+
|
|
57
|
+
## Registry operations
|
|
58
|
+
|
|
59
|
+
### Scan and build registry (run at session start)
|
|
60
|
+
If MANIFEST.md does not exist on first install:
|
|
61
|
+
1. Create it with the current Core skills table from the MindForge default template
|
|
62
|
+
2. Log a warning: "MANIFEST.md was missing; created default registry."
|
|
63
|
+
3. Continue scan on the newly created file
|
|
64
|
+
|
|
65
|
+
1. Read `.mindforge/org/skills/MANIFEST.md`
|
|
66
|
+
2. For each skill in the manifest, verify its SKILL.md file exists at the expected path
|
|
67
|
+
3. If a skill in the manifest has no corresponding file: mark as `missing`
|
|
68
|
+
4. If a SKILL.md file exists but is not in the manifest: mark as `unregistered`
|
|
69
|
+
5. Build the in-session registry: a flat list of all valid skills with their metadata
|
|
70
|
+
|
|
71
|
+
### Registry health check
|
|
72
|
+
Run as part of `/mindforge:health`:
|
|
73
|
+
- All manifest entries have corresponding SKILL.md files ✅ / ❌ missing
|
|
74
|
+
- All SKILL.md files have valid frontmatter (name, version, triggers) ✅ / ❌ invalid
|
|
75
|
+
- No trigger keyword conflicts between skills at the same tier ✅ / ⚠️ conflict
|
|
76
|
+
- All skill versions are valid semver strings ✅ / ❌ invalid
|
|
77
|
+
|
|
78
|
+
### Adding a skill to the registry
|
|
79
|
+
1. Create the skill directory and SKILL.md (content per the authoring guide)
|
|
80
|
+
2. Validate the SKILL.md frontmatter is complete and correct
|
|
81
|
+
3. Add an entry to MANIFEST.md in the correct tier section
|
|
82
|
+
4. Commit: `feat(skills): add [skill-name] v[version]`
|
|
83
|
+
|
|
84
|
+
### Removing a skill from the registry
|
|
85
|
+
1. Mark the skill as `deprecated` in MANIFEST.md (do not delete the entry)
|
|
86
|
+
2. Add a `deprecated_at` and `replacement` field to the SKILL.md frontmatter
|
|
87
|
+
3. After 2 sprints of deprecation: delete the skill directory and manifest entry
|
|
88
|
+
4. Never hard-delete a skill that might still be referenced in existing PLAN files
|
|
89
|
+
|
|
90
|
+
## Tier priority for conflict resolution
|
|
91
|
+
When two skills at different tiers have overlapping trigger keywords:
|
|
92
|
+
Priority order: Project (Tier 3) > Org (Tier 2) > Core (Tier 1)
|
|
93
|
+
|
|
94
|
+
The higher-priority tier's skill is loaded. The lower-priority skill is not loaded.
|
|
95
|
+
This allows org and project skills to override core skill behaviour intentionally.
|
|
96
|
+
|
|
97
|
+
When two skills at the SAME tier have conflicting trigger keywords:
|
|
98
|
+
See `conflict-resolver.md`.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# MindForge Skills Engine — Versioning
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Define how skill versions work, what constitutes a breaking change, and how
|
|
5
|
+
agents handle version mismatches between what is installed and what is needed.
|
|
6
|
+
|
|
7
|
+
## Versioning scheme
|
|
8
|
+
Skills use Semantic Versioning (semver.org): MAJOR.MINOR.PATCH
|
|
9
|
+
|
|
10
|
+
| Increment | When | Example |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| MAJOR | Breaking change to skill interface (removed triggers, changed output format, changed mandatory actions) | 1.0.0 → 2.0.0 |
|
|
13
|
+
| MINOR | New trigger keywords, new optional sections, new examples | 1.0.0 → 1.1.0 |
|
|
14
|
+
| PATCH | Clarifications, typo fixes, improved examples with no behaviour change | 1.0.0 → 1.0.1 |
|
|
15
|
+
|
|
16
|
+
## Frontmatter version fields
|
|
17
|
+
|
|
18
|
+
Every SKILL.md must have these frontmatter fields:
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
---
|
|
22
|
+
name: security-review
|
|
23
|
+
version: 1.2.0
|
|
24
|
+
min_mindforge_version: 0.1.0
|
|
25
|
+
status: stable
|
|
26
|
+
deprecated_at: # ISO-8601 date if deprecated, empty if not
|
|
27
|
+
replacement: # skill name if deprecated, empty if not
|
|
28
|
+
breaking_changes:
|
|
29
|
+
- "2.0.0: removed 'xss' as standalone trigger (now part of 'injection' trigger)"
|
|
30
|
+
changelog:
|
|
31
|
+
- "1.2.0: added supply chain security check"
|
|
32
|
+
- "1.1.0: expanded OWASP checklist to include A08-A10"
|
|
33
|
+
- "1.0.0: initial stable release"
|
|
34
|
+
---
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Compatibility check protocol
|
|
38
|
+
|
|
39
|
+
Before loading any skill, verify compatibility:
|
|
40
|
+
|
|
41
|
+
### Check 1 — MindForge version compatibility
|
|
42
|
+
Read `min_mindforge_version` from the skill's frontmatter.
|
|
43
|
+
Compare against the current MindForge version (from `package.json`).
|
|
44
|
+
|
|
45
|
+
If skill's `min_mindforge_version` > current MindForge version:
|
|
46
|
+
- Log a warning: "Skill [name] v[X] requires MindForge v[min] but current is v[current]."
|
|
47
|
+
- Load the skill anyway (do not block execution)
|
|
48
|
+
- Add to AUDIT entry: `"compatibility_warning": "skill requires newer MindForge"`
|
|
49
|
+
|
|
50
|
+
### Check 2 — Deprecation check
|
|
51
|
+
If the skill's `deprecated_at` field is set:
|
|
52
|
+
- Warn: "Skill [name] was deprecated on [date]. Use [replacement] instead."
|
|
53
|
+
- Load the replacement skill (if available) in addition to the deprecated one
|
|
54
|
+
- Add to AUDIT entry: `"deprecated_skill_loaded": true`
|
|
55
|
+
|
|
56
|
+
### Check 3 — Breaking change awareness
|
|
57
|
+
If the skill has a MAJOR version bump since it was last used in this project:
|
|
58
|
+
- List the breaking changes from the `breaking_changes` field
|
|
59
|
+
- Alert: "Skill [name] has breaking changes since your last usage.
|
|
60
|
+
Review these before continuing: [list changes]"
|
|
61
|
+
|
|
62
|
+
## Skill upgrade protocol
|
|
63
|
+
|
|
64
|
+
When `/mindforge:skills update [skill-name]` is run:
|
|
65
|
+
|
|
66
|
+
1. Check current version from MANIFEST.md
|
|
67
|
+
2. Compare against the latest version in the MindForge repository
|
|
68
|
+
3. If a newer version exists:
|
|
69
|
+
a. Show the diff in behaviour (changelog entries)
|
|
70
|
+
b. If MINOR or PATCH: auto-update, no confirmation needed
|
|
71
|
+
c. If MAJOR: show breaking changes, require explicit confirmation
|
|
72
|
+
4. After update: re-validate all PLAN files that reference this skill
|
|
73
|
+
(check if any `<context>` fields would be affected by the breaking changes)
|
|
74
|
+
5. Update MANIFEST.md with new version
|
|
75
|
+
6. Commit: `chore(skills): upgrade [name] v[old] → v[new]`
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# MindForge Engine — Verification Pipeline
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Automatically verify that a completed phase has actually delivered what it
|
|
5
|
+
promised in REQUIREMENTS.md. This is the agent's self-audit before human UAT.
|
|
6
|
+
|
|
7
|
+
## Four verification stages
|
|
8
|
+
|
|
9
|
+
### Stage 1 — Automated test suite
|
|
10
|
+
```bash
|
|
11
|
+
# Run the project's test suite (adapt command to project)
|
|
12
|
+
npm test
|
|
13
|
+
# or
|
|
14
|
+
pytest
|
|
15
|
+
# or
|
|
16
|
+
cargo test
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Pass criteria: ALL tests pass, zero failures.
|
|
20
|
+
If any fail: stop. Do not proceed to Stage 2.
|
|
21
|
+
Create fix plans for the failing tests before continuing (e.g., `PLAN-[N]-FIX-01.md`).
|
|
22
|
+
Record in VERIFICATION.md: "Stage 1: FAILED — [X] tests failing"
|
|
23
|
+
|
|
24
|
+
### Stage 2 — Requirement traceability
|
|
25
|
+
For each functional requirement tagged v1 for this phase in REQUIREMENTS.md:
|
|
26
|
+
|
|
27
|
+
1. Read the requirement and its acceptance criterion
|
|
28
|
+
2. Search the codebase for the implementation:
|
|
29
|
+
```bash
|
|
30
|
+
grep -r "[key term from requirement]" src/ --include="*.ts"
|
|
31
|
+
```
|
|
32
|
+
3. Find a test that covers this requirement:
|
|
33
|
+
```bash
|
|
34
|
+
grep -r "[acceptance criterion term]" tests/ --include="*.test.ts"
|
|
35
|
+
```
|
|
36
|
+
4. Classify:
|
|
37
|
+
- ✅ Implemented and tested
|
|
38
|
+
- ⚠️ Implemented but no test
|
|
39
|
+
- ❌ Not found
|
|
40
|
+
|
|
41
|
+
Any ❌ result: create a fix plan before proceeding to Stage 3.
|
|
42
|
+
Any ⚠️ result: create a test task for the next phase backlog.
|
|
43
|
+
|
|
44
|
+
### Stage 3 — Type safety and linting (TypeScript/Python projects)
|
|
45
|
+
```bash
|
|
46
|
+
# TypeScript
|
|
47
|
+
npx tsc --noEmit
|
|
48
|
+
npx eslint . --ext .ts,.tsx --max-warnings 0
|
|
49
|
+
|
|
50
|
+
# Python
|
|
51
|
+
mypy .
|
|
52
|
+
ruff check .
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Pass criteria: Zero errors, zero warnings.
|
|
56
|
+
If any errors: create targeted fix tasks. Do not proceed to Stage 4 with errors.
|
|
57
|
+
|
|
58
|
+
### Stage 4 — Security regression check
|
|
59
|
+
Activate `security-reviewer.md` persona.
|
|
60
|
+
Run the OWASP checklist from `security-review/SKILL.md` against all files
|
|
61
|
+
modified in this phase.
|
|
62
|
+
|
|
63
|
+
Specifically look for:
|
|
64
|
+
- Any new endpoints without authentication (if the project uses auth)
|
|
65
|
+
- Any new database queries without parameterisation
|
|
66
|
+
- Any new file handling without MIME type validation
|
|
67
|
+
- Any new environment variables without validation at startup
|
|
68
|
+
|
|
69
|
+
Write findings to `.planning/phases/[N]/SECURITY-REVIEW-[N].md`.
|
|
70
|
+
|
|
71
|
+
## VERIFICATION.md template
|
|
72
|
+
|
|
73
|
+
Write to `.planning/phases/[N]/VERIFICATION.md`:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
# Phase [N] Verification Report
|
|
77
|
+
|
|
78
|
+
## Date
|
|
79
|
+
[ISO-8601]
|
|
80
|
+
|
|
81
|
+
## Stage 1 — Test suite
|
|
82
|
+
- Command: `[test command]`
|
|
83
|
+
- Result: [X] tests passing, [Y] failing
|
|
84
|
+
- Status: ✅ PASS / ❌ FAIL
|
|
85
|
+
|
|
86
|
+
## Stage 2 — Requirement traceability
|
|
87
|
+
|
|
88
|
+
| FR ID | Requirement | Status | Evidence |
|
|
89
|
+
|-------|-------------------------------|--------|---------------------------------|
|
|
90
|
+
| FR-01 | [requirement text] | ✅ | `src/auth/login.ts:47` + test |
|
|
91
|
+
| FR-02 | [requirement text] | ✅ | `src/auth/register.ts:23` + test|
|
|
92
|
+
| FR-03 | [requirement text] | ⚠️ | `src/auth/reset.ts:15`, no test |
|
|
93
|
+
|
|
94
|
+
## Stage 3 — Static analysis
|
|
95
|
+
- TypeScript errors: [0 / N]
|
|
96
|
+
- ESLint warnings: [0 / N]
|
|
97
|
+
- Status: ✅ PASS / ❌ FAIL
|
|
98
|
+
|
|
99
|
+
## Stage 4 — Security regression
|
|
100
|
+
- New endpoints reviewed: [X]
|
|
101
|
+
- New database queries reviewed: [X]
|
|
102
|
+
- Findings: [None / see SECURITY-REVIEW-[N].md]
|
|
103
|
+
- Status: ✅ PASS / ❌ FAIL
|
|
104
|
+
|
|
105
|
+
## Overall status
|
|
106
|
+
✅ All stages passed — ready for human UAT
|
|
107
|
+
❌ [N] stages failed — fix plans created
|
|
108
|
+
|
|
109
|
+
## Fix plans created (if any)
|
|
110
|
+
- `PLAN-[N]-FIX-01.md`: [what it fixes]
|
|
111
|
+
```
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# MindForge Engine — Wave Executor
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Group tasks from the dependency graph into waves and execute each wave.
|
|
5
|
+
Within a wave, all tasks are independent and can run in parallel.
|
|
6
|
+
Between waves, execution is strictly sequential.
|
|
7
|
+
|
|
8
|
+
## Wave grouping algorithm
|
|
9
|
+
|
|
10
|
+
### Input
|
|
11
|
+
The dependency graph from `dependency-parser.md`.
|
|
12
|
+
|
|
13
|
+
### Algorithm — Kahn's topological sort (adapted for waves)
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Initialize:
|
|
17
|
+
remaining = all plan IDs
|
|
18
|
+
completed = empty set
|
|
19
|
+
waves = []
|
|
20
|
+
|
|
21
|
+
Repeat until remaining is empty:
|
|
22
|
+
current_wave = []
|
|
23
|
+
for each plan in remaining:
|
|
24
|
+
if ALL of plan's dependencies are in completed:
|
|
25
|
+
add plan to current_wave
|
|
26
|
+
|
|
27
|
+
if current_wave is empty AND remaining is not empty:
|
|
28
|
+
ERROR: circular dependency detected (should have been caught by parser)
|
|
29
|
+
|
|
30
|
+
waves.append(current_wave)
|
|
31
|
+
completed.add(all plans in current_wave)
|
|
32
|
+
remaining.remove(all plans in current_wave)
|
|
33
|
+
|
|
34
|
+
Return waves
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Example output for the 5-plan example above:
|
|
38
|
+
```
|
|
39
|
+
Wave 1: [01, 02] ← No dependencies — run in parallel
|
|
40
|
+
Wave 2: [03, 04] ← Depend on Wave 1 — run in parallel after Wave 1
|
|
41
|
+
Wave 3: [05] ← Depends on both Wave 2 tasks — runs after Wave 2
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Wave execution protocol
|
|
45
|
+
|
|
46
|
+
### Before starting a wave
|
|
47
|
+
1. Confirm all plans in previous wave have:
|
|
48
|
+
- Status: Completed in SUMMARY file
|
|
49
|
+
- Git commit SHA recorded
|
|
50
|
+
- `<verify>` step passed
|
|
51
|
+
|
|
52
|
+
If any plan in the previous wave failed: STOP the entire phase.
|
|
53
|
+
Do not start the next wave. Report which plan failed and why.
|
|
54
|
+
|
|
55
|
+
### During a wave — parallel execution
|
|
56
|
+
For each plan in the current wave, spawn a subagent with this exact context
|
|
57
|
+
package (see `context-injector.md` for the injection protocol):
|
|
58
|
+
|
|
59
|
+
### Subagent invocation protocol (runtime-agnostic)
|
|
60
|
+
Use the runtime-specific mechanism, but keep the inputs identical:
|
|
61
|
+
- **Claude Code:** spawn a subagent with the context package and the PLAN file.
|
|
62
|
+
Require the subagent to write `SUMMARY-[N]-[M].md` and report completion.
|
|
63
|
+
- **Antigravity:** spawn an agent via `.agent/` command with the same context
|
|
64
|
+
package and the PLAN file. Require the same SUMMARY file output.
|
|
65
|
+
|
|
66
|
+
**Context package per subagent:**
|
|
67
|
+
```
|
|
68
|
+
REQUIRED (always inject):
|
|
69
|
+
.mindforge/org/CONVENTIONS.md
|
|
70
|
+
.mindforge/org/SECURITY.md
|
|
71
|
+
The specific PLAN file (PLAN-[N]-[M].md)
|
|
72
|
+
The persona file specified in <persona> field
|
|
73
|
+
|
|
74
|
+
CONDITIONAL (inject only if referenced in plan):
|
|
75
|
+
.planning/ARCHITECTURE.md ← if plan touches architecture
|
|
76
|
+
.planning/decisions/ADR-*.md ← only ADRs referenced in plan's <context>
|
|
77
|
+
Relevant SKILL.md files ← only skills listed in plan's <context>
|
|
78
|
+
|
|
79
|
+
NEVER inject to subagents:
|
|
80
|
+
STATE.md ← subagents do not need project-level state
|
|
81
|
+
ROADMAP.md ← subagents do not need project-level roadmap
|
|
82
|
+
HANDOFF.json ← subagents do not maintain session continuity
|
|
83
|
+
Other plans ← subagents must not see sibling task plans
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### After each plan in a wave completes
|
|
87
|
+
The executing subagent must:
|
|
88
|
+
1. Run the `<verify>` step and capture output
|
|
89
|
+
2. Write SUMMARY-[N]-[M].md with verify output included
|
|
90
|
+
3. Commit with: `git add [files-in-plan] && git commit -m "type(scope): task name"`
|
|
91
|
+
4. Write an AUDIT entry (see `audit/AUDIT-SCHEMA.md`)
|
|
92
|
+
5. Report completion status back to the orchestrator
|
|
93
|
+
|
|
94
|
+
### Wave completion
|
|
95
|
+
After all plans in a wave complete:
|
|
96
|
+
1. Collect all SUMMARY files from this wave
|
|
97
|
+
2. Run the project's full test suite
|
|
98
|
+
3. If no test command exists yet: STOP and instruct the user to define it
|
|
99
|
+
in CONVENTIONS.md or add an initial test harness.
|
|
100
|
+
4. If tests fail: identify which plan introduced the failure (use `git bisect`)
|
|
101
|
+
5. Do not start the next wave until all tests pass
|
|
102
|
+
|
|
103
|
+
## Failure handling
|
|
104
|
+
|
|
105
|
+
### Task verify failure (mid-wave)
|
|
106
|
+
|
|
107
|
+
When a task's `<verify>` step fails:
|
|
108
|
+
|
|
109
|
+
1. **Stop the task immediately.** Do not attempt a second run automatically.
|
|
110
|
+
2. **Write the SUMMARY file** with status `Failed ❌` and the full verify output.
|
|
111
|
+
3. **Write a `task_failed` AUDIT entry** (see AUDIT-SCHEMA.md).
|
|
112
|
+
4. **Stop the entire wave.** Other tasks in this wave that have not yet started:
|
|
113
|
+
do not start them. Tasks already running in parallel: let them complete
|
|
114
|
+
naturally, but do not start the next wave regardless of their outcome.
|
|
115
|
+
5. **Report to the orchestrator:**
|
|
116
|
+
```
|
|
117
|
+
━━━ Wave [W] STOPPED — Task Failure ━━━━━━━━━━━━━━━━━━━━━━
|
|
118
|
+
Failed task : Plan [N]-[M]: [task name]
|
|
119
|
+
Verify output:
|
|
120
|
+
[full verify output]
|
|
121
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
122
|
+
```
|
|
123
|
+
6. **Ask the user:**
|
|
124
|
+
```
|
|
125
|
+
Options:
|
|
126
|
+
1. Spawn debug agent to diagnose the failure
|
|
127
|
+
2. Show me the failing code and I'll fix it manually
|
|
128
|
+
3. Skip this task and continue the wave (not recommended)
|
|
129
|
+
4. Abort the entire phase
|
|
130
|
+
|
|
131
|
+
Choose 1, 2, 3, or 4:
|
|
132
|
+
```
|
|
133
|
+
7. If user chooses 1: invoke `/mindforge:debug` with the failure context pre-loaded.
|
|
134
|
+
8. If user chooses 3 (skip): write a `quality_gate_failed` AUDIT entry with
|
|
135
|
+
`"gate": "verify_skipped_by_user"` and continue. This is tracked.
|
|
136
|
+
9. If user chooses 4: update STATE.md with `status: Phase [N] aborted` and stop.
|
|
137
|
+
|
|
138
|
+
### Test suite failure (between waves)
|
|
139
|
+
|
|
140
|
+
When the test suite fails after a wave completes:
|
|
141
|
+
|
|
142
|
+
1. **Identify the failing tests** — capture the full test output.
|
|
143
|
+
2. **Identify the likely causal commit:**
|
|
144
|
+
```bash
|
|
145
|
+
git log --oneline -[number of tasks in this wave]
|
|
146
|
+
```
|
|
147
|
+
3. **Report specifically:**
|
|
148
|
+
```
|
|
149
|
+
━━━ Test Suite Failure After Wave [W] ━━━━━━━━━━━━━━━━━━━━━
|
|
150
|
+
[N] tests failing.
|
|
151
|
+
|
|
152
|
+
Likely cause: [commit sha] — [commit message]
|
|
153
|
+
Failing tests:
|
|
154
|
+
- [test name]: [error]
|
|
155
|
+
- [test name]: [error]
|
|
156
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
157
|
+
```
|
|
158
|
+
4. **Write a `quality_gate_failed` AUDIT entry.**
|
|
159
|
+
5. **Do not start the next wave.** This is absolute — no exceptions.
|
|
160
|
+
6. **Ask the user:**
|
|
161
|
+
```
|
|
162
|
+
Options:
|
|
163
|
+
1. Debug the failing tests now
|
|
164
|
+
2. Revert the last wave's commits and re-plan
|
|
165
|
+
3. I'll fix the tests manually — notify me when done
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Subagent hang (no SUMMARY file after expected duration)
|
|
169
|
+
|
|
170
|
+
When a subagent has been running for an unexpectedly long time:
|
|
171
|
+
(Heuristic: if a task with < 5 files has no SUMMARY after 30 minutes of session time)
|
|
172
|
+
|
|
173
|
+
1. Alert the user: "Task [N]-[M] appears to be taking longer than expected.
|
|
174
|
+
Check if the subagent is still running or has stalled."
|
|
175
|
+
2. Provide the option to: wait longer | restart the task | skip the task.
|
|
176
|
+
3. Never silently let a wave stall indefinitely.
|
|
177
|
+
|
|
178
|
+
### Missing PLAN file detected at runtime
|
|
179
|
+
|
|
180
|
+
When execute-phase discovers a PLAN file referenced in the dependency graph is missing:
|
|
181
|
+
|
|
182
|
+
1. Stop immediately.
|
|
183
|
+
2. Report: "PLAN-[N]-[M].md was referenced but does not exist.
|
|
184
|
+
Run /mindforge:plan-phase [N] to regenerate the missing plan."
|
|
185
|
+
3. Do not continue with partial plan execution.
|
|
186
|
+
|
|
187
|
+
### Phase completion
|
|
188
|
+
After all waves complete:
|
|
189
|
+
1. Run the phase verification pipeline (see `verification-pipeline.md`)
|
|
190
|
+
2. Write VERIFICATION.md
|
|
191
|
+
3. Update STATE.md: phase N = complete
|
|
192
|
+
4. Update HANDOFF.json with next phase information
|
|
193
|
+
|
|
194
|
+
## Wave execution report format
|
|
195
|
+
|
|
196
|
+
Write to `.planning/phases/[N]/WAVE-REPORT-[N].md`:
|
|
197
|
+
|
|
198
|
+
```markdown
|
|
199
|
+
# Wave Execution Report — Phase [N]
|
|
200
|
+
|
|
201
|
+
## Wave 1
|
|
202
|
+
| Plan | Task Name | Status | Duration | Commit |
|
|
203
|
+
|------|---------------------|--------|----------|------------|
|
|
204
|
+
| 01 | Create user model | ✅ | ~8 min | abc1234 |
|
|
205
|
+
| 02 | Create product model| ✅ | ~6 min | def5678 |
|
|
206
|
+
|
|
207
|
+
**Wave 1 test results:** All passing ✅
|
|
208
|
+
|
|
209
|
+
## Wave 2
|
|
210
|
+
| Plan | Task Name | Status | Duration | Commit |
|
|
211
|
+
|------|-----------------------|--------|----------|------------|
|
|
212
|
+
| 03 | User API endpoints | ✅ | ~12 min | ghi9012 |
|
|
213
|
+
| 04 | Product API endpoints | ✅ | ~10 min | jkl3456 |
|
|
214
|
+
|
|
215
|
+
**Wave 2 test results:** All passing ✅
|
|
216
|
+
|
|
217
|
+
## Wave 3
|
|
218
|
+
| Plan | Task Name | Status | Duration | Commit |
|
|
219
|
+
|------|---------------|--------|----------|------------|
|
|
220
|
+
| 05 | Checkout UI | ✅ | ~15 min | mno7890 |
|
|
221
|
+
|
|
222
|
+
**Wave 3 test results:** All passing ✅
|
|
223
|
+
|
|
224
|
+
### Failure row format (if any task fails)
|
|
225
|
+
| Plan | Task Name | Status | Duration | Commit | Error |
|
|
226
|
+
|------|-------------------|--------|----------|---------|-------|
|
|
227
|
+
| 02 | Create product model | ❌ | ~4 min | n/a | Verify failed: TypeError ... |
|
|
228
|
+
|
|
229
|
+
## Phase summary
|
|
230
|
+
- Total tasks: 5
|
|
231
|
+
- Total commits: 5
|
|
232
|
+
- Elapsed: ~51 min
|
|
233
|
+
- Test results: All passing
|
|
234
|
+
- Status: Phase [N] complete ✅
|
|
235
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# MindForge Governance Configuration
|
|
2
|
+
|
|
3
|
+
## Tier policy
|
|
4
|
+
- Tier 1: low-risk documentation or isolated code cleanup
|
|
5
|
+
- Tier 2: broader product or operational changes
|
|
6
|
+
- Tier 3: security, privacy, auth, secrets, payments, compliance, or emergency
|
|
7
|
+
|
|
8
|
+
## Enforcement rules
|
|
9
|
+
- Tier 3 signals have higher priority than file-count heuristics
|
|
10
|
+
- Compliance gates are blocking
|
|
11
|
+
- Integration failures are non-fatal unless they prevent a required approval or
|
|
12
|
+
compliance decision from being observed
|
|
13
|
+
|
|
14
|
+
## Record locations
|
|
15
|
+
- Approval files: `.planning/approvals/`
|
|
16
|
+
- Audit archive: `.planning/audit-archive/`
|
|
17
|
+
- Milestones: `.planning/milestones/`
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# MindForge Governance — Approval Workflow
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Define the human approval process for Tier 2 peer review, Tier 3
|
|
5
|
+
security/compliance review, and emergency override handling.
|
|
6
|
+
|
|
7
|
+
## Approval sources
|
|
8
|
+
Approvals are represented as files in `.planning/approvals/`. Commands must list
|
|
9
|
+
only `status: pending` approval requests by default.
|
|
10
|
+
|
|
11
|
+
## Identity model
|
|
12
|
+
Current approver identity is derived from `git config user.email` or `$USER`.
|
|
13
|
+
This is convenient but spoofable. For higher-assurance environments, integrate
|
|
14
|
+
the approval flow with your IdP or SCM identity provider.
|
|
15
|
+
|
|
16
|
+
## Standard workflow
|
|
17
|
+
1. Classifier determines tier
|
|
18
|
+
2. Create approval file with reason, scope, diff summary, and expiry time
|
|
19
|
+
3. Notify configured approvers
|
|
20
|
+
4. Record approval or rejection
|
|
21
|
+
5. On rejection, create a fix task that carries the rejection reason forward
|
|
22
|
+
6. Re-request approval only after the rejection reason has been addressed
|
|
23
|
+
|
|
24
|
+
## Expiry and SLA handling
|
|
25
|
+
Expiry processing is session-dependent. If no MindForge session is active, an
|
|
26
|
+
expired approval will be detected the next time the approval command runs.
|
|
27
|
+
|
|
28
|
+
Use config-driven values from `INTEGRATIONS-CONFIG.md`:
|
|
29
|
+
- `TIER2_APPROVERS`
|
|
30
|
+
- `TIER3_APPROVERS`
|
|
31
|
+
- `EMERGENCY_APPROVERS`
|
|
32
|
+
- SLA and expiry hour settings
|
|
33
|
+
|
|
34
|
+
## Emergency override
|
|
35
|
+
Emergency approval requires the `--emergency` flag and an approver identity that
|
|
36
|
+
appears in `EMERGENCY_APPROVERS`. Log the approver identity and rationale in
|
|
37
|
+
AUDIT. Emergency override bypass is never implicit.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# MindForge Governance — Change Classifier
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Assign each change a governance tier before execution and again before release.
|
|
5
|
+
Tier 3 signals always override lower-risk heuristics.
|
|
6
|
+
|
|
7
|
+
## Trigger points
|
|
8
|
+
- Before each plan executes
|
|
9
|
+
- Before PR or merge request creation
|
|
10
|
+
- Before emergency override requests are processed
|
|
11
|
+
|
|
12
|
+
## Tier model
|
|
13
|
+
|
|
14
|
+
| Tier | Meaning | Approval requirement |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| 1 | Low-risk documentation or isolated refactor | none |
|
|
17
|
+
| 2 | Broad change, cross-cutting impact, or moderate operational risk | peer approval |
|
|
18
|
+
| 3 | Security, privacy, auth, payment, secrets, or compliance-sensitive | security/compliance approval |
|
|
19
|
+
|
|
20
|
+
## Step 1 — Base heuristics
|
|
21
|
+
- More than 10 files or more than 300 lines changed defaults to Tier 2
|
|
22
|
+
- Infra, deployment, or schema changes default to at least Tier 2
|
|
23
|
+
- File count is only a signal; it never downgrades a Tier 3 match
|
|
24
|
+
|
|
25
|
+
## Step 2 — Apply Tier 3 rules first
|
|
26
|
+
Tier 3 uses three independent signals. Any one match makes the change Tier 3.
|
|
27
|
+
|
|
28
|
+
### Signal A — File path patterns
|
|
29
|
+
Security-critical directories and files:
|
|
30
|
+
`auth/`, `security/`, `payment/`, `billing/`, `privacy/`, `crypto/`, `secrets/`
|
|
31
|
+
|
|
32
|
+
Security-critical names:
|
|
33
|
+
`login.ts`, `logout.ts`, `token.ts`, `password.ts`, `credentials.ts`,
|
|
34
|
+
`session.ts`, `oauth.ts`, `jwt.ts`, `hash.ts`, `encrypt.ts`, `stripe.ts`,
|
|
35
|
+
`payment.ts`, `billing.ts`, `pii.ts`, `consent.ts`
|
|
36
|
+
|
|
37
|
+
### Signal B — Code content patterns
|
|
38
|
+
Scan the actual diff content, not only filenames, for patterns such as:
|
|
39
|
+
`bcrypt`, `argon2`, `jwt.sign`, `jwt.verify`, `jose.sign`, `jose.verify`,
|
|
40
|
+
`stripe.`, `paypal.`, `createCipheriv`, `createDecipheriv`, `crypto.subtle`,
|
|
41
|
+
`hashPassword`, `verifyPassword`, `encrypt(`, `decrypt(`, `role.*permission`,
|
|
42
|
+
`hasPermission`, `SET ROLE`, `GRANT`
|
|
43
|
+
|
|
44
|
+
This protects against security-critical code being added to innocuous filenames
|
|
45
|
+
like `src/utils/helper.ts`.
|
|
46
|
+
|
|
47
|
+
### Signal C — AUDIT history patterns
|
|
48
|
+
If the current phase has a recent HIGH or CRITICAL `security_finding`, the next
|
|
49
|
+
change in that phase is elevated to Tier 3 automatically.
|
|
50
|
+
|
|
51
|
+
## Classification audit entry
|
|
52
|
+
Record why the tier was selected:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"event": "change_classified",
|
|
57
|
+
"tier": 3,
|
|
58
|
+
"classification_reason": "code pattern: jwt.sign found in src/utils/helper.ts",
|
|
59
|
+
"signals_checked": ["file_path", "code_content", "audit_history"],
|
|
60
|
+
"signal_triggered": "code_content",
|
|
61
|
+
"pattern_matched": "jwt.sign"
|
|
62
|
+
}
|
|
63
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# MindForge Governance — Compliance Gates
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Apply non-bypassable release gates for secrets, approvals, and privacy controls.
|
|
5
|
+
|
|
6
|
+
## Gate 1 — Required verification
|
|
7
|
+
The plan's verify step and the project test suite must pass.
|
|
8
|
+
|
|
9
|
+
## Gate 2 — Required approvals
|
|
10
|
+
Tier 2 and Tier 3 changes must have approved, non-expired approval records.
|
|
11
|
+
|
|
12
|
+
## Gate 3 — Secret detection
|
|
13
|
+
No real secrets may enter the diff, audit log, or published docs.
|
|
14
|
+
Override is not permitted.
|
|
15
|
+
|
|
16
|
+
For tests that exercise secret detection, use clearly fake patterns that do not
|
|
17
|
+
match production secret regexes, for example `TEST_ONLY_FAKE_KEY_abc123`.
|
|
18
|
+
|
|
19
|
+
## Gate 4 — GDPR/PII compliance check
|
|
20
|
+
This gate runs independently of skill loading.
|
|
21
|
+
|
|
22
|
+
Trigger if the diff adds fields or columns resembling:
|
|
23
|
+
`email`, `phone`, `mobile`, `address`, `postcode`, `zip`, `ssn`, `dob`,
|
|
24
|
+
`birth_date`, `first_name`, `last_name`, `national_id`, `passport`,
|
|
25
|
+
`credit_card`, `bank_account`, `iban`, `bic`
|
|
26
|
+
|
|
27
|
+
If triggered, verify `.planning/ARCHITECTURE.md` documents retention policy for
|
|
28
|
+
the relevant data. If retention is missing:
|
|
29
|
+
- block completion
|
|
30
|
+
- write `compliance_gate_failed` to AUDIT
|
|
31
|
+
- require Tier 3 compliance approval for override
|