mindforge-cc 11.9.2 → 11.9.3
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 +37 -13
- package/.agent/hooks/mindforge-block-no-verify.js +61 -13
- package/.agent/hooks/mindforge-config-protection.js +82 -3
- package/.agent/hooks/mindforge-context-monitor.js +1 -1
- package/.agent/hooks/mindforge-workflow-guard.js +2 -2
- package/.agent/hooks/run-with-flags.js +190 -20
- package/.agent/mindforge/browse.md +2 -2
- package/.agent/mindforge/checkpoint.md +1 -1
- package/.agent/mindforge/harness-audit.md +1 -1
- package/.agent/mindforge/orch-add-feature.md +1 -1
- package/.agent/mindforge/orch-build-mvp.md +1 -1
- package/.agent/mindforge/orch-change-feature.md +1 -1
- package/.agent/mindforge/orch-fix-defect.md +1 -1
- package/.agent/mindforge/orch-refine-code.md +1 -1
- package/.agent/mindforge/qa.md +2 -2
- package/.claude/CLAUDE.md +37 -13
- package/.claude/commands/mindforge/browse.md +2 -2
- package/.claude/commands/mindforge/checkpoint.md +1 -1
- package/.claude/commands/mindforge/harness-audit.md +1 -1
- package/.claude/commands/mindforge/orch-add-feature.md +1 -1
- package/.claude/commands/mindforge/orch-build-mvp.md +1 -1
- package/.claude/commands/mindforge/orch-change-feature.md +1 -1
- package/.claude/commands/mindforge/orch-fix-defect.md +1 -1
- package/.claude/commands/mindforge/orch-refine-code.md +1 -1
- package/.claude/commands/mindforge/qa.md +2 -2
- package/.mindforge/MINDFORGE-SCHEMA.json +1 -1
- package/.mindforge/config.json +3 -3
- package/.mindforge/engine/autonomous/headless-adapter.md +2 -2
- package/.mindforge/engine/temporal-protocol.md +2 -2
- package/.mindforge/governance/change-classifier.md +20 -4
- package/.mindforge/memory/sync-manifest.json +1 -1
- package/.mindforge/skills/agent-architecture-audit/SKILL.md +2 -2
- package/.mindforge/skills/orch-pipeline/SKILL.md +4 -4
- package/CHANGELOG.md +194 -0
- package/MINDFORGE.md +13 -6
- package/README.md +4 -3
- package/RELEASENOTES.md +2 -2
- package/SECURITY.md +22 -3
- package/bin/autonomous/auto-runner.js +65 -2
- package/bin/change-classifier.js +151 -16
- package/bin/dashboard/api-router.js +18 -38
- package/bin/dashboard/frontend/app.js +429 -0
- package/bin/dashboard/frontend/index.html +13 -406
- package/bin/dashboard/metrics-aggregator.js +46 -22
- package/bin/dashboard/server.js +160 -1
- package/bin/dashboard/sse-bridge.js +11 -8
- package/bin/engine/sre-manager.js +1 -1
- package/bin/engine/temporal-cli.js +56 -6
- package/bin/engine/verification-runner.js +134 -17
- package/bin/engine/verify-cli.js +25 -7
- package/bin/governance/approval-record.js +147 -0
- package/bin/governance/approve.js +12 -7
- package/bin/governance/policy-engine.js +33 -3
- package/bin/governance/policy-gate-hardened.js +36 -1
- package/bin/governance/verify-approvals.js +163 -0
- package/bin/harness-audit.js +224 -10
- package/bin/hooks/instinct-capture-hook.js +12 -4
- package/bin/install.js +63 -3
- package/bin/installer/harness-adapter-compliance.js +339 -28
- package/bin/installer/hook-registration.js +504 -0
- package/bin/installer-core.js +451 -63
- package/bin/learning/instinct-cli.js +7 -0
- package/bin/memory/vector-hub.js +196 -13
- package/bin/migrations/0.6.0-to-1.0.0.js +30 -25
- package/bin/migrations/1.0.0-to-2.0.0.js +22 -23
- package/bin/mindforge-cli.js +67 -6
- package/bin/models/cost-tracker.js +104 -6
- package/bin/models/model-client.js +6 -1
- package/bin/revops/debt-monitor.js +57 -13
- package/bin/security/trust-gate-hook.js +50 -6
- package/bin/skill-validator.js +6 -1
- package/bin/skills-builder/skill-scorer.js +46 -6
- package/bin/updater/self-update.js +6 -1
- package/bin/updater/version-comparator.js +21 -1
- package/bin/utils/mindforge-version.js +99 -0
- package/bin/utils/redact-secrets.js +106 -0
- package/bin/validate-config.js +42 -2
- package/bin/wizard/setup-wizard.js +4 -1
- package/bin/wizard/theme.js +9 -1
- package/changelogs/index.json +11 -9
- package/changelogs/v11.9.3.md +195 -0
- package/docs/References/config-reference.md +5 -2
- package/docs/References/sdk-api.md +1 -1
- package/docs/Templates/Codebase/architecture.md +1 -1
- package/docs/commands-reference.md +4 -5
- package/docs/faq.md +25 -5
- package/docs/getting-started.md +3 -3
- package/docs/sdk-reference.md +15 -7
- package/docs/troubleshooting.md +10 -6
- package/docs/user-guide.md +14 -14
- package/examples/sdk-integration/README.md +1 -1
- package/package.json +7 -3
- package/subagents/.claude-plugin/marketplace.json +1 -1
- package/bin/dashboard/approval-handler.js +0 -136
package/bin/validate-config.js
CHANGED
|
@@ -8,15 +8,55 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
11
12
|
|
|
12
13
|
// The one bracket-aware MINDFORGE.md reader (see bin/utils/mindforge-params.js).
|
|
13
14
|
const { readParams } = require('./utils/mindforge-params');
|
|
14
15
|
|
|
16
|
+
// The config belongs to the CALLER, so it stays relative to cwd.
|
|
15
17
|
const CONFIG_PATH = process.argv[2] || 'MINDFORGE.md';
|
|
16
|
-
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The schema belongs to the FRAMEWORK, so it is resolved from __dirname first.
|
|
21
|
+
*
|
|
22
|
+
* This was the bare relative `'.mindforge/MINDFORGE-SCHEMA.json'`, which only ever resolved
|
|
23
|
+
* because bin/mindforge-cli.js pinned the child's cwd to MindForge's own install directory. That
|
|
24
|
+
* pin is what made `security-scan` validate the vendor's MINDFORGE.md and report
|
|
25
|
+
* `✅ valid — 43 settings configured` over any caller's config. Removing the pin without anchoring
|
|
26
|
+
* the schema here would have swapped one broken outcome for another: every consumer with a real
|
|
27
|
+
* MINDFORGE.md would hit the `not found` branch below and exit 0 having validated NOTHING. Measured
|
|
28
|
+
* that exact regression on a fixture — `ℹ️ MINDFORGE-SCHEMA.json not found — skipping schema
|
|
29
|
+
* validation`, rc=0 — which is why the two changes ship together.
|
|
30
|
+
*
|
|
31
|
+
* Every check in this file is schema-driven (required, recommended, type, minimum, maximum, enum,
|
|
32
|
+
* pattern, nonOverridable). There is no schema-free validation path, so a missing schema is not a
|
|
33
|
+
* degraded check, it is no check.
|
|
34
|
+
*
|
|
35
|
+
* Package-relative first, cwd-relative second, because the two supported install shapes put the
|
|
36
|
+
* schema in different places:
|
|
37
|
+
* - `npx mindforge-cc` — runs from node_modules/mindforge-cc/, where .mindforge/ ships. Fixed.
|
|
38
|
+
* - a copied bin/ tree — the installer copies bin/ but creates no .mindforge/, verified on a
|
|
39
|
+
* clean `--claude --local` install. There the schema is genuinely absent and the honest skip
|
|
40
|
+
* below is the correct outcome; the cwd fallback still finds one if the project has its own.
|
|
41
|
+
*/
|
|
42
|
+
function resolveSchemaPath() {
|
|
43
|
+
const candidates = [
|
|
44
|
+
path.join(__dirname, '..', '.mindforge', 'MINDFORGE-SCHEMA.json'),
|
|
45
|
+
path.join(process.cwd(), '.mindforge', 'MINDFORGE-SCHEMA.json'),
|
|
46
|
+
];
|
|
47
|
+
return candidates.find((p) => fs.existsSync(p)) || candidates[0];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const SCHEMA_PATH = resolveSchemaPath();
|
|
17
51
|
|
|
18
52
|
if (!fs.existsSync(CONFIG_PATH)) {
|
|
19
|
-
|
|
53
|
+
// Name the path actually looked for, and where. This said "MINDFORGE.md not found" verbatim even
|
|
54
|
+
// when argv[2] supplied a different file, so `validate-config.js custom-config.md` reported a
|
|
55
|
+
// missing MINDFORGE.md — a message about a file the caller never mentioned. It cost real time
|
|
56
|
+
// during this change: a test failure was diagnosed as "a defaultArgs positional shadowed argv[2]"
|
|
57
|
+
// when the truth was simply that the named file was not in the working directory.
|
|
58
|
+
console.log(`ℹ️ ${CONFIG_PATH} not found in ${process.cwd()} — using all defaults. `
|
|
59
|
+
+ 'Create one to customise.');
|
|
20
60
|
process.exit(0);
|
|
21
61
|
}
|
|
22
62
|
|
|
@@ -6,7 +6,10 @@ const readline = require('readline');
|
|
|
6
6
|
const detector = require('./environment-detector');
|
|
7
7
|
const generator = require('./config-generator');
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// Resolved by package NAME, not by relative path: in an install `../../package.json` is the
|
|
10
|
+
// consumer's manifest, so the wizard displayed the host app's version as MindForge's.
|
|
11
|
+
const { resolveMindforgeVersion } = require('../utils/mindforge-version');
|
|
12
|
+
const VERSION = resolveMindforgeVersion({ fromDir: __dirname }).version;
|
|
10
13
|
const ARGS = process.argv.slice(2);
|
|
11
14
|
const IS_INTERACTIVE =
|
|
12
15
|
!ARGS.some((a) => ['--claude', '--antigravity', '--all', '--help'].includes(a)) &&
|
package/bin/wizard/theme.js
CHANGED
|
@@ -106,7 +106,15 @@ const Theme = {
|
|
|
106
106
|
console.log(` ${this.colors.dim('│')} ${this.colors.bold('Environment')}: ${this.colors.cyan(runtime)} (${this.colors.dim(scope)}) ${this.colors.dim('│')}`);
|
|
107
107
|
console.log(` ${this.colors.dim('│')} ${this.colors.dim('│')}`);
|
|
108
108
|
console.log(` ${this.colors.dim('│')} ${this.colors.bold('Next steps:')} ${this.colors.dim('│')}`);
|
|
109
|
-
|
|
109
|
+
// Was `mindforge-cc init`, which does not exist. mindforge-cc takes flags only and silently
|
|
110
|
+
// ignored the positional, so obeying this line re-ran the installer against whatever directory
|
|
111
|
+
// the user was standing in: measured 1,836 files written into an empty temp dir, exit 0, and
|
|
112
|
+
// this same panel printed again — so it loops. `/mindforge:init-project` is the real command and
|
|
113
|
+
// the install has just placed it in the harness, so the instruction now names something the
|
|
114
|
+
// user actually has. bin/install.js rejects stray positionals too: a wrong instruction and a
|
|
115
|
+
// silent acceptance of it are two separate defects, and fixing either alone leaves a trap.
|
|
116
|
+
// Padding keeps the visible width at 65 so the box border still lines up.
|
|
117
|
+
console.log(` ${this.colors.dim('│')} ${this.colors.bold('/mindforge:init-project')} ${this.colors.dim('— Initialize your workspace')} ${this.colors.dim('│')}`);
|
|
110
118
|
console.log(` ${this.colors.dim('│')} ${this.colors.bold('/mindforge:help')} ${this.colors.dim('— Explore the command suite')} ${this.colors.dim('│')}`);
|
|
111
119
|
console.log(` ${this.colors.dim('│')} ${this.colors.dim('│')}`);
|
|
112
120
|
console.log(` ${this.colors.dim('├' + '─'.repeat(boxWidth) + '╯')}\n`);
|
package/changelogs/index.json
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"versions": [
|
|
3
|
+
"11.9.3",
|
|
4
|
+
"11.9.2",
|
|
3
5
|
"11.9.1",
|
|
4
6
|
"11.9.0",
|
|
5
7
|
"11.8.3",
|
|
@@ -47,8 +49,8 @@
|
|
|
47
49
|
"6.5.0",
|
|
48
50
|
"6.4.0",
|
|
49
51
|
"6.3.0",
|
|
50
|
-
"6.2.0",
|
|
51
52
|
"6.2.0-alpha",
|
|
53
|
+
"6.2.0",
|
|
52
54
|
"6.1.0-alpha",
|
|
53
55
|
"6.0.0-alpha",
|
|
54
56
|
"5.9.0",
|
|
@@ -60,8 +62,8 @@
|
|
|
60
62
|
"5.3.0",
|
|
61
63
|
"5.2.0",
|
|
62
64
|
"5.1.0",
|
|
63
|
-
"5.0.0-alpha.2",
|
|
64
65
|
"5.0.0-alpha.1",
|
|
66
|
+
"5.0.0-alpha.2",
|
|
65
67
|
"4.3.0",
|
|
66
68
|
"4.1.0",
|
|
67
69
|
"4.0.0",
|
|
@@ -76,17 +78,17 @@
|
|
|
76
78
|
"2.1.2",
|
|
77
79
|
"2.1.1",
|
|
78
80
|
"2.1.0",
|
|
79
|
-
"2.0.0",
|
|
80
|
-
"2.0.0-alpha.12",
|
|
81
|
-
"2.0.0-alpha.11",
|
|
82
|
-
"2.0.0-alpha.10",
|
|
83
81
|
"2.0.0-alpha.9",
|
|
84
82
|
"2.0.0-alpha.8",
|
|
85
|
-
"2.0.0
|
|
86
|
-
"2.0.0-alpha.
|
|
87
|
-
"2.0.0-alpha.3",
|
|
83
|
+
"2.0.0",
|
|
84
|
+
"2.0.0-alpha.10",
|
|
88
85
|
"2.0.0-alpha.2",
|
|
89
86
|
"2.0.0-alpha.1",
|
|
87
|
+
"2.0.0-alpha.11",
|
|
88
|
+
"2.0.0-alpha.7",
|
|
89
|
+
"2.0.0-alpha.12",
|
|
90
|
+
"2.0.0-alpha.3",
|
|
91
|
+
"2.0.0-alpha.4",
|
|
90
92
|
"1.0.5",
|
|
91
93
|
"1.0.4",
|
|
92
94
|
"1.0.3",
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [11.9.3] — 2026-08-21 — Honesty: gates that can fail, commands that run, a release path that is checked
|
|
4
|
+
|
|
5
|
+
Patch release. No new features. Twenty-one fixes, and they all turned out to be the
|
|
6
|
+
same defect: **an instrument reported success while doing nothing.** Gates that could
|
|
7
|
+
not fail, tests satisfied by a comment, docs describing capabilities with no code
|
|
8
|
+
behind them, commands printing success while performing no action, and a publish path
|
|
9
|
+
that no check ever touched.
|
|
10
|
+
|
|
11
|
+
Contains behaviour changes under a patch bump — several of the things being fixed were
|
|
12
|
+
bugs that a consumer could have been relying on. Read BREAKING before upgrading if you
|
|
13
|
+
script against the CLI or the installer.
|
|
14
|
+
|
|
15
|
+
### BREAKING
|
|
16
|
+
|
|
17
|
+
Each of these is a bug fix whose correct behaviour differs from the shipped behaviour.
|
|
18
|
+
|
|
19
|
+
- **Routed CLI commands now act on YOUR project, not MindForge's own checkout.**
|
|
20
|
+
`bin/mindforge-cli.js` passed `cwd: ROOT` to every routed command, so `mindforge
|
|
21
|
+
classify` diffed MindForge's repository instead of yours, and `mindforge health`
|
|
22
|
+
inspected MindForge's `node_modules`. Measured across all 27 routed commands: 7
|
|
23
|
+
changed behaviour, all in the correct direction, none regressed. If you parsed output
|
|
24
|
+
that happened to describe MindForge itself, it now describes your project. (#201)
|
|
25
|
+
|
|
26
|
+
- **`npx mindforge-cc install` — and any other positional argument — now exits 1.**
|
|
27
|
+
The installer takes flags only and silently ignored stray words, so
|
|
28
|
+
`npx mindforge-cc install` appeared to work while installing nothing configured.
|
|
29
|
+
It now refuses with the correct form. `--runtime`'s value token is still accepted.
|
|
30
|
+
Use `npx mindforge-cc --claude --local`. (#202)
|
|
31
|
+
|
|
32
|
+
- **`mindforge verify` now SKIPS unavailable stages instead of failing them.** A project
|
|
33
|
+
with no ESLint config, no test script or no `bin/verify-audit.js` was reported as
|
|
34
|
+
FAILING those stages rather than as not having them. If your CI relied on a non-zero
|
|
35
|
+
exit in those cases, it will now pass. A run in which every stage skipped prints a
|
|
36
|
+
"NOTHING WAS VERIFIED" banner rather than a clean bill of health. (#204)
|
|
37
|
+
|
|
38
|
+
- **`scripts/sync-version.js` now exits non-zero when the plugin build artifacts are
|
|
39
|
+
stale.** A bump used to report `✅ every derivable channel is at <version>` and exit 0
|
|
40
|
+
while leaving `npm test` red. If you script this, handle the new exit code — it means
|
|
41
|
+
"run the build chain it just printed". (#211)
|
|
42
|
+
|
|
43
|
+
- **A self-install no longer writes over your tracked files.** Running the installer
|
|
44
|
+
inside a MindForge checkout printed that it was skipping and then overwrote 149
|
|
45
|
+
tracked files, including `CLAUDE.md`, `.claude/**`, `.agent/**` and `.mindforge/**`.
|
|
46
|
+
The skip is now honoured for local scope. (#200)
|
|
47
|
+
|
|
48
|
+
- **Releases must be tagged on a commit reachable from `main`.** The release workflow
|
|
49
|
+
now refuses a tag that is not an ancestor of `origin/main`. The documented flow is
|
|
50
|
+
develop → release → main; tagging elsewhere previously published, with provenance
|
|
51
|
+
attesting to that tree. (#216)
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
**Installer**
|
|
56
|
+
|
|
57
|
+
- A self-install claimed to skip and then overwrote 149 tracked files. The gate is now
|
|
58
|
+
scope-aware (`isSelfInstall() && scope === 'local'`). (#200)
|
|
59
|
+
- Every `--global` install reported failure on a correct run: `verifyInstall` demanded
|
|
60
|
+
six `bin/**` paths regardless of scope, so a global install ended
|
|
61
|
+
`❌ 6 of 12 required file(s) missing` and exit 1, with a `--force` retry that could
|
|
62
|
+
not help. A global install writes 389 files to `$HOME/.claude` and, deliberately,
|
|
63
|
+
zero to `bin/`. (#210)
|
|
64
|
+
- 11 of 27 routed CLI verbs died on `MODULE_NOT_FOUND` in a real install: the router
|
|
65
|
+
shipped but 6 of the scripts it dispatches to did not. `coreFiles` grew from 2 entries
|
|
66
|
+
to 8. (#210)
|
|
67
|
+
- Two leaks: `/tmp` staging files left behind on abandoned runs, and developer runtime
|
|
68
|
+
state (`celestial.db`, `.browser-daemon-token`) copied into consumer projects.
|
|
69
|
+
`SENSITIVE_EXCLUDE` now covers both. (#210)
|
|
70
|
+
- The forge commands overwrote three `mindforge` commands of the same name. (#197)
|
|
71
|
+
- The documented default install did not deliver the CLI it documents. (#196)
|
|
72
|
+
|
|
73
|
+
**Versioning and release**
|
|
74
|
+
|
|
75
|
+
- `sync-version.js --fetch-sha` hashed npm's 404 error body. For an unpublished version
|
|
76
|
+
the registry answers `{"error":"Not found"}` and `curl -sL` exits 0, so the digest
|
|
77
|
+
written into the Homebrew formula was the SHA-256 of that error text — the same
|
|
78
|
+
constant for every unpublished version — and `--check` then passed. Now `curl -fsSL`
|
|
79
|
+
plus a gzip magic-byte check, and it refuses rather than writing a digest no artifact
|
|
80
|
+
can match. (#203)
|
|
81
|
+
- The Homebrew formula may now LAG canonical but never LEAD it. Requiring equality
|
|
82
|
+
before publishing required something impossible: the digest is the hash of a tarball
|
|
83
|
+
that does not exist yet, and `npm test` blocked the publish that would have made it
|
|
84
|
+
satisfiable. (#208)
|
|
85
|
+
- Semver comparison is numeric per component. Lexicographically, `11.10.0` reads as
|
|
86
|
+
*behind* `11.9.2` — wrong on exactly the first release past a `.9` minor. (#208)
|
|
87
|
+
- Three version channels had no writer at all, so `npm test` failed on every bump and
|
|
88
|
+
the documented remedy could not fix it: `mcp-server/server.json` (both keys, matched
|
|
89
|
+
by identifier), `AGENTS.md`, and `sdk/README.md`'s second shape. (#207, #211)
|
|
90
|
+
- **No channel covered a document a user receives.** `SECURITY.md` — the security policy
|
|
91
|
+
at the root of the published package — said "Current version: 11.9.0", and
|
|
92
|
+
getting-started, faq, troubleshooting, user-guide and sdk-reference all titled
|
|
93
|
+
themselves v11.9.0: three releases stale, while every npm manifest was correct.
|
|
94
|
+
`--check` was green throughout, because a channel that does not exist cannot drift.
|
|
95
|
+
Structural markers now track canonical; narrative measurements deliberately do not.
|
|
96
|
+
(#211)
|
|
97
|
+
- A bump is not finished when `sync-version.js` exits. Two tracked artifacts are gated
|
|
98
|
+
against `package.json` and only a build can write them —
|
|
99
|
+
`plugins/mindforge/.claude-plugin/plugin.json` and
|
|
100
|
+
`plugins/mindforge/mcp/dist/index.js`. They are now reported under
|
|
101
|
+
`🔨 REQUIRE A BUILD` with the exact three-command chain, which nothing had documented.
|
|
102
|
+
(#211)
|
|
103
|
+
- `sync-version.js` reported "a channel is AHEAD of canonical" whenever its exit code
|
|
104
|
+
was non-zero for any reason, so the `--fetch-sha` refusal for an unpublished tarball
|
|
105
|
+
claimed the formula LEADS canonical in the same run that printed "DEFERRED until after
|
|
106
|
+
publish (behind, not ahead)". (#211)
|
|
107
|
+
- `changelogs/index.json`, which `bin/updater/changelog-fetcher.js` reads as the
|
|
108
|
+
authoritative version list, was missing 11.9.2. (#218)
|
|
109
|
+
|
|
110
|
+
**Publishing**
|
|
111
|
+
|
|
112
|
+
- **The tag push that publishes was exempt from every gate.** Publishing is triggered by
|
|
113
|
+
exactly one event — a `v*` tag push — and the repository's only ruleset targets
|
|
114
|
+
branches, so its six required checks applied to nothing on the path that ships. GitHub
|
|
115
|
+
cannot attach required status checks to a tag. A `preflight` job now gates it. (#216)
|
|
116
|
+
- The `stable` npm dist-tag was moved by hand, or not at all — it sat four releases
|
|
117
|
+
behind `latest` (11.8.3 against 11.9.2), so `npm i mindforge-cc@stable` delivered a
|
|
118
|
+
build with none of the 11.9.x fixes. The release workflow now moves it as its final
|
|
119
|
+
step: forward-only, prereleases skipped, and verified against npm's uncached dist-tags
|
|
120
|
+
endpoint rather than the CDN-cached packument. (#216)
|
|
121
|
+
|
|
122
|
+
**Dashboard**
|
|
123
|
+
|
|
124
|
+
- `--status` and `--stop` were documented in nine places and implemented in none; both
|
|
125
|
+
printed nothing and exited 0. Now implemented, before `express` is required, so they
|
|
126
|
+
work without the dependency installed. (#206)
|
|
127
|
+
- `--stop` identified the target by the SHAPE of its command line, which matched any
|
|
128
|
+
`node <anything>/dashboard/server.js` — verified against
|
|
129
|
+
`node /var/www/unrelated_app/dashboard/server.js`. It now resolves the script's
|
|
130
|
+
realpath and compares it to its own. (#206)
|
|
131
|
+
- `--status` printed a port it could not know: the PID file records only the pid, so it
|
|
132
|
+
reported whatever port that invocation happened to receive. Measured, `--status` on a
|
|
133
|
+
server started with `--port 7466` printed "port 7339". (#206)
|
|
134
|
+
|
|
135
|
+
**Memory**
|
|
136
|
+
|
|
137
|
+
- Every abandoned exit left a full copy of the database on disk — 1.8 GB of orphaned
|
|
138
|
+
`.tmp` files. (#199)
|
|
139
|
+
- The SDK's WebSocket client took the caller's process down on a failed reconnect. (#191)
|
|
140
|
+
|
|
141
|
+
**Verification**
|
|
142
|
+
|
|
143
|
+
- `mindforge verify`'s lint stage used `--max-warnings=0`, which made it impossible to
|
|
144
|
+
pass in the repository it ships from: `npx eslint .` reports 199 problems / 0 errors /
|
|
145
|
+
199 warnings, so `verify` reported a lint FAILURE on a tree that is green by the
|
|
146
|
+
project's own contract. Aligned with the project's definition; errors still fail. (#204)
|
|
147
|
+
- `temporal cleanup` printed "🧹 Cleaning up old temporal snapshots..." and
|
|
148
|
+
"✅ Cleanup complete." with no cleanup between them. Now wired to
|
|
149
|
+
`TemporalHub.gc({maxSnapshots: 50, maxAgeDays: 30})` with `--dry-run` and honest
|
|
150
|
+
counts, including zero. (#209)
|
|
151
|
+
|
|
152
|
+
**Documentation that named things that do not exist**
|
|
153
|
+
|
|
154
|
+
- The protocol files instructed the agent to run `soul-engine.js` and
|
|
155
|
+
`shard-controller.js`, neither of which exists anywhere in the package. Those steps
|
|
156
|
+
are reasoning protocols and now say so. (#205)
|
|
157
|
+
- Fifteen phantom `/mindforge:` slash commands in shipped docs. A reader following
|
|
158
|
+
`docs/user-guide.md` typed `/mindforge:personas --list` and got nothing. They were not
|
|
159
|
+
typos: `.agent/workflows/` holds 130 tracked files using those exact names — an old
|
|
160
|
+
target layout, committed and orphaned, shipping zero files. (#209)
|
|
161
|
+
- Four documented CLI invocations could not be run, each verified by running it:
|
|
162
|
+
`npx mindforge-cc@latest install` (exit 1), `mindforge-cli.js dashboard` (exit 1),
|
|
163
|
+
`npx mindforge auto` in a shipped engine doc (`auto` is a slash command, never a CLI
|
|
164
|
+
verb), and `@mindforge <verb>`, a syntax that exists nowhere. (#213)
|
|
165
|
+
- `workflow` is the most-documented CLI verb in the project and works, but appeared in
|
|
166
|
+
neither `--help` nor the "Available commands" list, so a user who mistyped it was told
|
|
167
|
+
it does not exist. (#213)
|
|
168
|
+
- Root `CLAUDE.md` named `bin/hooks/mindforge-context-monitor.js`; the file is under
|
|
169
|
+
`.agent/hooks/`. (#214)
|
|
170
|
+
|
|
171
|
+
### Added
|
|
172
|
+
|
|
173
|
+
- **`preflight` job on the release workflow.** Asserts the tagged commit is an ancestor
|
|
174
|
+
of `origin/main`, then runs the six gates a tag push never saw, with the publish job
|
|
175
|
+
behind `needs:`. (#216)
|
|
176
|
+
- **Automatic `stable` dist-tag movement**, forward-only and verified. (#216)
|
|
177
|
+
- **`node bin/dashboard/server.js --status` / `--stop`.** Not CLI verbs —
|
|
178
|
+
`mindforge-cli.js dashboard` does not route. (#206)
|
|
179
|
+
- **`mindforge temporal cleanup --dry-run`.** (#209)
|
|
180
|
+
- New regression gates, each falsified by mutation before being trusted:
|
|
181
|
+
`tests/protocol-claims.test.js` (no exemption list, deliberately — a name-keyed
|
|
182
|
+
allowlist was shown to excuse the exact defect it was written for), the shipped-doc
|
|
183
|
+
phantom-command gate, the CLI-verb gate, the authority-doc `.js` gate, the
|
|
184
|
+
version-channel round trips, and assertions that the release preflight itself cannot
|
|
185
|
+
be silently removed.
|
|
186
|
+
|
|
187
|
+
### Notes for operators
|
|
188
|
+
|
|
189
|
+
- `npm run version:check` is the offline drift check. A bump is finished only when
|
|
190
|
+
`sync-version.js` exits 0 — if it prints `🔨 REQUIRE A BUILD`, run the three commands
|
|
191
|
+
it names and commit both regenerated files.
|
|
192
|
+
- Releases are now gated on being tagged from `main`. One residual, inherent to
|
|
193
|
+
tag-triggered workflows: a tag push resolves the workflow from the TAGGED ref, so a
|
|
194
|
+
tag placed on a commit predating this release runs that commit's workflow and is
|
|
195
|
+
ungated.
|
|
@@ -33,8 +33,11 @@ and be followed by `=`. Prose bullets that merely mention `[KEY]` are not parsed
|
|
|
33
33
|
Three more are **recommended** — absent ones produce a warning, not an error:
|
|
34
34
|
`[COST_WARN_USD]`, `[COST_HARD_LIMIT_USD]`, `[BLOCK_ON_SECURITY]`.
|
|
35
35
|
|
|
36
|
-
> `[COST_HARD_LIMIT_USD]` is **
|
|
37
|
-
> spend
|
|
36
|
+
> `[COST_HARD_LIMIT_USD]` is **enforced from 11.9.3** (it was declared but inert in 11.9.2).
|
|
37
|
+
> `preflight()` refuses the model call once today's ledger spend plus the call estimate reaches
|
|
38
|
+
> the limit. Because the key is *recommended* rather than *required*, an absent key — or an
|
|
39
|
+
> explicit `0` — leaves the cap off; a present-but-unparseable value is a hard error
|
|
40
|
+
> (`COST_LIMIT_MISCONFIGURED`), not a silent bypass.
|
|
38
41
|
|
|
39
42
|
---
|
|
40
43
|
|
|
@@ -146,7 +146,7 @@ Template for `.mindforge/codebase/ARCHITECTURE.md` - captures conceptual code or
|
|
|
146
146
|
|
|
147
147
|
**CLI Command Execution:**
|
|
148
148
|
|
|
149
|
-
1. User runs: `
|
|
149
|
+
1. User runs: `mytool new-project`
|
|
150
150
|
2. Commander parses args and flags
|
|
151
151
|
3. Command handler invoked (`src/commands/new-project.ts`)
|
|
152
152
|
4. Handler calls service methods (`src/services/project.ts` → `create()`)
|
|
@@ -131,13 +131,12 @@ High-fidelity behaviors ported from the Superpowers library and hardened for pro
|
|
|
131
131
|
|
|
132
132
|
| Command | Description |
|
|
133
133
|
| :--- | :--- |
|
|
134
|
-
|
|
|
135
|
-
|
|
|
136
|
-
| `/mindforge:parallel-mesh` | Orchestrates a mesh of agent waves with automated dependency compaction. |
|
|
134
|
+
| *(protocol, not a command)* | Wave-based implementation for independent tasks — see `.mindforge/engine/swarm-controller.md`. |
|
|
135
|
+
| *(protocol, not a command)* | Mesh of agent waves with dependency compaction — see `.mindforge/engine/wave-executor.md`. |
|
|
137
136
|
| `/mindforge:workspace` | Manages isolated development environments via git worktrees with smart safety checks. |
|
|
138
|
-
| `/mindforge:tdd` | Strict Test-Driven Development (Red-Green-Refactor) with automated test generation. |
|
|
137
|
+
| `/mindforge:skill-tdd` | Strict Test-Driven Development (Red-Green-Refactor) with automated test generation. |
|
|
139
138
|
| `/mindforge:debug` | Systematic debugging using persistent state tracking and Root Cause Analysis. |
|
|
140
|
-
| `/mindforge:verify-
|
|
139
|
+
| `/mindforge:verify-phase` | Multi-level truth verification protocol (substance, existence, wiring). |
|
|
141
140
|
| `/mindforge:retrospective` | Facilitates structured team retrospectives with objective telemetry and metrics. |
|
|
142
141
|
|
|
143
142
|
---
|
package/docs/faq.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MindForge FAQ (v11.9.
|
|
1
|
+
# MindForge FAQ (v11.9.3)
|
|
2
2
|
|
|
3
3
|
## Is MindForge tied to Claude only?
|
|
4
4
|
No. MindForge supports Claude Code and Antigravity. Install with `--claude`,
|
|
@@ -55,13 +55,21 @@ 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.
|
|
58
|
+
v11.9.3 — 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.
|
|
62
62
|
|
|
63
|
-
**Q:
|
|
64
|
-
|
|
63
|
+
**Q: Which npm dist-tag should I install?**
|
|
64
|
+
`latest` is every published release, including patches. `stable` tracks the newest
|
|
65
|
+
non-prerelease and is moved by the release workflow as its final step — forward only, so it
|
|
66
|
+
never regresses to an older version. Prerelease builds keep their own `rc` and `alpha` tags and
|
|
67
|
+
never become `stable`. Use `npx mindforge-cc@latest` unless you specifically want to lag a
|
|
68
|
+
release behind. Check what each points at right now with `npm dist-tag ls mindforge-cc`.
|
|
69
|
+
|
|
70
|
+
> This answer deliberately names no version. It previously claimed `latest` and `stable` both
|
|
71
|
+
> pointed at v11.9.0; measured, they were 11.9.2 and 11.8.3 — neither. A documented invariant
|
|
72
|
+
> survives releases, a documented value does not.
|
|
65
73
|
|
|
66
74
|
## Known Limitations
|
|
67
75
|
|
|
@@ -72,4 +80,16 @@ Spawn dispatch is not yet implemented in v11.9.0. Use `/mindforge:auto` or `/min
|
|
|
72
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.
|
|
73
81
|
|
|
74
82
|
**Q: What is the test coverage?**
|
|
75
|
-
|
|
83
|
+
133 test files: 131 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).
|
|
85
|
+
|
|
86
|
+
The enforced floor is **30% lines**, gated in CI by the `mindforge-quality` job
|
|
87
|
+
(`npx c8 --check-coverage --lines 30 --exclude 'plugins/**' --exclude 'mcp-server/dist/**'`).
|
|
88
|
+
The measured figure is printed by that job and deliberately not restated here. The previous
|
|
89
|
+
answer to this question was wrong in three ways at once — a test count from a much smaller
|
|
90
|
+
suite, a stale coverage figure, and two named coverage gaps that were no longer the gaps — and
|
|
91
|
+
it stayed wrong because none of it was checked by anything. `tests/doc-count-claims.test.js`
|
|
92
|
+
now pins every count this file does state.
|
|
93
|
+
|
|
94
|
+
Both `--exclude` flags are load-bearing: without them c8 measured the generated `plugins/` tree
|
|
95
|
+
and `mcp-server/dist/` esbuild output, which understated real coverage substantially.
|
package/docs/getting-started.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MindForge — Getting Started (v11.9.
|
|
1
|
+
# MindForge — Getting Started (v11.9.3)
|
|
2
2
|
|
|
3
3
|
This guide gets you from zero to a working MindForge project in under five minutes.
|
|
4
4
|
|
|
@@ -108,7 +108,7 @@ Or use slash commands: `/mindforge:wf-code-audit`
|
|
|
108
108
|
## Your First 5 Minutes with MindForge
|
|
109
109
|
|
|
110
110
|
1. **Verify install:** `node bin/mindforge-cli.js health`
|
|
111
|
-
2. **Check version:** `node bin/mindforge-cli.js --version` (should print `11.9.
|
|
111
|
+
2. **Check version:** `node bin/mindforge-cli.js --version` (should print `11.9.3`)
|
|
112
112
|
3. **List workflows:** `node bin/mindforge-cli.js workflow list`
|
|
113
113
|
4. **Run first slash command:** Open Claude Code → `/mindforge:status`
|
|
114
114
|
5. **Onboard your codebase:** Open Claude Code → `/mindforge:wf-onboard-codebase`
|
|
@@ -140,4 +140,4 @@ MindForge operates on a high-velocity 4-pillar lifecycle:
|
|
|
140
140
|
|
|
141
141
|
- Explore the [User Guide](user-guide.md) for advanced features.
|
|
142
142
|
- Switch to a specialized [Persona](PERSONAS.md) for target tasks.
|
|
143
|
-
- Join the community:
|
|
143
|
+
- Join the community: https://github.com/sairam0424/MindForge/issues.
|
package/docs/sdk-reference.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
The
|
|
6
|
-
MindForge into tools, dashboards, and CI pipelines. Import from
|
|
5
|
+
The `mindforge-sdk` package provides a programmatic TypeScript API for integrating
|
|
6
|
+
MindForge into tools, dashboards, and CI pipelines. Import from `mindforge-sdk`.
|
|
7
7
|
|
|
8
8
|
```typescript
|
|
9
9
|
import {
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
MindForgeEventStream,
|
|
12
12
|
MindForgeMemory,
|
|
13
13
|
commands,
|
|
14
|
-
} from '
|
|
14
|
+
} from 'mindforge-sdk';
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Current SDK version: `11.9.
|
|
17
|
+
Current SDK version: `11.9.3`
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
## SDK Exports (v11.9.
|
|
21
|
+
## SDK Exports (v11.9.3)
|
|
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.
|
|
31
|
+
VERSION // '11.9.3'
|
|
32
32
|
} = require('mindforge-sdk');
|
|
33
33
|
// or: import { MindForgeClient, VERSION } from 'mindforge-sdk';
|
|
34
34
|
```
|
|
@@ -417,6 +417,14 @@ cd sdk && npm install && npm run build
|
|
|
417
417
|
|
|
418
418
|
## Installation
|
|
419
419
|
```bash
|
|
420
|
-
npm install mindforge-sdk
|
|
420
|
+
npm install mindforge-sdk
|
|
421
421
|
# or: npx mindforge-cc@stable # installs SDK as part of the framework
|
|
422
422
|
```
|
|
423
|
+
|
|
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 …`.
|
package/docs/troubleshooting.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MindForge Troubleshooting (v11.9.
|
|
1
|
+
# MindForge Troubleshooting (v11.9.3)
|
|
2
2
|
|
|
3
3
|
This page lists common issues and fast fixes. If you get stuck, start with
|
|
4
4
|
`/mindforge:health`.
|
|
@@ -117,15 +117,19 @@ rerun migration. See `.mindforge/audit/AUDIT-SCHEMA.md` for expected format.
|
|
|
117
117
|
|
|
118
118
|
### Protocol Step 0 fails to activate
|
|
119
119
|
**Symptom:** Commands proceed without activating `_extended` skills.
|
|
120
|
-
**Fix:**
|
|
120
|
+
**Fix:** Ensure all `_extended` skills are present in `.agent/skills/`, then start a fresh session so the
|
|
121
|
+
skill loader re-reads them. There is no orchestrator reset command.
|
|
121
122
|
|
|
122
123
|
### Context drift in Parallel Mesh
|
|
123
124
|
**Symptom:** Parallel agents making conflicting decisions.
|
|
124
|
-
**Fix:**
|
|
125
|
+
**Fix:** Re-synchronise by re-reading `.planning/HANDOFF.json` and `.planning/auto-state.json` before the
|
|
126
|
+
next wave — the mesh protocol is described in `.mindforge/engine/wave-executor.md`. It is a protocol you
|
|
127
|
+
follow, not a command.
|
|
125
128
|
|
|
126
129
|
### Workspace isolation failure
|
|
127
130
|
**Symptom:** Conflicts between feature branches or dirty worktree.
|
|
128
|
-
**Fix:** Run `/mindforge:workspace
|
|
131
|
+
**Fix:** Run `/mindforge:workspace` to inspect worktree state. Use `/mindforge:health --repair` if
|
|
132
|
+
`.git/worktrees/` is corrupt.
|
|
129
133
|
|
|
130
134
|
---
|
|
131
135
|
|
|
@@ -133,7 +137,7 @@ rerun migration. See `.mindforge/audit/AUDIT-SCHEMA.md` for expected format.
|
|
|
133
137
|
If the above doesn’t resolve it:
|
|
134
138
|
- Review `docs/user-guide.md`
|
|
135
139
|
- Check `docs/security/SECURITY.md` for security issues
|
|
136
|
-
- Open a GitHub issue
|
|
140
|
+
- Open a GitHub issue: https://github.com/sairam0424/MindForge/issues
|
|
137
141
|
- **Architecture**: `docs/architecture/V5-ENTERPRISE.md`
|
|
138
142
|
- **Commands**: `docs/commands-reference.md`
|
|
139
143
|
- **Personas**: `docs/PERSONAS.md`
|
|
@@ -203,4 +207,4 @@ All tests must be run from the MindForge project root: `cd /path/to/MindForge &&
|
|
|
203
207
|
|
|
204
208
|
**Symptom:** `--version` flag reports "Unknown command" on installs older than v11.9.0.
|
|
205
209
|
|
|
206
|
-
**Fix:** Upgrade
|
|
210
|
+
**Fix:** Upgrade: `npx mindforge-cc@latest --claude --local`
|