mindforge-cc 11.9.2 → 11.9.4
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 +9 -2
- package/.mindforge/engine/temporal-protocol.md +2 -2
- package/.mindforge/governance/change-classifier.md +20 -4
- package/.mindforge/skills/agent-architecture-audit/SKILL.md +2 -2
- package/.mindforge/skills/orch-pipeline/SKILL.md +4 -4
- package/CHANGELOG.md +357 -0
- package/MINDFORGE.md +13 -6
- package/README.md +49 -30
- package/RELEASENOTES.md +65 -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 +52 -23
- 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 +24 -8
- package/bin/governance/policy-engine.js +33 -3
- package/bin/governance/policy-gate-hardened.js +36 -1
- package/bin/governance/verify-approvals.js +175 -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 +547 -0
- package/bin/installer-core.js +481 -65
- 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 +204 -0
- package/changelogs/v11.9.4.md +155 -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 +10 -4
- package/docs/sdk-reference.md +15 -7
- package/docs/troubleshooting.md +65 -6
- package/docs/user-guide.md +14 -14
- package/examples/sdk-integration/README.md +1 -1
- package/package.json +8 -3
- package/subagents/.claude-plugin/marketplace.json +1 -1
- package/.mindforge/memory/sync-manifest.json +0 -6
- package/bin/dashboard/approval-handler.js +0 -136
|
@@ -34,7 +34,7 @@ with `$ARGUMENTS` as the request and `operation = add-feature`. The engine will:
|
|
|
34
34
|
3. TDD each task via `mindforge-tdd_extended` (new failing tests → green), then
|
|
35
35
|
`/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
36
36
|
if a security trigger is touched).
|
|
37
|
-
4. Commit as conventional `feat(...)` commits, each writing a
|
|
37
|
+
4. Commit as conventional `feat(...)` commits, each writing a hash-chained
|
|
38
38
|
AUDIT.jsonl entry. → **GATE 2** (confirm before commit).
|
|
39
39
|
|
|
40
40
|
Honor both gates — do not write implementation before Gate 1, do not commit
|
|
@@ -42,7 +42,7 @@ with `$ARGUMENTS` as the doc path and `operation = build-mvp` (default floor:
|
|
|
42
42
|
> the orch-pipeline skill.
|
|
43
43
|
4. `/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
44
44
|
on any security-trigger slice), then commit the scaffold and each slice as
|
|
45
|
-
separate conventional `feat(...)` commits, each writing a
|
|
45
|
+
separate conventional `feat(...)` commits, each writing a hash-chained
|
|
46
46
|
AUDIT.jsonl entry. → **GATE 2**.
|
|
47
47
|
|
|
48
48
|
If `$ARGUMENTS` is empty, ask the user for the path to the design/spec doc.
|
|
@@ -36,7 +36,7 @@ with `$ARGUMENTS` as the request and `operation = change-feature`. The engine wi
|
|
|
36
36
|
first is what makes this a tweak, not a fix.)
|
|
37
37
|
4. `/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
38
38
|
on a security trigger), then commit as conventional `feat(...)` / `refactor(...)`
|
|
39
|
-
+
|
|
39
|
+
+ hash-chained AUDIT.jsonl entry. → **GATE 2**.
|
|
40
40
|
|
|
41
41
|
Use this only when the feature **works** but should behave differently — not for
|
|
42
42
|
bugs (`/mindforge:orch-fix-defect`) or net-new capability
|
|
@@ -33,7 +33,7 @@ with `$ARGUMENTS` as the request and `operation = fix-defect`. The engine will:
|
|
|
33
33
|
this a fix, not a tweak.)
|
|
34
34
|
3. `/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
35
35
|
if the defect sits in a sensitive path).
|
|
36
|
-
4. Commit as a conventional `fix(...)` commit +
|
|
36
|
+
4. Commit as a conventional `fix(...)` commit + hash-chained AUDIT.jsonl entry.
|
|
37
37
|
→ **GATE 2** (confirm before commit).
|
|
38
38
|
|
|
39
39
|
Use this only when behavior is **broken/wrong** — not for intentional changes
|
|
@@ -35,7 +35,7 @@ with `$ARGUMENTS` as the request and `operation = refine-code`. The engine will:
|
|
|
35
35
|
— the existing suite proves behavior is unchanged). Dead-code/dup sweeps
|
|
36
36
|
delegate to `/mindforge:de-slop`.
|
|
37
37
|
4. `/mindforge:review`, then commit as `refactor(...)` (the diff must be
|
|
38
|
-
behavior-neutral) +
|
|
38
|
+
behavior-neutral) + hash-chained AUDIT.jsonl entry. → **GATE 2**.
|
|
39
39
|
|
|
40
40
|
Use this only when behavior must **not** change. If behavior should change at
|
|
41
41
|
all, use `/mindforge:orch-change-feature` or `/mindforge:orch-fix-defect`.
|
package/.agent/mindforge/qa.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: /mindforge:qa [--phase N] [--auto]
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# /mindforge:qa
|
|
6
6
|
|
|
7
7
|
## Usage
|
|
8
|
-
|
|
8
|
+
`/mindforge:qa [--phase N] [--auto]`
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
11
|
Runs systematic visual QA on UI surfaces changed in the current phase.
|
package/.claude/CLAUDE.md
CHANGED
|
@@ -25,25 +25,37 @@ You are a **Dynamic Multi-Agent Swarm (Agentic Mesh)**. Your mission is to execu
|
|
|
25
25
|
|
|
26
26
|
## 🛠️ CORE PROTOCOLS (The "How")
|
|
27
27
|
|
|
28
|
+
> **These are protocols you follow, not modules you call.** `SwarmController`, `PersonaFactory`
|
|
29
|
+
> and `WaveExecutor` are role names in the specs under `.mindforge/engine/`, not importable code —
|
|
30
|
+
> there is no file by any of those names. Every step below is something you do by reasoning and by
|
|
31
|
+
> using your own tools. Where a real executable exists, it is named with its path.
|
|
32
|
+
|
|
28
33
|
### 1. Swarm Dynamic Orchestration (V4)
|
|
29
34
|
**IF** task complexity/impact is high **OR** cross-disciplinary logic is required:
|
|
30
|
-
1.
|
|
35
|
+
1. Adopt the swarm-orchestration protocol described in `.mindforge/engine/`.
|
|
31
36
|
2. Spawn task-specific ephemeral specialist cluster (AIEngineering, Security, etc.).
|
|
32
|
-
3.
|
|
33
|
-
4. Execute parallel mesh waves
|
|
37
|
+
3. Load the relevant persona brief from `.mindforge/personas/` before each specialist acts.
|
|
38
|
+
4. Execute parallel mesh waves, consolidating dependent work before independent work.
|
|
34
39
|
5. Consolidate mesh findings into a single `SWARM-SUMMARY`.
|
|
35
40
|
|
|
36
41
|
### 2. The Sharded Memory Loop (SRD)
|
|
37
42
|
**IF** context ≥ 70% **OR** starting a new task:
|
|
38
|
-
1.
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
1. Rotate context per the Tri-Tier strategy (Hot/Warm/Cold) yourself — this is an advisory
|
|
44
|
+
discipline, not an automated step.
|
|
45
|
+
2. Inject only sharded relevant data into the active buffer.
|
|
46
|
+
3. Re-read the current phase's plan rather than carrying stale detail forward.
|
|
41
47
|
|
|
42
48
|
### 3. The Adversarial Decision Loop (ADS)
|
|
43
49
|
**BEFORE** committing any architectural change:
|
|
44
|
-
1. Spawn Red-Team/Blue-Team debate contexts.
|
|
45
|
-
2.
|
|
46
|
-
3. **STOP** if SOUL Score < `[MIN_SOUL_SCORE]` from MINDFORGE.md.
|
|
50
|
+
1. Spawn Red-Team/Blue-Team debate contexts and argue the change against itself.
|
|
51
|
+
2. Score the proposal on impact, leverage, reversibility, effort, risk and cost.
|
|
52
|
+
3. **STOP** if the resulting SOUL Score < `[MIN_SOUL_SCORE]` from MINDFORGE.md.
|
|
53
|
+
|
|
54
|
+
ADS is a reasoning protocol you run, not a command. Do not look for a script: measured, the two
|
|
55
|
+
scripts this section used to name (soul-engine.js and shard-controller.js) do not exist
|
|
56
|
+
anywhere in the package. The nearest real implementation, `runADSSynthesis()` in
|
|
57
|
+
`bin/review/ads-engine.js`, is a library with a single internal caller, exposes no CLI, and takes
|
|
58
|
+
`{phaseNum, goal, context, sessionId}` rather than a diff, so it cannot be invoked here either.
|
|
47
59
|
|
|
48
60
|
### 4. Standard Extended Protocols (Quality Gates)
|
|
49
61
|
**MANDATORY**: For specific workflows, activate the corresponding `_extended` protocol:
|
|
@@ -78,18 +90,26 @@ Prioritize based on `[REACTIVE_MODE]` in MINDFORGE.md. These are the **Quality g
|
|
|
78
90
|
- [ ] **AgRevOps Check**: Verify ROI trends and Security Health Score via `/api/revops`.
|
|
79
91
|
- [ ] **PLAN-FIRST RULE**: Never code without a verified XML plan.
|
|
80
92
|
- [ ] **Verify First**: Never task-complete without successful `<verify>` output.
|
|
81
|
-
- [ ] **Audit Always**: Write a JSONL entry for every significant session event.
|
|
93
|
+
- [ ] **Audit Always**: Write a JSONL entry for every significant session event. The result is a hash-chained append-only audit log (SHA-256 back-links): each entry sets `previous_hash` to the prior entry's `_hash`.
|
|
82
94
|
|
|
83
95
|
---
|
|
84
96
|
|
|
85
97
|
## ⚡ COMMAND SUITE
|
|
86
98
|
|
|
99
|
+
Every entry below has a backing command file, checked by `tests/protocol-claims.test.js`. Two that
|
|
100
|
+
did not (the brainstorming and history entries) are gone: neither existed in
|
|
101
|
+
`.claude/commands/mindforge/` or `.agent/mindforge/` (both hold exactly 221 files, so this was not
|
|
102
|
+
a mirror gap), and neither had a near-match to correct to. Temporal history is reachable, just not
|
|
103
|
+
as a slash command, so it is named as what it actually is.
|
|
104
|
+
|
|
87
105
|
- `/mindforge:next` — Primary auto-discovery.
|
|
88
106
|
- `/mindforge:auto` — Reactive engine start.
|
|
89
|
-
- `/mindforge:
|
|
90
|
-
- `/mindforge:
|
|
107
|
+
- `/mindforge:plan-phase` — Plan the next phase before writing code.
|
|
108
|
+
- `/mindforge:verify-phase` — Verify the phase against its plan.
|
|
91
109
|
- `/mindforge:status` — Project health & sharding state.
|
|
92
110
|
- `/mindforge:audit` — Day 4 governance access.
|
|
111
|
+
- `mindforge temporal <status|cleanup|inject>` — reasoning-history access (a CLI command, not a
|
|
112
|
+
slash command).
|
|
93
113
|
|
|
94
114
|
---
|
|
95
115
|
|
|
@@ -109,7 +129,11 @@ Adopt the Principal AI persona. Be instruction-dense, unambiguous, and architect
|
|
|
109
129
|
|
|
110
130
|
**Source of Truth Hierarchy**:
|
|
111
131
|
|
|
112
|
-
1. SOUL.md (Sovereign Identity — Behavioral OS)
|
|
132
|
+
1. SOUL.md (Sovereign Identity — Behavioral OS). **Not shipped in the package**, and generated
|
|
133
|
+
locally rather than installed: `bin/memory/identity-synthesizer.js` creates and evolves it. If
|
|
134
|
+
your project has no SOUL.md, this entry is vacant and authority passes to MINDFORGE.md — do not
|
|
135
|
+
infer its contents. The prompt-defense baseline it carries is reproduced verbatim at the top of
|
|
136
|
+
this file, so that part reaches you either way.
|
|
113
137
|
2. MINDFORGE.md (Parameter Registry)
|
|
114
138
|
3. .agent/CLAUDE.md (Protocols)
|
|
115
139
|
4. `.mindforge/` (Framework Binary Logic)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "/mindforge:browse <url | action>"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# /mindforge:browse
|
|
6
6
|
|
|
7
7
|
## Usage
|
|
8
|
-
|
|
8
|
+
`/mindforge:browse <url | action>`
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
11
|
Controls the persistent MindForge browser daemon.
|
|
@@ -61,7 +61,7 @@ Remove old checkpoints, keeping the last 5.
|
|
|
61
61
|
|
|
62
62
|
## AUDIT linkage
|
|
63
63
|
|
|
64
|
-
Each create/verify optionally writes a
|
|
64
|
+
Each create/verify optionally writes a hash-chained AUDIT.jsonl entry:
|
|
65
65
|
|
|
66
66
|
```json
|
|
67
67
|
{ "event": "checkpoint_created", "name": "core-done", "sha": "abc1234", "tests_pass_rate": 1.0, "coverage": 0.0 }
|
|
@@ -31,7 +31,7 @@ LLM layer judges *whether it matters here* and proposes the highest-leverage fix
|
|
|
31
31
|
|
|
32
32
|
## Step 3 — Report + AUDIT entry
|
|
33
33
|
|
|
34
|
-
Summarize the scorecard, then write a
|
|
34
|
+
Summarize the scorecard, then write a hash-chained AUDIT.jsonl entry:
|
|
35
35
|
|
|
36
36
|
```json
|
|
37
37
|
{
|
|
@@ -34,7 +34,7 @@ with `$ARGUMENTS` as the request and `operation = add-feature`. The engine will:
|
|
|
34
34
|
3. TDD each task via `mindforge-tdd_extended` (new failing tests → green), then
|
|
35
35
|
`/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
36
36
|
if a security trigger is touched).
|
|
37
|
-
4. Commit as conventional `feat(...)` commits, each writing a
|
|
37
|
+
4. Commit as conventional `feat(...)` commits, each writing a hash-chained
|
|
38
38
|
AUDIT.jsonl entry. → **GATE 2** (confirm before commit).
|
|
39
39
|
|
|
40
40
|
Honor both gates — do not write implementation before Gate 1, do not commit
|
|
@@ -42,7 +42,7 @@ with `$ARGUMENTS` as the doc path and `operation = build-mvp` (default floor:
|
|
|
42
42
|
> the orch-pipeline skill.
|
|
43
43
|
4. `/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
44
44
|
on any security-trigger slice), then commit the scaffold and each slice as
|
|
45
|
-
separate conventional `feat(...)` commits, each writing a
|
|
45
|
+
separate conventional `feat(...)` commits, each writing a hash-chained
|
|
46
46
|
AUDIT.jsonl entry. → **GATE 2**.
|
|
47
47
|
|
|
48
48
|
If `$ARGUMENTS` is empty, ask the user for the path to the design/spec doc.
|
|
@@ -36,7 +36,7 @@ with `$ARGUMENTS` as the request and `operation = change-feature`. The engine wi
|
|
|
36
36
|
first is what makes this a tweak, not a fix.)
|
|
37
37
|
4. `/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
38
38
|
on a security trigger), then commit as conventional `feat(...)` / `refactor(...)`
|
|
39
|
-
+
|
|
39
|
+
+ hash-chained AUDIT.jsonl entry. → **GATE 2**.
|
|
40
40
|
|
|
41
41
|
Use this only when the feature **works** but should behave differently — not for
|
|
42
42
|
bugs (`/mindforge:orch-fix-defect`) or net-new capability
|
|
@@ -33,7 +33,7 @@ with `$ARGUMENTS` as the request and `operation = fix-defect`. The engine will:
|
|
|
33
33
|
this a fix, not a tweak.)
|
|
34
34
|
3. `/mindforge:review` (+ the `quick.md` security auto-trigger / `security-reviewer`
|
|
35
35
|
if the defect sits in a sensitive path).
|
|
36
|
-
4. Commit as a conventional `fix(...)` commit +
|
|
36
|
+
4. Commit as a conventional `fix(...)` commit + hash-chained AUDIT.jsonl entry.
|
|
37
37
|
→ **GATE 2** (confirm before commit).
|
|
38
38
|
|
|
39
39
|
Use this only when behavior is **broken/wrong** — not for intentional changes
|
|
@@ -35,7 +35,7 @@ with `$ARGUMENTS` as the request and `operation = refine-code`. The engine will:
|
|
|
35
35
|
— the existing suite proves behavior is unchanged). Dead-code/dup sweeps
|
|
36
36
|
delegate to `/mindforge:de-slop`.
|
|
37
37
|
4. `/mindforge:review`, then commit as `refactor(...)` (the diff must be
|
|
38
|
-
behavior-neutral) +
|
|
38
|
+
behavior-neutral) + hash-chained AUDIT.jsonl entry. → **GATE 2**.
|
|
39
39
|
|
|
40
40
|
Use this only when behavior must **not** change. If behavior should change at
|
|
41
41
|
all, use `/mindforge:orch-change-feature` or `/mindforge:orch-fix-defect`.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "/mindforge:qa [--phase N] [--auto]"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# /mindforge:qa
|
|
6
6
|
|
|
7
7
|
## Usage
|
|
8
|
-
|
|
8
|
+
`/mindforge:qa [--phase N] [--auto]`
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
11
|
Runs systematic visual QA on UI surfaces changed in the current phase.
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
},
|
|
86
86
|
"COST_HARD_LIMIT_USD": {
|
|
87
87
|
"type": "number", "minimum": 0, "maximum": 10000,
|
|
88
|
-
"description": "Daily hard cost limit in USD.
|
|
88
|
+
"description": "Daily hard cost limit in USD. ENFORCED as of 11.9.3 (COST-02): bin/models/cost-tracker.js preflight() throws COST_LIMIT_REACHED once today's ledger spend plus the call estimate reaches this value, and bin/models/model-client.js re-throws it. 0 disables the cap, and so does omitting the key (it is `recommended`, not `required`) — an upgrade never rewrites an existing MINDFORGE.md. A present-but-unparseable value throws COST_LIMIT_MISCONFIGURED rather than silently running uncapped."
|
|
89
89
|
},
|
|
90
90
|
"ADS_DEBATE_ROUNDS": {
|
|
91
91
|
"type": "number", "minimum": 1, "maximum": 10,
|
package/.mindforge/config.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "11.9.
|
|
2
|
+
"version": "11.9.4",
|
|
3
3
|
"environment": "development",
|
|
4
4
|
"governance": {
|
|
5
5
|
"drift_threshold": 0.75,
|
|
6
6
|
"critical_drift_threshold": 0.5,
|
|
7
7
|
"res_threshold": 0.8,
|
|
8
|
-
"active_did": "
|
|
8
|
+
"active_did": ""
|
|
9
9
|
},
|
|
10
10
|
"revops": {
|
|
11
11
|
"market_registry": {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"mesh": {
|
|
73
73
|
"_node_id_note": "Set node_id to a unique value per node in multi-node deployments. auto = hostname-derived.",
|
|
74
|
-
"node_id": "
|
|
74
|
+
"node_id": "auto",
|
|
75
75
|
"peers": []
|
|
76
76
|
},
|
|
77
77
|
"ase": {
|
|
@@ -46,8 +46,15 @@ Typical GitHub Action setup:
|
|
|
46
46
|
```yaml
|
|
47
47
|
steps:
|
|
48
48
|
- uses: actions/checkout@v4
|
|
49
|
-
- name: Run MindForge
|
|
50
|
-
|
|
49
|
+
- name: Run MindForge headless
|
|
50
|
+
# `npx --package=mindforge-cc` PINS the package. Bare `npx mindforge` resolves to an UNRELATED
|
|
51
|
+
# third-party package on the public registry (mindforge@1.0.21, maintainer william@mindforge.ai) —
|
|
52
|
+
# not this project, whose npm name is mindforge-cc. In a fresh runner there is no local bin to
|
|
53
|
+
# shadow it, so npx fetches and unpacks that package, runs any install scripts it has, and then
|
|
54
|
+
# fails with "could not determine executable to run" because it exposes no `mindforge` bin.
|
|
55
|
+
# Measured both forms: the pinned one exits 0 with mindforge-cc in the npx cache; the bare one
|
|
56
|
+
# exits 1 after downloading someone else's package into a job holding MINDFORGE_TOKEN.
|
|
57
|
+
run: npx --yes --package=mindforge-cc mindforge headless --phase 3
|
|
51
58
|
env:
|
|
52
59
|
MINDFORGE_TOKEN: ${{ secrets.MINDFORGE_TOKEN }}
|
|
53
60
|
AUTO_PUSH_ON_WAVE_COMPLETE: true
|
|
@@ -10,7 +10,7 @@ Temporal Vision enables high-fidelity "Time-Travel Debugging" by snapshotting th
|
|
|
10
10
|
- `task_completed`
|
|
11
11
|
- `hindsight_injected`
|
|
12
12
|
2. **Persistence**: Snapshots are stored in `.planning/history/[audit_id]/`.
|
|
13
|
-
3. **Retention**: The system retains snapshots for the current milestone. Completed milestones should be archived or purged using
|
|
13
|
+
3. **Retention**: The system retains snapshots for the current milestone. Completed milestones should be archived or purged using `mindforge temporal cleanup`.
|
|
14
14
|
|
|
15
15
|
## Hindsight Injection Protocol
|
|
16
16
|
Hindsight Injection is a powerful tool and must be used according to these safety rules:
|
|
@@ -37,4 +37,4 @@ Hindsight Injection is a powerful tool and must be used according to these safet
|
|
|
37
37
|
## Common Operations
|
|
38
38
|
- `GET /api/temporal/history`: View the timeline.
|
|
39
39
|
- `POST /api/temporal/inject`: Perform hindsight repair.
|
|
40
|
-
-
|
|
40
|
+
- `mindforge temporal status`: Check history size and snapshot count.
|
|
@@ -44,9 +44,25 @@ Scan the actual diff content, not only filenames, for patterns such as:
|
|
|
44
44
|
This protects against security-critical code being added to innocuous filenames
|
|
45
45
|
like `src/utils/helper.ts`.
|
|
46
46
|
|
|
47
|
-
### Signal C — AUDIT history patterns
|
|
48
|
-
|
|
49
|
-
change in that phase is elevated to Tier 3
|
|
47
|
+
### Signal C — AUDIT history patterns (SPECIFIED, NOT IMPLEMENTED)
|
|
48
|
+
Intended behaviour: if the current phase has a recent HIGH or CRITICAL
|
|
49
|
+
`security_finding`, the next change in that phase is elevated to Tier 3
|
|
50
|
+
automatically.
|
|
51
|
+
|
|
52
|
+
**This signal does not exist in `bin/change-classifier.js`.** It is recorded here
|
|
53
|
+
as a design intent, not as a live protection, because it would read from
|
|
54
|
+
`.planning/AUDIT.jsonl` — which is gitignored (`.gitignore:81`), untracked, and
|
|
55
|
+
absent from `package.json` `files[]`. That file therefore does not exist in the
|
|
56
|
+
fresh clone the classifier actually runs in
|
|
57
|
+
(`.github/workflows/control-plane.yml`). Implementing it against a source that is
|
|
58
|
+
structurally unavailable at the point of enforcement would produce a signal that
|
|
59
|
+
silently never fires — the same defect class as the Signal B gap above, where 13
|
|
60
|
+
of the 19 documented patterns were specified and absent.
|
|
61
|
+
|
|
62
|
+
The `security_finding` event itself is real and carries `severity`: see
|
|
63
|
+
`bin/dashboard/metrics-aggregator.js:160` and `bin/revops/debt-monitor.js:23`,
|
|
64
|
+
both of which read it from a local audit log. Enabling Signal C needs a decision
|
|
65
|
+
about how phase history reaches CI, not merely classifier code.
|
|
50
66
|
|
|
51
67
|
## Classification audit entry
|
|
52
68
|
Record why the tier was selected:
|
|
@@ -56,7 +72,7 @@ Record why the tier was selected:
|
|
|
56
72
|
"event": "change_classified",
|
|
57
73
|
"tier": 3,
|
|
58
74
|
"classification_reason": "code pattern: jwt.sign found in src/utils/helper.ts",
|
|
59
|
-
"signals_checked": ["file_path", "code_content"
|
|
75
|
+
"signals_checked": ["file_path", "code_content"],
|
|
60
76
|
"signal_triggered": "code_content",
|
|
61
77
|
"pattern_matched": "jwt.sign"
|
|
62
78
|
}
|
|
@@ -79,7 +79,7 @@ audit has a real target, not an abstraction.
|
|
|
79
79
|
| 9 | Answer shaping | SWARM-SUMMARY consolidation | Format corruption in the final response |
|
|
80
80
|
| 10 | Platform rendering | Dashboard (localhost:7339) / CLI / API transport | Transport-layer mutation of a valid answer |
|
|
81
81
|
| 11 | Hidden repair loops | soul-engine ADS rewrite + Temporal hindsight regeneration | Silent fallback/retry running a second LLM pass |
|
|
82
|
-
| 12 | Persistence | auto-state.json +
|
|
82
|
+
| 12 | Persistence | auto-state.json + hash-chained audit log | Expired state or cached artifacts reused as live evidence |
|
|
83
83
|
|
|
84
84
|
### Common Failure Patterns
|
|
85
85
|
|
|
@@ -148,7 +148,7 @@ Define what you're auditing:
|
|
|
148
148
|
Gather evidence from the codebase:
|
|
149
149
|
- **Source code** — swarm loop, hooks_route tool router, shard admission, prompt
|
|
150
150
|
assembly across the source-of-truth hierarchy
|
|
151
|
-
- **Logs** — NexusTracer session traces,
|
|
151
|
+
- **Logs** — NexusTracer session traces, hash-chained AUDIT entries, tool-call
|
|
152
152
|
records
|
|
153
153
|
- **Config** — MINDFORGE.md parameters, tool schemas, PersonaFactory patches,
|
|
154
154
|
provider settings
|
|
@@ -128,7 +128,7 @@ Each phase delegates — it does not do the work inline.
|
|
|
128
128
|
and `security-auditor` / `penetration-tester` whenever the diff touches a
|
|
129
129
|
security trigger.
|
|
130
130
|
- **6. Commit** — conventional commits (`feat:` / `fix:` / `refactor:` / …), one
|
|
131
|
-
per logical chunk, **+ a
|
|
131
|
+
per logical chunk, **+ a hash-chained AUDIT.jsonl entry per commit**. → **GATE 2.**
|
|
132
132
|
|
|
133
133
|
---
|
|
134
134
|
|
|
@@ -166,7 +166,7 @@ This family is **gated, not autonomous**:
|
|
|
166
166
|
work, the manual security overhead is completed here before approval.
|
|
167
167
|
2. **GATE 2 — before Commit.** Present the diff summary and proposed conventional
|
|
168
168
|
commit messages; do not commit until the user confirms. Each confirmed commit
|
|
169
|
-
writes a
|
|
169
|
+
writes a hash-chained AUDIT.jsonl entry (below).
|
|
170
170
|
|
|
171
171
|
Everything between the gates flows without stopping.
|
|
172
172
|
|
|
@@ -227,7 +227,7 @@ On user confirmation at Gate 2, for **each** logical commit:
|
|
|
227
227
|
|
|
228
228
|
1. Commit with a **conventional** message scoped to one logical change:
|
|
229
229
|
`feat(<scope>): …` / `fix(<scope>): …` / `refactor(<scope>): …` / etc.
|
|
230
|
-
2. Append a **
|
|
230
|
+
2. Append a **hash-chained** AUDIT.jsonl entry to `.planning/AUDIT.jsonl`. Each
|
|
231
231
|
entry sets `previous_hash` to the prior entry's `_hash` and computes its own
|
|
232
232
|
`_hash` (per `.mindforge/audit/AUDIT-SCHEMA.md`):
|
|
233
233
|
|
|
@@ -263,7 +263,7 @@ On user confirmation at Gate 2, for **each** logical commit:
|
|
|
263
263
|
security trigger was touched; `/mindforge:security-scan` passed PRE-COMMIT
|
|
264
264
|
with no unaddressed Medium+ findings.
|
|
265
265
|
- [ ] Commits are conventional and scoped to one logical change.
|
|
266
|
-
- [ ] Each commit wrote a
|
|
266
|
+
- [ ] Each commit wrote a hash-chained AUDIT.jsonl entry (`previous_hash`/`_hash`).
|
|
267
267
|
- [ ] New / changed behavior has tests; coverage ≥ 80%.
|
|
268
268
|
|
|
269
269
|
---
|