mindforge-cc 11.9.9 → 12.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/mindforge/agent.md +1 -1
- package/.claude/commands/mindforge/agent.md +1 -1
- package/.mindforge/config.json +1 -1
- package/.mindforge/dynamic-workflows/scripts/verification-loop.js +3 -0
- package/CHANGELOG.md +88 -0
- package/MINDFORGE.md +2 -2
- package/README.md +28 -24
- package/RELEASENOTES.md +36 -0
- package/SECURITY.md +1 -1
- package/bin/governance/config-manager.js +4 -1
- package/bin/installer-core.js +16 -7
- package/bin/security/trust-boundaries.js +12 -0
- package/bin/utils/readiness-gate.js +1 -1
- package/bin/wizard/theme.js +3 -4
- package/changelogs/v12.0.0.md +89 -0
- package/docs/faq.md +2 -2
- package/docs/getting-started.md +2 -2
- package/docs/sdk-reference.md +3 -3
- package/docs/troubleshooting.md +1 -1
- package/docs/user-guide.md +3 -3
- package/package.json +2 -1
|
@@ -8,7 +8,7 @@ allowed-tools:
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
<objective>
|
|
11
|
-
Provide an on-demand mechanism to "spawn" any of the
|
|
11
|
+
Provide an on-demand mechanism to "spawn" any of the 216 standardized MindForge personas. This allows the user to switch the AI assistant's context, role, and process to a specific specialized mode (e.g., Roadmapper, Security Reviewer, Analyst).
|
|
12
12
|
</objective>
|
|
13
13
|
|
|
14
14
|
<execution_context>
|
|
@@ -8,7 +8,7 @@ allowed-tools:
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
<objective>
|
|
11
|
-
Provide an on-demand mechanism to "spawn" any of the
|
|
11
|
+
Provide an on-demand mechanism to "spawn" any of the 216 standardized MindForge personas. This allows the user to switch the AI assistant's context, role, and process to a specific specialized mode (e.g., Roadmapper, Security Reviewer, Analyst).
|
|
12
12
|
</objective>
|
|
13
13
|
|
|
14
14
|
<execution_context>
|
package/.mindforge/config.json
CHANGED
|
@@ -128,6 +128,9 @@ for (let round = 1; round <= maxRounds; round++) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
phase('Report');
|
|
131
|
+
if (scoreHistory.length === 0) {
|
|
132
|
+
return { task, metric: metric || '(scorer-inferred)', finalArtifact: currentArtifact, scoreHistory: [], error: 'no-rounds-completed' };
|
|
133
|
+
}
|
|
131
134
|
const finalScore = scoreHistory.at(-1);
|
|
132
135
|
log(`Final score: ${finalScore.score}/100 across ${scoreHistory.length} round(s)`);
|
|
133
136
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,93 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [12.0.0] — 2026-09-24 — First release aimed at real external users
|
|
4
|
+
|
|
5
|
+
MindForge's first release deliberately cut for real external users, not
|
|
6
|
+
just internal iteration. The major-version bump is a milestone marker for
|
|
7
|
+
that shift, not a signal of a breaking API/behavior change — there is none
|
|
8
|
+
in this release; every item below is a fix. It follows a second, independent
|
|
9
|
+
8-agent audit (security/STRIDE, staff-engineer code review, deps+license,
|
|
10
|
+
live production dry-run across all 6 supported runtimes, docs accuracy,
|
|
11
|
+
re-verification of the prior release's deferred backlog, test-coverage gaps,
|
|
12
|
+
and a full trace of the CI/CD release pipeline) run specifically to check
|
|
13
|
+
whether v11.9.9 was actually ready for that shift. It wasn't yet: this
|
|
14
|
+
release closes the 1 CRITICAL and 4 HIGH findings that audit surfaced, plus
|
|
15
|
+
8 MEDIUM/LOW findings judged worth fixing before this exact cutover, all
|
|
16
|
+
independently adversarially re-verified (10/10 confirmed, 0 refuted) before
|
|
17
|
+
being fixed.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
**CRITICAL**
|
|
22
|
+
|
|
23
|
+
- `--global` install printed a fabricated "PAYLOAD MANIFEST" (216 personas,
|
|
24
|
+
122 skills, etc. "active") while writing none of them — the install
|
|
25
|
+
success banner counted the source package tree instead of what a global
|
|
26
|
+
install actually writes (entry file, commands, subagents only, by
|
|
27
|
+
design). Now prints an honest message describing exactly that.
|
|
28
|
+
|
|
29
|
+
**HIGH**
|
|
30
|
+
|
|
31
|
+
- `help.md`/`status.md`/`health.md`/`security-scan.md`'s honesty fixes from
|
|
32
|
+
11.9.9 didn't reach the install banner itself: it printed "Proactive
|
|
33
|
+
Semantic Intent Harvesting active" — unhedged — for a feature confirmed
|
|
34
|
+
to be a genuine no-op, one line below a properly-hedged PQAS claim.
|
|
35
|
+
Reworded to match. The banner's surrounding "Autonomous Enterprise
|
|
36
|
+
Agentic Ecosystem" / "Sovereign Intelligence" / "Autonomous Governance &
|
|
37
|
+
Self-Healing" marketing language, unbacked by anything the rest of the
|
|
38
|
+
project stands behind, is gone too.
|
|
39
|
+
- `verification-loop.js` (one of the 8 dynamic-workflow scripts null-guarded
|
|
40
|
+
in 11.9.9) could still crash with an unhandled `TypeError` if its round
|
|
41
|
+
loop completed zero rounds before any guard ran. Fixed with the same
|
|
42
|
+
graceful-return shape its siblings already use.
|
|
43
|
+
- Two real test-coverage gaps: nothing asserted the removed `godmode` skill
|
|
44
|
+
stays absent, or that `--minimal` actually ships 0 persona files. Both
|
|
45
|
+
covered now, each verified by deliberately breaking the real fix and
|
|
46
|
+
confirming the new test catches it.
|
|
47
|
+
|
|
48
|
+
**MEDIUM**
|
|
49
|
+
|
|
50
|
+
- `bin/security/trust-boundaries.js`'s deny-class gate missed the classic
|
|
51
|
+
"curl/wget a payload, chmod +x it, run it by path" dropper chain (no
|
|
52
|
+
interpreter keyword in the final step, so neither existing pattern
|
|
53
|
+
fired). Added a pattern for it.
|
|
54
|
+
- `bin/governance/config-manager.js`'s `ConfigManager.set()` was vulnerable
|
|
55
|
+
to prototype pollution via a `__proto__`-shaped key — not reachable from
|
|
56
|
+
any shipped call site today, but a live, shared, mutable singleton.
|
|
57
|
+
Guarded, matching a pattern this codebase already uses elsewhere.
|
|
58
|
+
- CodeQL flagged (high severity) an incomplete regex-escape in
|
|
59
|
+
`bin/utils/readiness-gate.js` once this release's own plugin-bundling fix
|
|
60
|
+
(below) exposed it to scanning for the first time — only literal dots
|
|
61
|
+
were escaped before building a `RegExp` from the package version string.
|
|
62
|
+
Fixed to escape every regex metacharacter.
|
|
63
|
+
- Dependabot's unconstrained docker config silently shipped the Docker MCP
|
|
64
|
+
Catalog image on `node:25-bookworm-slim`, a non-LTS release. Reverted to
|
|
65
|
+
`node:22-bookworm-slim` (the CI test matrix's highest tested version) and
|
|
66
|
+
added an ignore rule blocking future Node major-version bumps of the base
|
|
67
|
+
image.
|
|
68
|
+
- `docs/PERSONAS.md`'s "Enterprise Swarm Templates" table cited 16 of 25
|
|
69
|
+
persona names that don't exist — a doc artifact never regenerated after
|
|
70
|
+
`swarm-templates.json`'s own dangling-reference cleanup in 11.9.9.
|
|
71
|
+
Regenerated wholesale from the real file: all 49 templates, exact
|
|
72
|
+
leader/members/focus values.
|
|
73
|
+
- The release workflow's "stable dist-tag" step has failed on 4 consecutive
|
|
74
|
+
real releases (11.9.6 through 11.9.9) for an identical, root-caused
|
|
75
|
+
reason: its retry budget (3 attempts × 5s) was an order of magnitude
|
|
76
|
+
short of npm's own stated multi-minute propagation window, even though
|
|
77
|
+
the underlying write always succeeded. Widened to 10 attempts × 15s.
|
|
78
|
+
- `.agent/settings.json` was missing the `instinct-capture` hook
|
|
79
|
+
`.claude/settings.json` has had since before 11.9.0 — a tracked,
|
|
80
|
+
documented parity gap. Mirrored the registration and, for the first
|
|
81
|
+
time, bundled its dependency closure into the plugin distribution.
|
|
82
|
+
- Three GitHub Actions hygiene items: an `${{ }}`-into-shell interpolation
|
|
83
|
+
inconsistency in `control-plane.yml`, an unused `contents: write` grant
|
|
84
|
+
in `auto-pr.yml`, and an unverified `gitleaks` binary download in
|
|
85
|
+
`secret-scan.yml` (now checksum-verified against the project's own
|
|
86
|
+
published `checksums.txt`).
|
|
87
|
+
- Stale doc drift: `agent.md`'s "13+ personas" claim (two mirrors)
|
|
88
|
+
corrected to 216; `docs/registry/PERSONAS.md`'s 3-release-stale version
|
|
89
|
+
header and unhedged PQAS citation corrected.
|
|
90
|
+
|
|
3
91
|
## [11.9.9] — 2026-09-23 — Release-readiness audit: 5 CRITICAL + 9 HIGH findings fixed
|
|
4
92
|
|
|
5
93
|
Patch release. An 8-agent audit workflow tested every MindForge surface (slash commands,
|
package/MINDFORGE.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# MINDFORGE.md — Parameter Registry (
|
|
1
|
+
# MINDFORGE.md — Parameter Registry (v12.0.0)
|
|
2
2
|
|
|
3
3
|
## 1. IDENTITY & VERSIONING
|
|
4
4
|
|
|
5
5
|
[NAME] = MindForge
|
|
6
|
-
[VERSION] =
|
|
6
|
+
[VERSION] = 12.0.0
|
|
7
7
|
[STABLE] = true
|
|
8
8
|
[MODE] = "Platform Sovereign"
|
|
9
9
|
[REQUIRED_CORE_VERSION] = 11.9.1
|
package/README.md
CHANGED
|
@@ -70,7 +70,7 @@ but it declined to run on almost every project, so in practice nothing was enfor
|
|
|
70
70
|
|
|
71
71
|
What that means, measured rather than asserted:
|
|
72
72
|
|
|
73
|
-
- **The `npx` channel generates the config it never used to ship.** `files[]` has
|
|
73
|
+
- **The `npx` channel generates the config it never used to ship.** `files[]` has 53 entries and
|
|
74
74
|
none of them contains `settings`, so no settings file is *published* — instead
|
|
75
75
|
`bin/installer/hook-registration.js` writes one at install time, merging append-only into any
|
|
76
76
|
file you already have. Measured on a confined install: **8 hooks registered** into
|
|
@@ -239,33 +239,37 @@ Full verification walkthrough: [docs/quick-verify.md](docs/quick-verify.md).
|
|
|
239
239
|
|
|
240
240
|
## Latest release
|
|
241
241
|
|
|
242
|
-
**
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
242
|
+
**v12.0.0** (2026-09-24) — First release aimed at real external users. The major-version
|
|
243
|
+
bump marks that shift, not a breaking change — there isn't one; every item here is a fix.
|
|
244
|
+
A second, independent 8-agent audit checked whether v11.9.9 actually cleared that bar
|
|
245
|
+
(security/STRIDE, staff-engineer code review, deps+license, a live production dry-run
|
|
246
|
+
across all 6 supported runtimes, docs accuracy, re-verification of the prior release's
|
|
247
|
+
deferred backlog, test-coverage gaps, and a full trace of the release pipeline) and found
|
|
248
|
+
1 CRITICAL + 4 HIGH issues still standing in the way. The CRITICAL: `--global` installs
|
|
249
|
+
printed a fabricated banner claiming 216 personas/122 skills were "active" while writing
|
|
250
|
+
none of them — now prints an honest description of what a global install actually writes.
|
|
251
|
+
The four HIGH: an unhedged "active" claim for a confirmed no-op feature plus unearned
|
|
252
|
+
"Autonomous Enterprise/Sovereign" marketing language in the install banner, both reworded;
|
|
253
|
+
a dynamic-workflow script's own null-guard commit missed one crash-causing edge case, now
|
|
254
|
+
covered; and two real test-coverage gaps (nothing guarded the removed `godmode` skill or
|
|
255
|
+
the `--minimal` persona fix against regressing) are closed. Eight more, lower severity: a
|
|
256
|
+
security dropper-chain pattern gap, a latent prototype-pollution path, a CodeQL-flagged
|
|
257
|
+
regex-escape bug, a non-LTS Node base image that slipped in via Dependabot, a docs table
|
|
258
|
+
citing 16 nonexistent personas, a release-pipeline step that's failed cosmetically on the
|
|
259
|
+
last 4 releases, a cross-runtime hook-registration parity gap, and CI/doc hygiene fixes.
|
|
260
|
+
See [RELEASENOTES.md](./RELEASENOTES.md) or [CHANGELOG.md](./CHANGELOG.md).
|
|
260
261
|
|
|
261
262
|
<details>
|
|
262
263
|
<summary><strong>Earlier releases</strong></summary>
|
|
263
264
|
|
|
264
|
-
**v11.9.
|
|
265
|
-
|
|
266
|
-
`--minimal`
|
|
267
|
-
findings
|
|
268
|
-
|
|
265
|
+
**v11.9.9** ran the first release-readiness audit as a gate before pointing real external
|
|
266
|
+
users at the project for the first time — 5 CRITICAL findings (including a shipped LLM
|
|
267
|
+
jailbreak skill and a `--minimal` flag that shipped the full persona set anyway) and 9 HIGH
|
|
268
|
+
findings, all fixed. **v11.9.8** fixed two real bugs found by a literal, end-to-end README
|
|
269
|
+
audit (113 claims checked, 98 held up): `--runtime claude,cursor` crashed the installer
|
|
270
|
+
outright, and `--minimal` claimed "no persona library" but shipped all 216 anyway. The
|
|
271
|
+
other twelve findings were documentation catching up to what the code actually does. The
|
|
272
|
+
release before that, **v11.9.7**, fixed a version self-contradiction and a false "Enabled"
|
|
269
273
|
claim in the install banner, a dead `docs.mindforge.cc` link, and a persona-count doc
|
|
270
274
|
regression (218 → back to the correct 216) introduced by v11.9.6's own honesty pass.
|
|
271
275
|
**v11.9.6** was the release-readiness pass before pointing real, external users at the
|
package/RELEASENOTES.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## v12.0.0 — 2026-09-24 — First release aimed at real external users
|
|
4
|
+
|
|
5
|
+
### Why this release exists
|
|
6
|
+
|
|
7
|
+
This is the first MindForge release deliberately cut for real external users, not just
|
|
8
|
+
internal iteration — the major-version bump marks that shift, not a breaking change (there
|
|
9
|
+
isn't one; every item below is a fix). Ahead of it, a second independent 8-agent audit
|
|
10
|
+
checked whether v11.9.9 actually cleared that bar: security/STRIDE review, a fresh
|
|
11
|
+
staff-engineer code review, a dependency and license audit, a live production dry-run
|
|
12
|
+
across all 6 supported runtimes, a docs-accuracy pass, re-verification of the prior
|
|
13
|
+
release's deferred backlog, a test-coverage-gap sweep, and a full trace of the release
|
|
14
|
+
pipeline itself. It found 1 CRITICAL and 4 HIGH issue still standing in the way, plus 8
|
|
15
|
+
MEDIUM/LOW issues worth closing before this exact cutover — all adversarially re-verified
|
|
16
|
+
(10/10 confirmed, 0 refuted) before being fixed.
|
|
17
|
+
|
|
18
|
+
### The user-visible part
|
|
19
|
+
|
|
20
|
+
**The one CRITICAL:** `--global` installs printed a fabricated success banner claiming 216
|
|
21
|
+
personas and 122 skills were "active," when a global install writes none of them by
|
|
22
|
+
design — now prints an honest description of what it actually writes.
|
|
23
|
+
|
|
24
|
+
**Four HIGH fixes:** the install banner also claimed a "Proactive Semantic Intent
|
|
25
|
+
Harvesting" feature was "active" when it's a confirmed no-op, and carried marketing
|
|
26
|
+
language ("Autonomous Enterprise Agentic Ecosystem," "Sovereign Intelligence") this project
|
|
27
|
+
doesn't otherwise stand behind — both reworded to match the honesty bar the rest of the
|
|
28
|
+
docs already hold to. A dynamic-workflow script could still crash on an edge case its own
|
|
29
|
+
null-guard commit missed. Two real test-coverage gaps (nothing guarded the removed
|
|
30
|
+
`godmode` skill or the `--minimal` persona fix against regressing) are closed.
|
|
31
|
+
|
|
32
|
+
**Eight more, lower severity:** a security dropper-chain pattern gap, a latent
|
|
33
|
+
prototype-pollution path, a CodeQL-flagged incomplete regex escape, a non-LTS Node base
|
|
34
|
+
image that slipped in via an unconstrained Dependabot config, a docs table citing 16
|
|
35
|
+
personas that don't exist, a release-pipeline step that's failed cosmetically on the last 4
|
|
36
|
+
releases, a cross-runtime hook-registration parity gap, and a handful of GitHub Actions and
|
|
37
|
+
documentation hygiene fixes. Full list in [CHANGELOG.md](./CHANGELOG.md).
|
|
38
|
+
|
|
3
39
|
## v11.9.9 — 2026-09-23 — Release-readiness audit: 5 CRITICAL + 9 HIGH findings fixed
|
|
4
40
|
|
|
5
41
|
### Why this release exists
|
package/SECURITY.md
CHANGED
|
@@ -54,10 +54,13 @@ class ConfigManager {
|
|
|
54
54
|
|
|
55
55
|
for (let i = 0; i < keys.length - 1; i++) {
|
|
56
56
|
const k = keys[i];
|
|
57
|
+
if (k === '__proto__' || k === 'constructor' || k === 'prototype') continue;
|
|
57
58
|
if (!target[k]) target[k] = {};
|
|
58
59
|
target = target[k];
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
+
const lastKey = keys[keys.length - 1];
|
|
62
|
+
if (lastKey === '__proto__' || lastKey === 'constructor' || lastKey === 'prototype') return value;
|
|
63
|
+
target[lastKey] = value;
|
|
61
64
|
|
|
62
65
|
this._save();
|
|
63
66
|
return value;
|
package/bin/installer-core.js
CHANGED
|
@@ -1123,7 +1123,8 @@ async function install(runtime, scope, options = {}) {
|
|
|
1123
1123
|
Theme.printStatus(c.dim(' - Post-Quantum Agentic Security (PQAS): available in simulated/experimental '
|
|
1124
1124
|
+ 'mode (inactive by default — set experimental.pqc_demo=true to enable the simulated demo)'), 'info');
|
|
1125
1125
|
}
|
|
1126
|
-
Theme.printStatus(c.dim(' - Proactive Semantic Intent Harvesting
|
|
1126
|
+
Theme.printStatus(c.dim(' - Proactive Semantic Intent Harvesting: available in simulated/experimental '
|
|
1127
|
+
+ 'mode (the underlying scan/claim logic is not yet wired to run automatically)'), 'info');
|
|
1127
1128
|
|
|
1128
1129
|
// bin/ utilities (remaining non-engine scripts)
|
|
1129
1130
|
if (withUtils) {
|
|
@@ -1404,17 +1405,25 @@ async function run(args) {
|
|
|
1404
1405
|
}
|
|
1405
1406
|
|
|
1406
1407
|
if (!isUninstall) {
|
|
1407
|
-
// collectManifestStats() counts the SOURCE tree, not what was written. For a normal install
|
|
1408
|
-
// coincide, so the panel is accidentally accurate. For a self-install nothing is copied, and
|
|
1409
|
-
//
|
|
1410
|
-
//
|
|
1411
|
-
//
|
|
1408
|
+
// collectManifestStats() counts the SOURCE tree, not what was written. For a normal LOCAL install
|
|
1409
|
+
// those coincide, so the panel is accidentally accurate. For a self-install nothing is copied, and
|
|
1410
|
+
// for a GLOBAL install Section 2.1 (skills/hooks/personas/docs/memory/plugins) and Section 3
|
|
1411
|
+
// (.mindforge/ engine, .planning/, bin/) never ran — both are gated `scope === 'local'` above — so
|
|
1412
|
+
// the panel announced "Personas (216 active)" / "Skill Packs (122 verified)" / a full PAYLOAD
|
|
1413
|
+
// MANIFEST for a run that deployed and verified none of them: a summary of the repository
|
|
1414
|
+
// presenting itself as an installation report. Gating on scope too is the honest minimum. Making
|
|
1412
1415
|
// the panel report MEASURED counts on every path is a larger change and is deliberately not
|
|
1413
1416
|
// attempted here — it would need the install to return what it wrote.
|
|
1414
|
-
if (isSelfInstall()) {
|
|
1417
|
+
if (isSelfInstall() && scope === 'local') {
|
|
1415
1418
|
Theme.printResolved(c.bold('Self-install complete — no framework files were written'));
|
|
1416
1419
|
Theme.printStatus(c.dim('This repository IS the framework: its committed .claude/ and .agent/ '
|
|
1417
1420
|
+ 'trees are the source, so there was nothing to deploy.'), 'info');
|
|
1421
|
+
} else if (scope !== 'local') {
|
|
1422
|
+
Theme.printResolved(c.bold('Global install complete'));
|
|
1423
|
+
Theme.printStatus(c.dim('A --global install writes only the entry file, slash commands, and '
|
|
1424
|
+
+ 'native subagents into your home directory. Skills, personas, hooks, and the .mindforge/ '
|
|
1425
|
+
+ 'framework engine are NOT part of a global install by design — run a --local install in a '
|
|
1426
|
+
+ 'project directory to get those.'), 'info');
|
|
1418
1427
|
} else {
|
|
1419
1428
|
const stats = collectManifestStats();
|
|
1420
1429
|
Theme.printSuccessV2(runtime, scope, stats);
|
|
@@ -199,6 +199,18 @@ function isHighImpact(command) {
|
|
|
199
199
|
|
|
200
200
|
// ── #14 Power-state commands ────────────────────────────────────────────
|
|
201
201
|
/\b(shutdown|reboot|halt|poweroff)\b/i,
|
|
202
|
+
|
|
203
|
+
// ── #16 Download -> chmod +x -> direct execution (dropper chain) ───────
|
|
204
|
+
// curl/wget fetches a payload, chmod +x makes it executable, then the
|
|
205
|
+
// SAME command line invokes it directly by path with no interpreter
|
|
206
|
+
// keyword in that final step — so neither #4 (pipe-to-shell) nor #5
|
|
207
|
+
// (interpreter + untrusted path) above ever see it. Requires all three
|
|
208
|
+
// in order: a curl/wget call, a chmod ... +x on that call's command
|
|
209
|
+
// segment, and a later bare invocation of an absolute, /tmp, /var/tmp,
|
|
210
|
+
// /dev/shm, or ~/-rooted path as its own command (introduced by a
|
|
211
|
+
// separator or the start of the line) — i.e. the path being run, not
|
|
212
|
+
// merely referenced as an argument (audit finding, pre-release review).
|
|
213
|
+
/\b(curl|wget)\b[\s\S]*?\bchmod\b[^;&|\n]*\+x\b[\s\S]*?(^|[;&|\n]\s*)(~\/|\/tmp\/|\/var\/tmp\/|\/dev\/shm\/|\/)\S+/i,
|
|
202
214
|
];
|
|
203
215
|
return patterns.some(pattern => pattern.test(sanitized));
|
|
204
216
|
}
|
|
@@ -119,7 +119,7 @@ function releaseReadinessChecks(root) {
|
|
|
119
119
|
label: 'RELEASENOTES.md present and has an entry for the current version',
|
|
120
120
|
points: 2,
|
|
121
121
|
pass: fileExists(root, 'RELEASENOTES.md') && Boolean(pkgVersion)
|
|
122
|
-
&& new RegExp(`^## v${pkgVersion.replace(
|
|
122
|
+
&& new RegExp(`^## v${pkgVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(?![\\d.\\w-])`, 'm')
|
|
123
123
|
.test(safeRead(root, 'RELEASENOTES.md')),
|
|
124
124
|
fix: `Add a "## v${pkgVersion || '?'}" section to RELEASENOTES.md. README.md links here as the human-readable route to the BREAKING notes, so releasing without one points readers at a file whose newest entry describes a different version.`,
|
|
125
125
|
},
|
package/bin/wizard/theme.js
CHANGED
|
@@ -41,7 +41,7 @@ const Theme = {
|
|
|
41
41
|
'╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝'
|
|
42
42
|
].join('\n'),
|
|
43
43
|
|
|
44
|
-
tagline: '
|
|
44
|
+
tagline: 'AI-NATIVE AGENTIC FRAMEWORK FOR CLAUDE CODE',
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Print a styled header with BMad-style border flare
|
|
@@ -66,9 +66,8 @@ const Theme = {
|
|
|
66
66
|
console.log(` ${this.colors.dim('│')} ${this.colors.bold('THE PLATFORM VISION:')}`);
|
|
67
67
|
console.log(` ${this.colors.dim('│')} - Unified Enterprise Agentic Ecosystem`);
|
|
68
68
|
console.log(` ${this.colors.dim('│')} - Modular Skills & Persona Architecture`);
|
|
69
|
-
|
|
70
|
-
console.log(` ${this.colors.dim('│')} -
|
|
71
|
-
console.log(` ${this.colors.dim('│')} - Autonomous Governance & Self-Healing`);
|
|
69
|
+
console.log(` ${this.colors.dim('│')} - ${this.colors.magenta('Post-Quantum Security')} (simulated) & Proactive Task Homing`);
|
|
70
|
+
console.log(` ${this.colors.dim('│')} - Governance, Audit, and Verification Gates`);
|
|
72
71
|
console.log(` ${this.colors.dim('│')}`);
|
|
73
72
|
console.log(` ${this.colors.dim('│')} ${this.colors.yellow('🌟 100% FREE & OPEN SOURCE')}`);
|
|
74
73
|
console.log(` ${this.colors.dim('│')} - No paywalls. No gated content.`);
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [12.0.0] — 2026-09-24 — First release aimed at real external users
|
|
4
|
+
|
|
5
|
+
MindForge's first release deliberately cut for real external users, not
|
|
6
|
+
just internal iteration. The major-version bump is a milestone marker for
|
|
7
|
+
that shift, not a signal of a breaking API/behavior change — there is none
|
|
8
|
+
in this release; every item below is a fix. It follows a second, independent
|
|
9
|
+
8-agent audit (security/STRIDE, staff-engineer code review, deps+license,
|
|
10
|
+
live production dry-run across all 6 supported runtimes, docs accuracy,
|
|
11
|
+
re-verification of the prior release's deferred backlog, test-coverage gaps,
|
|
12
|
+
and a full trace of the CI/CD release pipeline) run specifically to check
|
|
13
|
+
whether v11.9.9 was actually ready for that shift. It wasn't yet: this
|
|
14
|
+
release closes the 1 CRITICAL and 4 HIGH findings that audit surfaced, plus
|
|
15
|
+
8 MEDIUM/LOW findings judged worth fixing before this exact cutover, all
|
|
16
|
+
independently adversarially re-verified (10/10 confirmed, 0 refuted) before
|
|
17
|
+
being fixed.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
**CRITICAL**
|
|
22
|
+
|
|
23
|
+
- `--global` install printed a fabricated "PAYLOAD MANIFEST" (216 personas,
|
|
24
|
+
122 skills, etc. "active") while writing none of them — the install
|
|
25
|
+
success banner counted the source package tree instead of what a global
|
|
26
|
+
install actually writes (entry file, commands, subagents only, by
|
|
27
|
+
design). Now prints an honest message describing exactly that.
|
|
28
|
+
|
|
29
|
+
**HIGH**
|
|
30
|
+
|
|
31
|
+
- `help.md`/`status.md`/`health.md`/`security-scan.md`'s honesty fixes from
|
|
32
|
+
11.9.9 didn't reach the install banner itself: it printed "Proactive
|
|
33
|
+
Semantic Intent Harvesting active" — unhedged — for a feature confirmed
|
|
34
|
+
to be a genuine no-op, one line below a properly-hedged PQAS claim.
|
|
35
|
+
Reworded to match. The banner's surrounding "Autonomous Enterprise
|
|
36
|
+
Agentic Ecosystem" / "Sovereign Intelligence" / "Autonomous Governance &
|
|
37
|
+
Self-Healing" marketing language, unbacked by anything the rest of the
|
|
38
|
+
project stands behind, is gone too.
|
|
39
|
+
- `verification-loop.js` (one of the 8 dynamic-workflow scripts null-guarded
|
|
40
|
+
in 11.9.9) could still crash with an unhandled `TypeError` if its round
|
|
41
|
+
loop completed zero rounds before any guard ran. Fixed with the same
|
|
42
|
+
graceful-return shape its siblings already use.
|
|
43
|
+
- Two real test-coverage gaps: nothing asserted the removed `godmode` skill
|
|
44
|
+
stays absent, or that `--minimal` actually ships 0 persona files. Both
|
|
45
|
+
covered now, each verified by deliberately breaking the real fix and
|
|
46
|
+
confirming the new test catches it.
|
|
47
|
+
|
|
48
|
+
**MEDIUM**
|
|
49
|
+
|
|
50
|
+
- `bin/security/trust-boundaries.js`'s deny-class gate missed the classic
|
|
51
|
+
"curl/wget a payload, chmod +x it, run it by path" dropper chain (no
|
|
52
|
+
interpreter keyword in the final step, so neither existing pattern
|
|
53
|
+
fired). Added a pattern for it.
|
|
54
|
+
- `bin/governance/config-manager.js`'s `ConfigManager.set()` was vulnerable
|
|
55
|
+
to prototype pollution via a `__proto__`-shaped key — not reachable from
|
|
56
|
+
any shipped call site today, but a live, shared, mutable singleton.
|
|
57
|
+
Guarded, matching a pattern this codebase already uses elsewhere.
|
|
58
|
+
- CodeQL flagged (high severity) an incomplete regex-escape in
|
|
59
|
+
`bin/utils/readiness-gate.js` once this release's own plugin-bundling fix
|
|
60
|
+
(below) exposed it to scanning for the first time — only literal dots
|
|
61
|
+
were escaped before building a `RegExp` from the package version string.
|
|
62
|
+
Fixed to escape every regex metacharacter.
|
|
63
|
+
- Dependabot's unconstrained docker config silently shipped the Docker MCP
|
|
64
|
+
Catalog image on `node:25-bookworm-slim`, a non-LTS release. Reverted to
|
|
65
|
+
`node:22-bookworm-slim` (the CI test matrix's highest tested version) and
|
|
66
|
+
added an ignore rule blocking future Node major-version bumps of the base
|
|
67
|
+
image.
|
|
68
|
+
- `docs/PERSONAS.md`'s "Enterprise Swarm Templates" table cited 16 of 25
|
|
69
|
+
persona names that don't exist — a doc artifact never regenerated after
|
|
70
|
+
`swarm-templates.json`'s own dangling-reference cleanup in 11.9.9.
|
|
71
|
+
Regenerated wholesale from the real file: all 49 templates, exact
|
|
72
|
+
leader/members/focus values.
|
|
73
|
+
- The release workflow's "stable dist-tag" step has failed on 4 consecutive
|
|
74
|
+
real releases (11.9.6 through 11.9.9) for an identical, root-caused
|
|
75
|
+
reason: its retry budget (3 attempts × 5s) was an order of magnitude
|
|
76
|
+
short of npm's own stated multi-minute propagation window, even though
|
|
77
|
+
the underlying write always succeeded. Widened to 10 attempts × 15s.
|
|
78
|
+
- `.agent/settings.json` was missing the `instinct-capture` hook
|
|
79
|
+
`.claude/settings.json` has had since before 11.9.0 — a tracked,
|
|
80
|
+
documented parity gap. Mirrored the registration and, for the first
|
|
81
|
+
time, bundled its dependency closure into the plugin distribution.
|
|
82
|
+
- Three GitHub Actions hygiene items: an `${{ }}`-into-shell interpolation
|
|
83
|
+
inconsistency in `control-plane.yml`, an unused `contents: write` grant
|
|
84
|
+
in `auto-pr.yml`, and an unverified `gitleaks` binary download in
|
|
85
|
+
`secret-scan.yml` (now checksum-verified against the project's own
|
|
86
|
+
published `checksums.txt`).
|
|
87
|
+
- Stale doc drift: `agent.md`'s "13+ personas" claim (two mirrors)
|
|
88
|
+
corrected to 216; `docs/registry/PERSONAS.md`'s 3-release-stale version
|
|
89
|
+
header and unhedged PQAS citation corrected.
|
package/docs/faq.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MindForge FAQ (
|
|
1
|
+
# MindForge FAQ (v12.0.0)
|
|
2
2
|
|
|
3
3
|
## Is MindForge tied to Claude only?
|
|
4
4
|
No. MindForge supports Claude Code and Antigravity. Install with `--claude`,
|
|
@@ -55,7 +55,7 @@ The `deep-research` workflow was removed before the v11.8.0 release (the superpo
|
|
|
55
55
|
## Version & Stability
|
|
56
56
|
|
|
57
57
|
**Q: What version is current?**
|
|
58
|
-
|
|
58
|
+
v12.0.0 — verify with `node bin/mindforge-cli.js --version`
|
|
59
59
|
|
|
60
60
|
**Q: Was v11.9.0 production-stable?**
|
|
61
61
|
At that release: yes, by the IQ200 deep-audit (258 discrete checks across 14 dimensions),
|
package/docs/getting-started.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MindForge — Getting Started (
|
|
1
|
+
# MindForge — Getting Started (v12.0.0)
|
|
2
2
|
|
|
3
3
|
This guide gets you from zero to a working MindForge project in under five minutes.
|
|
4
4
|
|
|
@@ -120,7 +120,7 @@ Or use slash commands: `/mindforge:wf-code-audit`
|
|
|
120
120
|
## Your First 5 Minutes with MindForge
|
|
121
121
|
|
|
122
122
|
1. **Verify install:** `node bin/mindforge-cli.js health`
|
|
123
|
-
2. **Check version:** `node bin/mindforge-cli.js --version` (should print `
|
|
123
|
+
2. **Check version:** `node bin/mindforge-cli.js --version` (should print `12.0.0`)
|
|
124
124
|
3. **List workflows:** `node bin/mindforge-cli.js workflow list`
|
|
125
125
|
4. **Run first slash command:** Open Claude Code → `/mindforge:status`
|
|
126
126
|
5. **Onboard your codebase:** Open Claude Code → `/mindforge:wf-onboard-codebase`
|
package/docs/sdk-reference.md
CHANGED
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
} from 'mindforge-sdk';
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Current SDK version: `
|
|
17
|
+
Current SDK version: `12.0.0`
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
## SDK Exports (
|
|
21
|
+
## SDK Exports (v12.0.0)
|
|
22
22
|
|
|
23
23
|
```javascript
|
|
24
24
|
const {
|
|
@@ -28,7 +28,7 @@ const {
|
|
|
28
28
|
commands, // Command registry
|
|
29
29
|
batch, // Batch execution
|
|
30
30
|
MindForgeMemory, // Memory interface
|
|
31
|
-
VERSION // '
|
|
31
|
+
VERSION // '12.0.0'
|
|
32
32
|
} = require('mindforge-sdk');
|
|
33
33
|
// or: import { MindForgeClient, VERSION } from 'mindforge-sdk';
|
|
34
34
|
```
|
package/docs/troubleshooting.md
CHANGED
package/docs/user-guide.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# MindForge User Guide (
|
|
1
|
+
# MindForge User Guide (v12.0.0)
|
|
2
2
|
|
|
3
3
|
This guide gets you from install to productive, with the minimum needed to run MindForge in a real project.
|
|
4
4
|
|
|
5
|
-
> **
|
|
5
|
+
> **v12.0.0 Stats:** 35 workflows · 221 slash commands · 232 engine skills · 216 personas · 0 CVEs · 258/258 IQ200 checks passing
|
|
6
6
|
|
|
7
7
|
## Prerequisites
|
|
8
8
|
|
|
@@ -49,7 +49,7 @@ mindforge health # Verify project integrity
|
|
|
49
49
|
mindforge security-scan # Run security checks
|
|
50
50
|
mindforge headless # Run agent in non-interactive mode
|
|
51
51
|
mindforge --verbose ... # Enable verbose output for debugging
|
|
52
|
-
mindforge --version # Print installed version (e.g.
|
|
52
|
+
mindforge --version # Print installed version (e.g. 12.0.0) and exit 0
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
Use `--verbose` (or `-v`) on any command for detailed diagnostic output. Use `--version` (or `-V`) to print the installed version and exit.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mindforge-cc",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"description": "Agentic intelligence framework for Claude Code and Antigravity: slash commands, subagents, skills, hooks, governance, memory, and cost-aware model routing for AI-driven development.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"mindforge-cc": "bin/install.js",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
".mindforge/config.json",
|
|
20
20
|
".mindforge/imported-agents.jsonl",
|
|
21
21
|
".mindforge/engine/",
|
|
22
|
+
"!.mindforge/engine/instincts/instinct-store.jsonl",
|
|
22
23
|
".mindforge/manifests/",
|
|
23
24
|
".mindforge/schemas/",
|
|
24
25
|
".mindforge/personas/",
|