immune-brain 4.0.0 → 4.0.1
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/package.json +1 -1
- package/plugins/immune-brain/.claude-plugin/plugin.json +1 -1
- package/plugins/immune-brain/dist/claude/mcp-server.mjs +1 -1
- package/plugins/immune-brain/dist/imm-loop.md +7 -1
- package/plugins/immune-brain/dist/imm-planner.md +7 -0
- package/plugins/immune-brain/dist/role-prompts/code-review.md +8 -0
- package/plugins/immune-brain/runtime/plugin_version.ts +1 -1
- package/plugins/immune-brain/runtime/prompts/code-review.md +8 -0
package/package.json
CHANGED
|
@@ -39,7 +39,7 @@ function probeHost(env = process.env, platform = process.platform, hostVersion)
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
// plugins/immune-brain/runtime/plugin_version.ts
|
|
42
|
-
var PLUGIN_VERSION = "4.0.
|
|
42
|
+
var PLUGIN_VERSION = "4.0.1";
|
|
43
43
|
|
|
44
44
|
// plugins/immune-brain/runtime/claude/interaction.ts
|
|
45
45
|
import { createHash, randomUUID } from "node:crypto";
|
|
@@ -71,7 +71,13 @@ Continue while the current projection has a valid action:
|
|
|
71
71
|
Normal completion does not require a second user confirmation.
|
|
72
72
|
5. For rework, follow the projected artifact state before editing. Resolve
|
|
73
73
|
findings only after fixing and verifying their cause. Changed snapshots
|
|
74
|
-
invalidate old evidence; run the newly required obligations.
|
|
74
|
+
invalidate old evidence; run the newly required obligations. On the second
|
|
75
|
+
rework of one acceptance id or anchor, the fix response must either state why
|
|
76
|
+
it covers every known trigger class of the violated invariant — the shared
|
|
77
|
+
guard, not only the reported path — or declare the trigger outside the
|
|
78
|
+
accepted contract and answer with `refute_finding` bound to fresh QA evidence
|
|
79
|
+
for that acceptance. Escalating a local heuristic a third time instead of
|
|
80
|
+
choosing one of those two responses is the loop this step exists to break.
|
|
75
81
|
6. An unresolved decision pauses only dependent execution. On `awaiting_user`,
|
|
76
82
|
invoke `request_authorization` directly before ending the turn; use the
|
|
77
83
|
Decisions and Recovery route for its native-gate handling. End the turn if
|
|
@@ -133,6 +133,13 @@ file creation; then it validates the created artifact with
|
|
|
133
133
|
continue through Kernel `revise_intent` authority and are not a Planner
|
|
134
134
|
overwrite path.
|
|
135
135
|
|
|
136
|
+
Before authoring a TaskIntent that adds a field or verdict branch to a state
|
|
137
|
+
machine, enumerate every consumer of that value and of the version gates around
|
|
138
|
+
it: the producing side, each branch or switch that reads it, and any migration or
|
|
139
|
+
replay path that carries historical copies. Name all of them in `scope_hint`. An
|
|
140
|
+
authoring pass that traces only the producer is the defect this enumeration
|
|
141
|
+
exists to prevent.
|
|
142
|
+
|
|
136
143
|
### Initiative Carrier Preference
|
|
137
144
|
|
|
138
145
|
For a large proposal split across multiple TaskIntents, exactly one planning
|
|
@@ -26,6 +26,14 @@ material task-local maintenance risks. Pure naming, length, complexity
|
|
|
26
26
|
thresholds, formatting, and design preference are not findings and must not
|
|
27
27
|
cause style-only rework.
|
|
28
28
|
|
|
29
|
+
When a finding repeats an acceptance id or anchor that already produced rework in
|
|
30
|
+
this task, do not file it as a fresh single-trigger defect. Name the invariant
|
|
31
|
+
class it belongs to and state in `evidence.trigger` why the previously accepted
|
|
32
|
+
fix does not cover that class: a second variant of the same trigger is a claim
|
|
33
|
+
about the fix's scope, not a new bug. A trigger the accepted contract explicitly
|
|
34
|
+
excludes is reported as an advisory note against that boundary, never as blocking
|
|
35
|
+
rework.
|
|
36
|
+
|
|
29
37
|
Return exactly one JSON object with the fields required by the Loop review
|
|
30
38
|
contract: `contract`, `role`, `task_id`, `snapshot_digest`, `decision` (`pass`
|
|
31
39
|
or `rework`), and for `pass` include `approval` (`kind`, `authority_role`,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by scripts/plugin_versioning.ts from the root package.json.
|
|
2
|
-
export const PLUGIN_VERSION = "4.0.
|
|
2
|
+
export const PLUGIN_VERSION = "4.0.1" as const;
|
|
@@ -26,6 +26,14 @@ material task-local maintenance risks. Pure naming, length, complexity
|
|
|
26
26
|
thresholds, formatting, and design preference are not findings and must not
|
|
27
27
|
cause style-only rework.
|
|
28
28
|
|
|
29
|
+
When a finding repeats an acceptance id or anchor that already produced rework in
|
|
30
|
+
this task, do not file it as a fresh single-trigger defect. Name the invariant
|
|
31
|
+
class it belongs to and state in `evidence.trigger` why the previously accepted
|
|
32
|
+
fix does not cover that class: a second variant of the same trigger is a claim
|
|
33
|
+
about the fix's scope, not a new bug. A trigger the accepted contract explicitly
|
|
34
|
+
excludes is reported as an advisory note against that boundary, never as blocking
|
|
35
|
+
rework.
|
|
36
|
+
|
|
29
37
|
Return exactly one JSON object with the fields required by the Loop review
|
|
30
38
|
contract: `contract`, `role`, `task_id`, `snapshot_digest`, `decision` (`pass`
|
|
31
39
|
or `rework`), and for `pass` include `approval` (`kind`, `authority_role`,
|