mindforge-cc 11.9.4 → 11.9.6

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.
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## [11.9.4] — 2026-08-22 — Delivery: the gates register, the tarball matches its tag, three packages attested
3
+ ## [11.9.4] — 2026-08-22 — Delivery: the gates register, the tarball matches its tag
4
4
 
5
5
  Patch release. 11.9.3 argued that an instrument must not report success while doing
6
6
  nothing. 11.9.4 is what an adversarial audit of the **published** 11.9.3 artifact found
@@ -71,13 +71,36 @@ not from reading the repository. That distinction is the whole content of this r
71
71
  exactly this reason, and the manifest's entire content is the sync record *for that
72
72
  already-excluded file*. (#225)
73
73
 
74
- - **`mindforge-sdk` is published again, with provenance.** It sat at **11.8.0** on npm
75
- while `sync-version.js` kept `sdk/package.json` at canonical — seven releases of
76
- disagreement (11.8.1 through 11.9.3, none published) that nothing detected, because
77
- `version:check` verifies the tracked file and not what the registry serves. It was also
78
- the only one of the three packages with **no attestation**. The release workflow now
79
- publishes it with `--provenance`, after the two proven publishes and before the GitHub
80
- Release, so the newest step cannot cost the others their artifacts.
74
+ - **`mindforge-sdk` was NOT published in this release. It remains at 11.8.0.** This entry
75
+ originally claimed it shipped with provenance; that claim was false and is corrected here
76
+ rather than quietly deleted, because a release arguing for measured claims does not get to
77
+ misstate a supply-chain property.
78
+
79
+ What happened: the SDK sat at **11.8.0** on npm while `sync-version.js` kept
80
+ `sdk/package.json` at canonical — seven releases of disagreement (11.8.1 through 11.9.3,
81
+ none published) that nothing detected, because `version:check` verifies the tracked file
82
+ and not what the registry serves. It was also the only one of the three packages with **no
83
+ attestation**. A publish step was added for it, and the registry rejected it:
84
+
85
+ ```
86
+ npm error 422 Unprocessable Entity - PUT https://registry.npmjs.org/mindforge-sdk
87
+ Error verifying sigstore provenance bundle: Failed to validate repository information:
88
+ package.json: "repository.url" is "", expected to match
89
+ "https://github.com/sairam0424/MindForge" from provenance
90
+ ```
91
+
92
+ `sdk/package.json` carried no `repository` field. The other two packages both do, which is
93
+ exactly why they published and it did not. That field is validated **registry-side at PUT**,
94
+ after two irreversible publishes have already succeeded — `npm publish --dry-run` does not
95
+ check it and neither did any gate here. Both are fixed for 11.9.5: the field, and an offline
96
+ preflight gate that refuses to reach a publish without it.
97
+
98
+ The step was also badly placed. It ran **before** `Create GitHub Release` and the `stable`
99
+ dist-tag move, so its failure skipped both — which is the precise harm the placement comment
100
+ claimed to prevent. `mindforge-cc@11.9.4` and `mindforge-mcp-server@11.9.4` published
101
+ correctly with provenance attesting commit 353e8d41; the release page and the `stable` tag
102
+ were completed by hand afterwards. The finishing steps now run ahead of the additive
103
+ publishes, so no optional package can strand a release again.
81
104
 
82
105
  - **The Homebrew formula carries the real 11.9.3 digest.** Verified against an independent
83
106
  measurement rather than the tool's own output, and explicitly confirmed not to be the
@@ -0,0 +1,104 @@
1
+ # Changelog
2
+
3
+ ## [11.9.5] — 2026-08-22 — The release path can no longer strand itself, and the SDK ships
4
+
5
+ Patch release, and the shortest one in a while. It exists because 11.9.4 published two
6
+ packages and then failed on the third, and that failure took the release page and the
7
+ `stable` dist-tag with it. Both causes are fixed here, and one of them is the reason this
8
+ release is worth cutting rather than waiting: **`mindforge-sdk` publishes for the first
9
+ time in seven versions, with provenance.**
10
+
11
+ ### Fixed
12
+
13
+ **A publish that cannot finish the release it started**
14
+
15
+ - **`sdk/package.json` had no `repository` field.** npm's provenance verification compares
16
+ that field against the attestation **server-side, at PUT** — so the publish was rejected
17
+ with `422 Unprocessable Entity … "repository.url" is ""` *after* `mindforge-cc` and
18
+ `mindforge-mcp-server` had already published irreversibly. `npm publish --dry-run` does
19
+ not perform that comparison, and nothing in this repository read `repository` at all: all
20
+ six preflight gates passed on a manifest the registry was guaranteed to reject. The field
21
+ is added, matching the spelling the other two packages use.
22
+
23
+ - **`scripts/ci/verify-provenance-metadata.js` makes that failure reachable before the
24
+ point of no return.** It runs in the release **preflight** job, ahead of every publish,
25
+ and it does not carry a list of packages: it discovers them from the workflow — every
26
+ step whose `run` contains both `npm publish` and `--provenance`, resolved through its
27
+ `working-directory` — so a fourth package is covered without editing the gate.
28
+ Discovering zero targets is a hard failure rather than a pass, on the principle that a
29
+ check which examined nothing must not report success.
30
+
31
+ Verified the only way that means anything: run against a git worktree at tag `v11.9.4` —
32
+ the exact tree that the registry rejected — it exits 1 and names `sdk/package.json` and
33
+ the missing field. It would have stopped that release before anything reached npm.
34
+
35
+ - **The release steps were ordered so that an optional package could strand the release.**
36
+ The SDK publish sat *before* `Create GitHub Release` and the `stable` dist-tag move.
37
+ A failing step fails the job, so both were skipped — which is precisely the harm the
38
+ placement comment claimed to prevent. The same mode had already fired on **v11.5.1** and
39
+ **v11.8.3** from the MCP publish; v11.9.4 was its third occurrence.
40
+
41
+ Reordered to: `Publish to npm` → `Create GitHub Release` → `stable` dist-tag →
42
+ `mcp-server` → `sdk`. The rule now encoded in `tests/action-pinning.test.js`: **no step
43
+ whose failure leaves no residue may be able to skip a step that finishes an irreversible
44
+ one.** That test previously asserted the opposite and had to be inverted in the same
45
+ commit — because `Run Full Test Suite` is the release job's first step, a reorder shipped
46
+ alone would have failed the release at its own gate.
47
+
48
+ The two finishers carry guards on their own inputs rather than a bare `!cancelled()`,
49
+ which would publish a release with a 0-byte body and an unmatched `.tgz` glob when
50
+ `Build Package` fails — the `bodyBytes=0` defect already seen on v11.9.0, .1 and .2. And
51
+ deliberately not `continue-on-error`: a tolerated failure makes the run conclude
52
+ **green**, which is the blindness that let the SDK sit seven versions behind, unattested,
53
+ with nothing noticing.
54
+
55
+ **Prose surfaces that shipped stale twice running**
56
+
57
+ - `bin/utils/readiness-gate.js` scored `RELEASENOTES.md` on `fileExists` while its
58
+ changelog sibling three lines away checked that the version appeared *in* the file. That
59
+ asymmetry is why the immutable 11.9.3 tarball's README said "Latest release v11.9.2" and
60
+ the immutable 11.9.4 tarball shipped with no 11.9.4 entry at all — while `README.md`
61
+ offers that file as the human-readable route to the BREAKING notes. Both are now checked,
62
+ anchored rather than by substring (`includes('11.9.4')` is also satisfied by
63
+ `## v11.9.40`).
64
+
65
+ **Policy change, stated plainly:** every release from here needs a `RELEASENOTES.md`
66
+ entry. Six published 11.x versions do not have one, so that file has been curated rather
67
+ than exhaustive; the gate only ever looks for the version being released, so those gaps
68
+ are unaffected.
69
+
70
+ - README's `## Latest release` is deliberately gated by a **test** rather than written by
71
+ `sync-version.js`. Auto-bumping the version token onto the previous release's paragraph
72
+ produces the right number attached to the wrong description — a better-disguised
73
+ falsehood than a visibly stale one.
74
+
75
+ - `docs/sdk-reference.md` offered `npx mindforge-cc@stable` as a way to get the SDK
76
+ "as part of the framework". Measured false: the published package declares exactly
77
+ `express` and `sql.js` and ships no `sdk/` directory. Removed.
78
+
79
+ ### Added
80
+
81
+ - **`mindforge-sdk` is published, with provenance** — its first release since 11.8.0 and
82
+ its first ever attested one. This is not cosmetic. Everything fixed in the SDK across
83
+ 11.8.1–11.9.4 reached nobody, including the one that matters most:
84
+ `WebSocketEventStream` scheduled a reconnect with `setTimeout(() => this.connect(), …)`
85
+ and nothing handled the returned promise, so a failed reconnect was an unhandled
86
+ rejection — fatal under Node's default mode, **terminating the caller's process**. Every
87
+ consumer on 11.8.0 still has that. (#191)
88
+
89
+ - `npm run provenance:check` — the gate above, runnable offline.
90
+
91
+ ### Notes for operators
92
+
93
+ - 11.9.4 is complete but was finished by hand: its GitHub Release was created at the
94
+ existing tag from the registry's own tarball (verified against `dist.integrity` and both
95
+ attestation bundles' subject digests), and the `v11.9.4` tag was deliberately **not**
96
+ moved, because two published packages' provenance attests to the commit it names.
97
+ - The `stable` dist-tag lagged at 11.9.3 between the two releases. Because the dist-tag
98
+ step now runs *ahead* of both additive publishes, this release moves it forward even if a
99
+ package publish fails again.
100
+ - Still outstanding, and requiring repository settings rather than code: there is no `v*`
101
+ **tag ruleset** restricting who may create the ref that triggers publishing, and
102
+ `NPM_TOKEN` remains a long-lived repository secret with no GitHub environment in front of
103
+ it. Create the environment *first* — adding `environment:` while none exists publishes
104
+ exactly as before while looking like a gate.
@@ -0,0 +1,135 @@
1
+ # Changelog
2
+
3
+ ## [11.9.6] — 2026-09-20 — The docs stop overselling what the code discloses about itself
4
+
5
+ Patch release. No new features — this is the release-readiness pass before pointing real
6
+ users at the project for the first time, and it found the same pattern one more time:
7
+ code that honestly labels its own simulated/dormant parts, sitting under docs that hadn't
8
+ caught up. Every fix below was hand-verified against the live source or a real command
9
+ run, not carried over from a prior audit's prose.
10
+
11
+ ### Fixed
12
+
13
+ **Two real, reproducible bugs**
14
+
15
+ - **`/mindforge:learn` crashed on every skill that scored high enough to register.**
16
+ `bin/skills-builder/learn-cli.js` called `skill-registrar.js`'s `register()` with two
17
+ positional string arguments (`skillPath`, `'project'`); `register()` destructures a
18
+ single options object, so every call threw inside it, silently swallowed by the CLI's
19
+ generic catch. A validly-generated `SKILL.md` never reached `MANIFEST.md`, and the CLI
20
+ reported a bare `❌ Error`. Fixed the call site to pass `{ skillName, skillPath, tier,
21
+ qualityScore, sourceType, source }`, matching `register()`'s real signature.
22
+
23
+ - **`bin/browser/browser-daemon.js` printed its own bearer token to stdout** (captured
24
+ verbatim into the persistent `.planning/browser-daemon.log` by `daemon-manager.js`),
25
+ and gated only `/evaluate` — `/navigate`, `/click`, `/type`, and `/screenshot` had no
26
+ auth check at all. The idle-timeout path also called `process.exit(0)` directly,
27
+ bypassing the token-file cleanup in `shutdown()`. Fixed all three: the startup log now
28
+ prints only the token's file path, the auth check runs once before dispatch and covers
29
+ every route but `/status`, and the idle path calls the real `shutdown()`.
30
+
31
+ **A test with a blind spot for the exact bug it exists to catch**
32
+
33
+ - `tests/sdk-exports.test.js` guards against any tracked file instructing
34
+ `require('@mindforge/sdk')` — the unpublished, wrong package name (`sdk/package.json`
35
+ publishes as `mindforge-sdk`). Its scan used `git ls-files -z '*.md' '*.ts'`, which
36
+ cannot match `.js` files — so it did not, and could not, catch the live occurrence in
37
+ `examples/sdk-integration/index.js`. Fixed both: the import, and the pathspec (now also
38
+ `*.js`/`*.mjs`/`*.cjs`, with `tests/` added to the same "records, not instructions"
39
+ allowlist as `changelogs/`, since this file's own `WRONG` string literal would otherwise
40
+ self-flag).
41
+
42
+ **A dashboard that rendered success while showing nothing**
43
+
44
+ - Three more panels in `bin/dashboard/frontend/app.js` read response fields their real
45
+ backing functions in `metrics-aggregator.js` have never produced — the same bug class
46
+ already fixed once for the avg-quality tile, left unaddressed here. `refreshMemory()`
47
+ read `data.graph`/`data.count`; the real shape is `{ entries, total }`. `refreshTeam()`
48
+ called `.map()` on the whole response object; the real shape is `{ active, conflicts }`
49
+ with `email`/`last_seen`/`current_task` fields, not `user`/`action`/`timestamp`.
50
+ `drawCharts()` read `state.costs`/`state.quality`, fields `/api/metrics` never returns;
51
+ the real per-session series is `state.sessions[].cost_usd` /
52
+ `state.sessions[].quality_score`. All three failed silently behind an empty `catch`, so
53
+ the panels looked idle rather than broken. Fixed to read the real shapes.
54
+
55
+ **Two shipped documents that stated the opposite of the code**
56
+
57
+ - `SECURITY.md` claimed `AUDIT.jsonl` "auto-archives beyond 5000 lines with gzip
58
+ compression" — that rotation mechanism was removed in an earlier release specifically
59
+ because truncating the file broke the hash chain (it orphans `previous_hash` pointers to
60
+ archived entries). The log grows unbounded by design; the doc now says so.
61
+ - `docs/security/SECURITY.md` had drifted into a second, independent copy of this policy
62
+ with a `5.x.x`/`4.x.x`/`< 4.0.0` support table — years behind the real `11.x` line the
63
+ root `/SECURITY.md` (the canonical file) documents. Replaced with a pointer to the root
64
+ file so this can't re-drift.
65
+
66
+ **A stale Homebrew formula**
67
+
68
+ - `Formula/mindforge.rb` was pinned to `11.9.3` (url, sha256, and the version-assertion
69
+ test) — two releases behind, so `brew install mindforge` installed an old build with
70
+ none of 11.9.4/11.9.5's fixes. Re-pinned to the real published `11.9.5` tarball with its
71
+ actual sha256 (fetched and hashed directly, not carried over). This is the same drift
72
+ class the project has hit twice before (11.9.2 shipped with this file and `Dockerfile`
73
+ four releases behind); `Formula/mindforge.rb` will lag one release again until
74
+ `node scripts/sync-version.js --fetch-sha` runs after this version publishes — expected,
75
+ not a regression.
76
+
77
+ ### Changed — a documentation honesty pass
78
+
79
+ The following describe MindForge's own PQAS (post-quantum crypto), ZTAI (Zero-Trust
80
+ Agentic Identity), and "Pillar"-numbered subsystems as live, unconditional security
81
+ guarantees. They are not: `bin/governance/quantum-crypto.js` and
82
+ `bin/governance/ztai-manager.js` self-label these SIMULATED and gate them off the live
83
+ trust path by default (`SECURITY_TIER_3_SIMULATED = true`), and `SwarmController` /
84
+ `PersonaFactory` / `WaveExecutor` are role names in markdown specs with no backing file —
85
+ a distinction this repo's own `.claude/CLAUDE.md` already draws, just not everywhere yet.
86
+ Rewrote each to match the same "measured, not asserted" tone already used in
87
+ `docs/faq.md` and `docs/troubleshooting.md` and the root README's *What is actually
88
+ enforced* section:
89
+
90
+ `docs/usp-features.md`, `CODEBASE-MAP.md`, `docs/architecture/README.md`,
91
+ `docs/CAPABILITIES-MANIFEST.md`, `docs/governance-guide.md`,
92
+ `docs/MIND-FORGE-REFERENCE-V6.md`, `docs/INTELLIGENCE-MESH.md`, `docs/PERSONAS.md`,
93
+ `docs/security/threat-model.md`, `docs/security/penetration-test-results.md` (the latter
94
+ two now banner-marked as scoped to an earlier, materially smaller predecessor system, not
95
+ a current assessment — no new pentest content was fabricated to replace them).
96
+
97
+ **Six reference docs (`docs/registry/*.md`) were stuck at v11.3.1** (six releases behind)
98
+ with command/skill/persona/subagent counts off by 2–9x against the live filesystem, and
99
+ listed 14+ slash commands with no backing file (`/mindforge:quantum-verify`,
100
+ `/mindforge:hindsight`, `/mindforge:harvest`, `/mindforge:self-heal`,
101
+ `/mindforge:swarm-execution`, `/mindforge:identity`, and others) — each individually
102
+ re-verified against `.claude/commands/mindforge/` before being removed or reworded.
103
+ Updated all six to the real, live-verified counts (221 commands, 232+123 skills, 217
104
+ personas, 164 subagents) and pointed each at `docs/commands-reference.md` as the
105
+ canonical source, so staleness here is lower-stakes going forward.
106
+
107
+ Also corrected: `docs/plugin-installation.md` and `docs/reference(s)/commands.md` (stale
108
+ hand-typed counts), `docs/References/{decimal-phase-calculation,git-integration,
109
+ git-planning-commit}.md` (wrong CLI path — real tool is `.agent/bin/mindforge-tools.cjs`,
110
+ not `.agent/mindforge/bin/...`), `docs/References/model-profile-resolution.md` (dead
111
+ `@`-include path), and a fabricated `"Claude 4.5 Opus"` model-name literal in two docs
112
+ (no such string exists anywhere in `bin/`) replaced with the real "highest-capability
113
+ tier configured" language. Deleted two orphaned scratch files that were never real
114
+ documentation: `docs/testing-current-version.md` (a pre-release scratch file hardcoding
115
+ a personal machine path) and `docs/commands-skills/DISCOVERED_SKILLS.md` (stale output
116
+ from an unrelated external tool referencing a directory that doesn't exist in this repo).
117
+
118
+ ### Changed — discoverability
119
+
120
+ - Root `README.md`: npm-version/downloads/license/Node-version badges, an "at a glance"
121
+ capability summary with real counts, and jump links to the existing sections.
122
+ - `package.json`: `description` rewritten from marketing language ("Sovereign Agentic
123
+ Intelligence Framework... Production-Hardened... (v11)") to concrete, keyword-bearing
124
+ text; added `ai-agents`, `llm-tools`, `developer-tools`, `mcp-server` to `keywords`.
125
+
126
+ ### Verified
127
+
128
+ - `npm test`: 137 passed, 0 failed, 3 env-dependent skips (`browser.test.js`,
129
+ `browser-daemon-auth-live.test.js`, `sre-integration.test.js` — all three require a
130
+ Chromium daemon/display or git worktree support this sandbox does not have). Verified
131
+ clean through the real pre-commit hook, not just a standalone run.
132
+ - `node scripts/sync-version.js`: 27 channels synced; `Formula/mindforge.rb` correctly
133
+ deferred (tarball doesn't exist yet); `plugins/mindforge/.claude-plugin/plugin.json` and
134
+ `plugins/mindforge/mcp/dist/index.js` rebuilt.
135
+
@@ -1,6 +1,10 @@
1
- # MindForge v2.0.0 — Complete Commands Reference
1
+ # MindForge — Common Commands Quick Reference
2
2
 
3
- ## All 50+ commands
3
+ This page is a curated subset for quick lookup, not an exhaustive list. MindForge ships
4
+ 221 slash commands total — see [docs/commands-reference.md](../commands-reference.md) for
5
+ the complete, verified list.
6
+
7
+ ## Commonly used commands
4
8
 
5
9
  ### Lifecycle commands (core workflow)
6
10
 
@@ -95,13 +99,14 @@
95
99
  |---|---|---|---|
96
100
  | `/mindforge:help` | `help` | Show all available commands and current project status | |
97
101
 
98
- ## Command interface contract (v1.0.0 stable)
102
+ ## Command interface contract
99
103
 
100
- As of v1.0.0, the following are part of the stable interface:
101
- - All 36 command names (new commands require MINOR bump)
102
- - All flags documented here (new flags require MINOR, removed flags require MAJOR)
104
+ The following are part of the stable interface:
105
+ - Existing command names are not renamed without a MAJOR bump; new commands may land in any release
106
+ - Documented flags are not removed without a MAJOR bump
103
107
  - HANDOFF.json and AUDIT.jsonl schemas (additions: MINOR, removals: MAJOR)
104
- - All 10 core skill `name:` values and trigger lists
105
108
  - SDK exported types and functions
106
109
 
107
- See ADR-020 for the complete stability contract.
110
+ Note: `.planning/decisions/ADR-020.md` (previously cited here as the stability contract source)
111
+ is a content-free placeholder stub as of this writing — treat this page, not that ADR, as the
112
+ source of truth for the interface contract until a real ADR replaces it.
@@ -6,7 +6,7 @@ Calculate the next decimal phase number for urgent insertions.
6
6
 
7
7
  ```bash
8
8
  # Get next decimal phase after phase 6
9
- node ".agent/mindforge/bin/mindforge-tools.cjs" phase next-decimal 6
9
+ node ".agent/bin/mindforge-tools.cjs" phase next-decimal 6
10
10
  ```
11
11
 
12
12
  Output:
@@ -32,13 +32,13 @@ With existing decimals:
32
32
  ## Extract Values
33
33
 
34
34
  ```bash
35
- DECIMAL_PHASE=$(node ".agent/mindforge/bin/mindforge-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick next)
36
- BASE_PHASE=$(node ".agent/mindforge/bin/mindforge-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick base_phase)
35
+ DECIMAL_PHASE=$(node ".agent/bin/mindforge-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick next)
36
+ BASE_PHASE=$(node ".agent/bin/mindforge-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick base_phase)
37
37
  ```
38
38
 
39
39
  Or with --raw flag:
40
40
  ```bash
41
- DECIMAL_PHASE=$(node ".agent/mindforge/bin/mindforge-tools.cjs" phase next-decimal "${AFTER_PHASE}" --raw)
41
+ DECIMAL_PHASE=$(node ".agent/bin/mindforge-tools.cjs" phase next-decimal "${AFTER_PHASE}" --raw)
42
42
  # Returns just: 06.1
43
43
  ```
44
44
 
@@ -56,7 +56,7 @@ DECIMAL_PHASE=$(node ".agent/mindforge/bin/mindforge-tools.cjs" phase next-decim
56
56
  Decimal phase directories use the full decimal number:
57
57
 
58
58
  ```bash
59
- SLUG=$(node ".agent/mindforge/bin/mindforge-tools.cjs" generate-slug "$DESCRIPTION" --raw)
59
+ SLUG=$(node ".agent/bin/mindforge-tools.cjs" generate-slug "$DESCRIPTION" --raw)
60
60
  PHASE_DIR=".planning/phases/${DECIMAL_PHASE}-${SLUG}"
61
61
  mkdir -p "$PHASE_DIR"
62
62
  ```
@@ -51,7 +51,7 @@ Phases:
51
51
  What to commit:
52
52
 
53
53
  ```bash
54
- node ".agent/mindforge/bin/mindforge-tools.cjs" commit "docs: initialize [project-name] ([N] phases)" --files .planning/
54
+ node ".agent/bin/mindforge-tools.cjs" commit "docs: initialize [project-name] ([N] phases)" --files .planning/
55
55
  ```
56
56
 
57
57
  </format>
@@ -133,7 +133,7 @@ SUMMARY: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
133
133
  What to commit:
134
134
 
135
135
  ```bash
136
- node ".agent/mindforge/bin/mindforge-tools.cjs" commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-PLAN.md .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md
136
+ node ".agent/bin/mindforge-tools.cjs" commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-PLAN.md .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md
137
137
  ```
138
138
 
139
139
  **Note:** Code files NOT included - already committed per-task.
@@ -153,7 +153,7 @@ Current: [task name]
153
153
  What to commit:
154
154
 
155
155
  ```bash
156
- node ".agent/mindforge/bin/mindforge-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/
156
+ node ".agent/bin/mindforge-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/
157
157
  ```
158
158
 
159
159
  </format>
@@ -284,7 +284,7 @@ Set `commit_docs: false` so planning docs stay local and are not committed to an
284
284
  Instead of the standard `commit` command, use `commit-to-subrepo` when `sub_repos` is configured:
285
285
 
286
286
  ```bash
287
- node .agent/mindforge/bin/mindforge-tools.cjs commit-to-subrepo "feat(02-01): add user API" \
287
+ node .agent/bin/mindforge-tools.cjs commit-to-subrepo "feat(02-01): add user API" \
288
288
  --files backend/src/api/users.ts backend/src/types/user.ts frontend/src/components/UserForm.tsx
289
289
  ```
290
290
 
@@ -7,7 +7,7 @@ Commit planning artifacts using MindForge-tools CLI, which automatically checks
7
7
  Always use `mindforge-tools.cjs commit` for `.planning/` files — it handles `commit_docs` and gitignore checks automatically:
8
8
 
9
9
  ```bash
10
- node ".agent/mindforge/bin/mindforge-tools.cjs" commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
10
+ node ".agent/bin/mindforge-tools.cjs" commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
11
11
  ```
12
12
 
13
13
  The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.planning/` is gitignored. No manual conditional checks needed.
@@ -17,7 +17,7 @@ The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.pla
17
17
  To fold `.planning/` file changes into the previous commit:
18
18
 
19
19
  ```bash
20
- node ".agent/mindforge/bin/mindforge-tools.cjs" commit "" --files .planning/codebase/*.md --amend
20
+ node ".agent/bin/mindforge-tools.cjs" commit "" --files .planning/codebase/*.md --amend
21
21
  ```
22
22
 
23
23
  ## Commit Message Patterns
@@ -12,7 +12,7 @@ Default: `balanced` if not set or config missing.
12
12
 
13
13
  ## Lookup Table
14
14
 
15
- @.agent/mindforge/references/model-profiles.md
15
+ @docs/References/model-profiles.md
16
16
 
17
17
  Look up MindForge in the table for the resolved profile. Pass the model parameter to Task calls:
18
18
 
package/docs/faq.md CHANGED
@@ -1,4 +1,4 @@
1
- # MindForge FAQ (v11.9.4)
1
+ # MindForge FAQ (v11.9.6)
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
- v11.9.4 — verify with `node bin/mindforge-cli.js --version`
58
+ v11.9.6 — verify with `node bin/mindforge-cli.js --version`
59
59
 
60
60
  **Q: Is v11.9.0 production-stable?**
61
61
  Yes. The IQ200 deep-audit (258 discrete checks across 14 dimensions) shows 258/258 passing. 0 CVEs, 0 test failures, 0 ESLint errors, 0 TypeScript errors.
@@ -80,8 +80,9 @@ Spawn dispatch is not yet implemented in v11.9.0. Use `/mindforge:auto` or `/min
80
80
  Tier-3 trust uses in-process key simulation in v11.9.0 — this is intentional and safe. `SECURITY_TIER_3_SIMULATED = true` is the documented v11.x behavior. Hardware TPM/HSM is planned for v12.x.
81
81
 
82
82
  **Q: What is the test coverage?**
83
- 134 test files: 132 pass, 0 failures, 2 env-dependent skips (`browser.test.js` needs a Chromium
84
- daemon, `sre-integration.test.js` needs git worktree support and a clean tree).
83
+ 140 test files: 137 pass, 0 failures, 3 env-dependent skips (`browser.test.js` and
84
+ `browser-daemon-auth-live.test.js` need a Chromium daemon, `sre-integration.test.js` needs git
85
+ worktree support and a clean tree).
85
86
 
86
87
  The enforced floor is **30% lines**, gated in CI by the `mindforge-quality` job
87
88
  (`npx c8 --check-coverage --lines 30 --exclude 'plugins/**' --exclude 'mcp-server/dist/**'`).
@@ -1,4 +1,4 @@
1
- # MindForge — Getting Started (v11.9.4)
1
+ # MindForge — Getting Started (v11.9.6)
2
2
 
3
3
  This guide gets you from zero to a working MindForge project in under five minutes.
4
4
 
@@ -48,7 +48,7 @@ Prefer just a slice (e.g. Python agents)? Install a focused pack like `mindforge
48
48
 
49
49
  ### 3. Standalone MCP server
50
50
 
51
- Run the MindForge MCP server (`mindforge-mcp-server`) over stdio — it exposes 7 tools (6 read-only plus 1 guarded write): `mindforge_health`, `mindforge_status`, `mindforge_memory_query`, `mindforge_memory_stats`, `mindforge_memory_find_related`, `mindforge_audit_log`, and `mindforge_memory_remember`.
51
+ Run the MindForge MCP server (`mindforge-mcp-server`) over stdio — it exposes 8 tools (6 read-only, 1 guarded write, plus 1 guarded browse proxy): `mindforge_health`, `mindforge_status`, `mindforge_memory_query`, `mindforge_memory_stats`, `mindforge_memory_find_related`, `mindforge_audit_log`, `mindforge_memory_remember`, and `mindforge_browse`.
52
52
 
53
53
  ```bash
54
54
  claude mcp add mindforge -- npx -y mindforge-mcp-server
@@ -114,7 +114,7 @@ Or use slash commands: `/mindforge:wf-code-audit`
114
114
  ## Your First 5 Minutes with MindForge
115
115
 
116
116
  1. **Verify install:** `node bin/mindforge-cli.js health`
117
- 2. **Check version:** `node bin/mindforge-cli.js --version` (should print `11.9.4`)
117
+ 2. **Check version:** `node bin/mindforge-cli.js --version` (should print `11.9.6`)
118
118
  3. **List workflows:** `node bin/mindforge-cli.js workflow list`
119
119
  4. **Run first slash command:** Open Claude Code → `/mindforge:status`
120
120
  5. **Onboard your codebase:** Open Claude Code → `/mindforge:wf-onboard-codebase`
@@ -14,11 +14,11 @@ import {
14
14
  } from 'mindforge-sdk';
15
15
  ```
16
16
 
17
- Current SDK version: `11.9.4`
17
+ Current SDK version: `11.9.6`
18
18
 
19
19
  ---
20
20
 
21
- ## SDK Exports (v11.9.4)
21
+ ## SDK Exports (v11.9.6)
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 // '11.9.4'
31
+ VERSION // '11.9.6'
32
32
  } = require('mindforge-sdk');
33
33
  // or: import { MindForgeClient, VERSION } from 'mindforge-sdk';
34
34
  ```
@@ -418,13 +418,19 @@ cd sdk && npm install && npm run build
418
418
  ## Installation
419
419
  ```bash
420
420
  npm install mindforge-sdk
421
- # or: npx mindforge-cc@stable # installs SDK as part of the framework
422
421
  ```
423
422
 
424
- > **`mindforge-sdk` is versioned independently of the framework.** The release workflow
425
- > (`.github/workflows/mindforge-release.yml`) publishes `mindforge-cc` and
426
- > `mindforge-mcp-server` only — it has no `sdk` steps — so `sdk/package.json`'s version
427
- > tracks the monorepo while the published package does not. At the time of writing the
428
- > latest published SDK is **11.8.0** (`npm view mindforge-sdk versions`), even though the
429
- > in-repo `sdk/package.json` reads 11.9.2. Install it unpinned, as above; pinning it to a
430
- > framework version yields `E404 No match found for version …`.
423
+ > **`mindforge-sdk` lags the framework, and the framework does not contain it.** Installing
424
+ > `mindforge-cc` does **not** give you the SDK: the published package declares exactly two
425
+ > dependencies, `express` and `sql.js`, and ships no `sdk/` directory. A line here previously
426
+ > offered `npx mindforge-cc@stable` as a way to get the SDK "as part of the framework"; that was
427
+ > false and has been removed.
428
+ >
429
+ > The release workflow publishes the SDK as of 11.9.5, with provenance. Its first attempt
430
+ > (v11.9.4) was rejected by the registry — `sdk/package.json` carried no `repository` field, which
431
+ > npm's provenance check validates server-side at publish time — so **versions 11.8.1 through
432
+ > 11.9.4 do not exist on npm** and never will. Check what is actually published with
433
+ > `npm view mindforge-sdk version` rather than assuming it matches the framework: the version in
434
+ > `sdk/package.json` tracks the monorepo because `scripts/sync-version.js` rewrites it, whether or
435
+ > not that version reached the registry. Install it unpinned, as above; pinning it to a framework
436
+ > version that was never published yields `E404 No match found for version …`.
@@ -1,4 +1,4 @@
1
- # MindForge Troubleshooting (v11.9.4)
1
+ # MindForge Troubleshooting (v11.9.6)
2
2
 
3
3
  This page lists common issues and fast fixes. If you get stuck, start with
4
4
  `/mindforge:health`.
@@ -1,8 +1,8 @@
1
- # MindForge User Guide (v11.9.4)
1
+ # MindForge User Guide (v11.9.6)
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
- > **v11.9.4 Stats:** 35 workflows · 221 slash commands · 232 engine skills · 216 personas · 0 CVEs · 258/258 IQ200 checks passing
5
+ > **v11.9.6 Stats:** 35 workflows · 221 slash commands · 232 engine skills · 218 personas · 0 CVEs · 258/258 IQ200 checks passing
6
6
 
7
7
  ## Prerequisites
8
8
 
@@ -44,7 +44,7 @@ mindforge health # Verify project integrity
44
44
  mindforge security-scan # Run security checks
45
45
  mindforge headless # Run agent in non-interactive mode
46
46
  mindforge --verbose ... # Enable verbose output for debugging
47
- mindforge --version # Print installed version (e.g. 11.9.4) and exit 0
47
+ mindforge --version # Print installed version (e.g. 11.9.6) and exit 0
48
48
  ```
49
49
 
50
50
  Use `--verbose` (or `-v`) on any command for detailed diagnostic output. Use `--version` (or `-V`) to print the installed version and exit.
@@ -127,7 +127,7 @@ MindForge features 211 specialized personas. Each persona is optimized for a spe
127
127
  To switch personas or see the full list:
128
128
 
129
129
  ```bash
130
- ls .mindforge/personas/ # 216 persona briefs; there is no personas command
130
+ ls .mindforge/personas/ # 218 persona briefs; there is no personas command
131
131
  ```
132
132
 
133
133
  ---
@@ -1,4 +1,4 @@
1
- const { MindForgeClient, MindForgeEventStream } = require('@mindforge/sdk');
1
+ const { MindForgeClient, MindForgeEventStream } = require('mindforge-sdk');
2
2
 
3
3
  async function main() {
4
4
  const client = new MindForgeClient();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mindforge-cc",
3
- "version": "11.9.4",
4
- "description": "MindForge — Sovereign Agentic Intelligence Framework. Sovereign Stability: Production-Hardened Agentic Intelligence (v11)",
3
+ "version": "11.9.6",
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",
7
7
  "mindforge": "bin/mindforge-cli.js"
@@ -68,6 +68,7 @@
68
68
  "harness:compliance": "node bin/installer/harness-adapter-compliance.js --check",
69
69
  "release:ready": "node bin/utils/readiness-gate.js release",
70
70
  "version:check": "node scripts/sync-version.js --check",
71
+ "provenance:check": "node scripts/ci/verify-provenance-metadata.js",
71
72
  "validate:assets": "node scripts/ci/validate-assets.js",
72
73
  "eval:retrieval": "node bin/eval/eval-harness.js --set golden-set-retrieval.json --min-recall 0.55",
73
74
  "commit": "cz",
@@ -84,7 +85,10 @@
84
85
  "wasm-sqlite",
85
86
  "zero-native-deps",
86
87
  "agent-orchestration",
87
- "sovereign-ai"
88
+ "ai-agents",
89
+ "llm-tools",
90
+ "developer-tools",
91
+ "mcp-server"
88
92
  ],
89
93
  "author": "sairamugge",
90
94
  "license": "MIT",