immune-brain 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -22
- package/README.zh-CN.md +48 -22
- package/package.json +1 -1
- package/plugins/immune-brain/.claude-plugin/plugin.json +1 -1
- package/plugins/immune-brain/.pi-extension/imm-canary-work.ts +18 -2
- package/plugins/immune-brain/dist/BASELINE.md +6 -2
- package/plugins/immune-brain/dist/claude/mcp-server.mjs +1 -1
- package/plugins/immune-brain/dist/imm-loop.md +6 -1
- package/plugins/immune-brain/dist/imm-planner.md +58 -4
- package/plugins/immune-brain/runtime/plugin_version.ts +1 -1
- package/plugins/immune-brain/skills/BASELINE.md +6 -2
package/README.md
CHANGED
|
@@ -198,29 +198,55 @@ The three repair/maintenance skills are host-native: they never create a managed
|
|
|
198
198
|
|
|
199
199
|
## Lifecycle
|
|
200
200
|
|
|
201
|
+
```mermaid
|
|
202
|
+
flowchart TD
|
|
203
|
+
subgraph Planning ["1. Planning Phase"]
|
|
204
|
+
B["imm-brainstorm<br/>Clarify Requirements & Constraints"] --> P["imm-planner<br/>Author Spec & TaskIntent"]
|
|
205
|
+
P --> TI["TaskIntent (.intent.json)<br/>• goal / scope_hint<br/>• risk tier<br/>• acceptance descriptors"]
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
subgraph Enrollment ["2. Enrollment Gate"]
|
|
209
|
+
TI --> EG{"Native User Gate<br/>Host Modal Confirmation"}
|
|
210
|
+
EG -->|Confirm| KS[(".imm/state/kernel.sqlite<br/>Atomic TaskRecord<br/>Exclusive Workspace Claim")]
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
subgraph Loop ["3. Execution & Assurance Loop (imm-loop)"]
|
|
214
|
+
KS --> EX["Executor Role<br/>Edit code strictly inside scope_hint"]
|
|
215
|
+
EX --> FRZ["advance_assurance<br/>Artifacts frozen (active:frozen)"]
|
|
216
|
+
FRZ --> QA["Deterministic QA Engine<br/>Run acceptance verification commands<br/>Generate QA Attestation"]
|
|
217
|
+
|
|
218
|
+
QA -->|Fail| RW1["Rework / Fix"]
|
|
219
|
+
RW1 --> EX
|
|
220
|
+
|
|
221
|
+
QA -->|Pass| RK{"Risk Tier?"}
|
|
222
|
+
RK -->|routine| ST["Settlement"]
|
|
223
|
+
RK -->|material / critical| RV["Review Role<br/>Structured verdict (Pass / Rework)"]
|
|
224
|
+
|
|
225
|
+
RV -->|Rework| RW2["Rework"]
|
|
226
|
+
RW2 --> EX
|
|
227
|
+
RV -->|Pass| ST
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
subgraph Settlement ["4. Settlement & Learnings"]
|
|
231
|
+
ST --> CLS["Atomic Closure<br/>• Lifecycle: done<br/>• Audit evidence in .imm/audit/<br/>• Release Workspace Claim"]
|
|
232
|
+
CLS -.-> CP["Compounder Role<br/>Extract Learnings to docs/solutions/"]
|
|
233
|
+
end
|
|
201
234
|
```
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
▼
|
|
218
|
-
imm-loop
|
|
219
|
-
├── Executor (edits strictly inside scope)
|
|
220
|
-
├── Deterministic QA (runs all acceptance checks)
|
|
221
|
-
├── Isolated Review (independent subagent audit)
|
|
222
|
-
└── Settled (.imm/audit/<task-id>/)
|
|
223
|
-
```
|
|
235
|
+
|
|
236
|
+
### Core Logic: Three Pillars
|
|
237
|
+
|
|
238
|
+
1. **Two Paths**
|
|
239
|
+
- **Host-native Path**: Daily conversation, code inspections, and ad-hoc fixes stay 100% native with zero workflow overhead.
|
|
240
|
+
- **Managed Path**: Explicitly entered via `imm-brainstorm`, `imm-planner`, or `imm-loop`, strictly governed by the Assurance Kernel.
|
|
241
|
+
|
|
242
|
+
2. **Authority & Contract**
|
|
243
|
+
- **TaskIntent (`.intent.json`)**: Machine-readable behavioral contract locking `scope_hint` (file boundaries), `risk` tier, and `acceptance` descriptors.
|
|
244
|
+
- **Native Gate (Enrollment)**: The single human-authority confirmation gate; Kernel atomically acquires exclusive workspace ownership (`.imm/state/kernel.sqlite` CAS) to prevent concurrency conflicts and scope drift.
|
|
245
|
+
|
|
246
|
+
3. **Deterministic Assurance**
|
|
247
|
+
- **QA-First**: The Kernel directly runs verification commands and checks exit codes/byte bounds; never relies on conversational claims.
|
|
248
|
+
- **Risk-Tiered Gates**: `routine` tasks complete upon QA pass; `material` and `critical` tasks require an isolated Review subagent to issue a structured verdict.
|
|
249
|
+
- **Unattended Batch**: Serial execution driven by GitHub Issues and bound by `plan_digest`, where each child independently completes its own Enrollment → QA → Review → Commit cycle.
|
|
224
250
|
|
|
225
251
|
Key invariants:
|
|
226
252
|
|
package/README.zh-CN.md
CHANGED
|
@@ -198,29 +198,55 @@ Executor、QA、Review、Compounder 等为 `imm-loop` 内部调度的角色,
|
|
|
198
198
|
|
|
199
199
|
## 生命周期
|
|
200
200
|
|
|
201
|
+
```mermaid
|
|
202
|
+
flowchart TD
|
|
203
|
+
subgraph Planning ["1. 规划阶段"]
|
|
204
|
+
B["imm-brainstorm<br/>需求澄清/约束"] --> P["imm-planner<br/>编写 Spec & TaskIntent"]
|
|
205
|
+
P --> TI["TaskIntent (.intent.json)<br/>• goal / scope_hint<br/>• risk tier<br/>• acceptance descriptors"]
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
subgraph Enrollment ["2. 准入登记"]
|
|
209
|
+
TI --> EG{"Native User Gate<br/>当前 Host 弹窗确认"}
|
|
210
|
+
EG -->|确认| KS[(".imm/state/kernel.sqlite<br/>原子生成 TaskRecord<br/>独占 Workspace Claim")]
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
subgraph Loop ["3. 执行与验证循环 (imm-loop)"]
|
|
214
|
+
KS --> EX["Executor 角色<br/>在 scope_hint 范围内修改代码"]
|
|
215
|
+
EX --> FRZ["advance_assurance<br/>制品冻结 (active:frozen)"]
|
|
216
|
+
FRZ --> QA["确定性 QA 引擎<br/>原子运行 acceptance 校验命令<br/>生成 QA Attestation"]
|
|
217
|
+
|
|
218
|
+
QA -->|失败| RW1["Rework 返工修正"]
|
|
219
|
+
RW1 --> EX
|
|
220
|
+
|
|
221
|
+
QA -->|通过| RK{"Risk 等级?"}
|
|
222
|
+
RK -->|routine| ST["Settlement 结算"]
|
|
223
|
+
RK -->|material / critical| RV["Review 审查角色<br/>结构化裁决 (Pass / Rework)"]
|
|
224
|
+
|
|
225
|
+
RV -->|Rework| RW2["Rework 驳回"]
|
|
226
|
+
RW2 --> EX
|
|
227
|
+
RV -->|Pass| ST
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
subgraph Settlement ["4. 结算与沉淀"]
|
|
231
|
+
ST --> CLS["原子结项<br/>• Lifecycle: done<br/>• 写入审计日志 .imm/audit/<br/>• 释放 Workspace Claim"]
|
|
232
|
+
CLS -.-> CP["Compounder 角色<br/>提取经验至 docs/solutions/"]
|
|
233
|
+
end
|
|
201
234
|
```
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
▼
|
|
218
|
-
imm-loop
|
|
219
|
-
├── Executor(严格在 scope 内修改代码)
|
|
220
|
-
├── 确定性 QA(前台逐项执行验收命令)
|
|
221
|
-
├── 隔离式 Review(独立 subagent 审查代码)
|
|
222
|
-
└── 落盘结算(.imm/audit/<task-id>/)
|
|
223
|
-
```
|
|
235
|
+
|
|
236
|
+
### 核心逻辑三要素
|
|
237
|
+
|
|
238
|
+
1. **双轨制 (Two Paths)**
|
|
239
|
+
- **Host-native Path**:日常对话、代码检视、单点修改,不触碰 Kernel 权限,零流程开销。
|
|
240
|
+
- **Managed Path**:由 `imm-brainstorm` / `imm-planner` / `imm-loop` 显式驱动,全程受 Kernel 约束。
|
|
241
|
+
|
|
242
|
+
2. **权限与契约 (Authority & Contract)**
|
|
243
|
+
- **TaskIntent (`.intent.json`)**:机器契约本体,严格锁定 `scope_hint`(文件修改范围)、`risk`(风险层级)与 `acceptance`(确定性断言)。
|
|
244
|
+
- **Native Gate (Enrollment)**:唯一一次人工介入确认,Kernel 原子抢占工作区所有权(SQLite CAS),防止多任务并发冲突与范围漂移。
|
|
245
|
+
|
|
246
|
+
3. **客观验证 (Deterministic Assurance)**
|
|
247
|
+
- **QA 优先**:由 Kernel 直接前台执行命令并校验退出码/输出,不依赖 LLM 口头汇报。
|
|
248
|
+
- **按险定级**:`routine` 仅需 QA;`material`/`critical` 必须追加独立只读 Reviewer 产出结构化裁决。
|
|
249
|
+
- **批处理 (Unattended Batch)**:基于 GitHub Issue / `plan_digest` 串行推进,每个子任务独立走完 Enrollment → QA → Review → Commit 闭环。
|
|
224
250
|
|
|
225
251
|
核心不变量:
|
|
226
252
|
|
package/package.json
CHANGED
|
@@ -588,11 +588,12 @@ export default function (
|
|
|
588
588
|
}
|
|
589
589
|
const projection = await projectAssuranceState(ctx.cwd, taskId);
|
|
590
590
|
if (projection.error) {
|
|
591
|
+
const nextAction = recoveryActionForAssuranceFailure(projection.error) ?? "inspect authority state";
|
|
591
592
|
const details = {
|
|
592
593
|
state: "blocked",
|
|
593
594
|
operation: action.op,
|
|
594
595
|
result: projection.error,
|
|
595
|
-
next_action:
|
|
596
|
+
next_action: nextAction,
|
|
596
597
|
};
|
|
597
598
|
presentTaskRailResult(ctx, taskId, details);
|
|
598
599
|
return failCanaryTool(taskId, action.op, "blocked", "projection_unavailable", projection.error, details.next_action);
|
|
@@ -1536,7 +1537,7 @@ async function buildAssuranceSnapshot(
|
|
|
1536
1537
|
})
|
|
1537
1538
|
: null;
|
|
1538
1539
|
const taskSnapshot = !reviewBundle && !reviewManifest
|
|
1539
|
-
? captureGitTaskSnapshot(root, intent.scope_hint)
|
|
1540
|
+
? captureGitTaskSnapshot(root, intent.scope_hint, taskId)
|
|
1540
1541
|
: null;
|
|
1541
1542
|
const dirtyFiles = reviewManifest
|
|
1542
1543
|
? Object.keys(reviewManifest.changed_paths)
|
|
@@ -1760,6 +1761,10 @@ async function enrichAssuranceResult(
|
|
|
1760
1761
|
}
|
|
1761
1762
|
|
|
1762
1763
|
function nextActionForAssuranceResult(result: Record<string, unknown>, taskState: AssuranceTaskState): string {
|
|
1764
|
+
const recovery = recoveryActionForAssuranceFailure(
|
|
1765
|
+
"error" in taskState ? taskState.error : result.reason,
|
|
1766
|
+
);
|
|
1767
|
+
if (recovery) return recovery;
|
|
1763
1768
|
if ("error" in taskState) return "inspect authority state";
|
|
1764
1769
|
if (result.state === "review_preparation_failed") return "repair Review preparation, then retry advance_assurance; QA is already committed";
|
|
1765
1770
|
if (result.code === "verdict_invalid") return "fix the verdict payload and resubmit submit_review; the Review reservation remains active; do not re-dispatch the reviewer";
|
|
@@ -1779,6 +1784,17 @@ function nextActionForAssuranceResult(result: Record<string, unknown>, taskState
|
|
|
1779
1784
|
}
|
|
1780
1785
|
}
|
|
1781
1786
|
|
|
1787
|
+
function recoveryActionForAssuranceFailure(reason: unknown): string | null {
|
|
1788
|
+
if (typeof reason !== "string") return null;
|
|
1789
|
+
if (reason.includes("task scope contains unstaged or untracked changes:"))
|
|
1790
|
+
return "stage only the listed task-owned paths, then retry the blocked operation";
|
|
1791
|
+
if (reason.includes("QA resolution failed ("))
|
|
1792
|
+
return "repair the verification command or delivery environment, then retry advance_assurance";
|
|
1793
|
+
if (reason.includes("task delivery contains paths outside the authorization envelope:"))
|
|
1794
|
+
return "reconcile the listed paths: unstage unrelated paths or revise TaskIntent scope for task-owned paths, then retry advance_assurance";
|
|
1795
|
+
return null;
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1782
1798
|
function toolResult(text: string, details?: Record<string, unknown>) {
|
|
1783
1799
|
return { content: [{ type: "text" as const, text }], details };
|
|
1784
1800
|
}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
from `dist/`; nested modes, examples, recovery, and references load on demand.
|
|
7
7
|
- Ask only when missing information would change the goal, scope, observable behavior, compatibility, risk acceptance, a protected effect, or a fact only the user can supply. Resolve repository facts and delegated technical choices with bounded evidence instead of asking.
|
|
8
8
|
- Keep edits inside the user-requested Direct scope or the enrolled TaskIntent acceptance and `scope_hint`.
|
|
9
|
-
- Stage only explicit task-owned paths.
|
|
9
|
+
- Stage only explicit task-owned paths. This staging authority does not grant
|
|
10
|
+
commit, push, broad staging, or authority over pre-existing user changes.
|
|
11
|
+
Never use `git add .` or `git add -A` in a dirty worktree.
|
|
10
12
|
- Do not create, switch, or delete Git worktrees; operate only in the Host launch directory.
|
|
11
13
|
- Record reproducible evidence before reporting closure.
|
|
12
14
|
- Required verification must pass before reporting completion; disclosing a gap is not a substitute. Autonomously diagnose, repair, and rerun failing conventional local checks within the authorized scope; never delete, skip, or weaken a valid check to manufacture a pass. If a required check remains failing or cannot run, report the work as incomplete with the concrete blocker.
|
|
@@ -46,7 +48,9 @@ routing. A new Managed workflow starts only from explicit `imm-brainstorm`,
|
|
|
46
48
|
Managed owner remains authoritative; the user resumes it with `imm-loop`.
|
|
47
49
|
2. **Start explicitly**: the selected Immune-Brain Skill owns its planning or
|
|
48
50
|
coordination work. It creates only requested artifacts and their required
|
|
49
|
-
parent directories
|
|
51
|
+
parent directories. Explicit Planner entry also owns absent routing-policy
|
|
52
|
+
activation under Planner's Kernel TaskIntent Routing section;
|
|
53
|
+
it does not otherwise install project-wide contract files.
|
|
50
54
|
3. **Preserve authority**: Planner output is a candidate for later literal-user
|
|
51
55
|
Enrollment, and Fast-Track preserves TaskIntent scope, Enrollment, QA,
|
|
52
56
|
Review, authorization, and completion boundaries.
|
|
@@ -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.
|
|
42
|
+
var PLUGIN_VERSION = "4.2.0";
|
|
43
43
|
|
|
44
44
|
// plugins/immune-brain/runtime/claude/interaction.ts
|
|
45
45
|
import { createHash, randomUUID } from "node:crypto";
|
|
@@ -55,7 +55,12 @@ Continue while the current projection has a valid action:
|
|
|
55
55
|
1. For active artifacts, implement only the enrolled acceptance within the
|
|
56
56
|
`scope_hint` envelope in the current conversation. New helpers or tests
|
|
57
57
|
inside an approved directory or glob do not require a revision. Run focused
|
|
58
|
-
checks.
|
|
58
|
+
checks. Before `advance_assurance`, inspect ownership and stage only the exact
|
|
59
|
+
task-owned paths needed for delivery. Do not hand routine task-owned staging
|
|
60
|
+
to the user. If a file mixes pre-existing user changes with task changes and
|
|
61
|
+
the task-owned hunks cannot be isolated reliably, stop with that ownership
|
|
62
|
+
conflict instead of staging the whole file. Staging grants no commit or push
|
|
63
|
+
authority. Executor checks are diagnostic evidence, not a QA or Review approval.
|
|
59
64
|
2. Call `advance_assurance` in the foreground and consume its direct terminal
|
|
60
65
|
result. The Kernel freezes the artifacts itself before QA: it binds Git
|
|
61
66
|
content identity in place without relocating source paths. A simple task has
|
|
@@ -76,7 +76,8 @@ Then route deterministically:
|
|
|
76
76
|
coordination, except a Loop-requested revision follows Enrolled Intent Revision
|
|
77
77
|
below to prepare a non-authoritative proposal for that same owner;
|
|
78
78
|
- an active or otherwise nonterminal v3 Plan remains on its existing v3 route;
|
|
79
|
-
- no routing policy
|
|
79
|
+
- no routing policy on an otherwise unowned workspace triggers automatic policy
|
|
80
|
+
activation below before producing any planning artifact;
|
|
80
81
|
- a valid `kernel_task_intent` retirement policy produces one TaskIntent draft
|
|
81
82
|
through the current Host's explicit `imm-planner`;
|
|
82
83
|
- an invalid, unreadable, untracked, or tracked-deleted policy rejects new
|
|
@@ -107,6 +108,46 @@ workspace claim, and final authority preconditions without executing acceptance
|
|
|
107
108
|
descriptors. A routine task proceeds from that single confirmation through
|
|
108
109
|
enrollment, execution and QA without a second human stop.
|
|
109
110
|
|
|
111
|
+
**Automatic policy activation**
|
|
112
|
+
|
|
113
|
+
Explicit `imm-planner` entry includes local routing setup, including for plan-only
|
|
114
|
+
requests. When the routing projection reports `policy_status: legacy_v3` and
|
|
115
|
+
`ownership: absent`, and neither Kernel nor nonterminal v3 ownership exists,
|
|
116
|
+
perform these steps without a separate enablement question:
|
|
117
|
+
|
|
118
|
+
1. Create `docs/plans/` if needed. Require real directories without symlink
|
|
119
|
+
components; create `docs/plans/managed-task-routing-policy.json` exclusively
|
|
120
|
+
(fail if it already exists), using exactly the JSON below with two-space
|
|
121
|
+
indentation, the shown field order, and one trailing newline.
|
|
122
|
+
2. Run `git add -- docs/plans/managed-task-routing-policy.json` only for the file
|
|
123
|
+
created in this activation. Preserve all other worktree and index changes;
|
|
124
|
+
do not commit, force-add an ignored file, or alter Git configuration.
|
|
125
|
+
3. Re-run `imm-plan --routing-status --json` through the resolved wrapper.
|
|
126
|
+
Continue canonical TaskIntent authoring only when `policy_status: active`,
|
|
127
|
+
`route: kernel_task_intent`, and `ownership: tracked_clean` all hold. Report
|
|
128
|
+
automatic activation briefly and continue planning in the same turn.
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"contract": "immune_brain/managed_task_routing_policy/v1",
|
|
133
|
+
"revision": 1,
|
|
134
|
+
"new_task_route": "kernel_task_intent",
|
|
135
|
+
"v3_new_plan_sync": "retired",
|
|
136
|
+
"legacy_v3_mode": "drain_read_only",
|
|
137
|
+
"terminal_import": "disabled"
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
An already active policy needs no write or staging. An existing invalid,
|
|
142
|
+
untracked, unreadable, tracked-deleted, or divergent policy is not an activation
|
|
143
|
+
candidate: preserve it and report `routing_policy_invalid`. If creation,
|
|
144
|
+
staging, or verification fails, report the concrete blocker and retain any
|
|
145
|
+
created file; stop before authoring, without overwriting existing bytes or
|
|
146
|
+
falling back to v3. A repository/user prohibition on policy setup or staging
|
|
147
|
+
blocks only this dependent planning step. Activation grants no execution
|
|
148
|
+
authority; the native Enrollment gate remains required. Read-only routing
|
|
149
|
+
queries and the canonical author command retain their existing runtime behavior.
|
|
150
|
+
|
|
110
151
|
## Candidate Authoring
|
|
111
152
|
|
|
112
153
|
Read this section before creating new candidate artifacts, after request routing
|
|
@@ -133,6 +174,12 @@ file creation; then it validates the created artifact with
|
|
|
133
174
|
continue through Kernel `revise_intent` authority and are not a Planner
|
|
134
175
|
overwrite path.
|
|
135
176
|
|
|
177
|
+
After authoring, inspect ownership and stage only the exact Planner-produced
|
|
178
|
+
Spec and TaskIntent paths before validation and handoff. Do not hand routine
|
|
179
|
+
Planner-owned staging to the user. This grants no commit, push, broad staging,
|
|
180
|
+
or authority over pre-existing user changes; a mixed-change ownership conflict
|
|
181
|
+
stops only the affected handoff.
|
|
182
|
+
|
|
136
183
|
Before authoring a TaskIntent that adds a field or verdict branch to a state
|
|
137
184
|
machine, enumerate every consumer of that value and of the version gates around
|
|
138
185
|
it: the producing side, each branch or switch that reads it, and any migration or
|
|
@@ -263,7 +310,12 @@ script or host tool through its literal `command`; do not infer a language,
|
|
|
263
310
|
package manager, or runner. Add `environment.prepare` only when the check needs
|
|
264
311
|
explicit setup, and declare only the generated directories it needs in
|
|
265
312
|
`environment.writable_paths`. Never hide package installation inside an
|
|
266
|
-
acceptance command.
|
|
313
|
+
acceptance command. For every descriptor, identify whether its executable is
|
|
314
|
+
provided by the QA host or by tracked delivery content, where every dependency
|
|
315
|
+
comes from in the disposable delivery, what explicit setup is required, and
|
|
316
|
+
which declared writable paths that setup or check creates. A dependency found
|
|
317
|
+
only in the Planner's live worktree, including an absolute local `node_modules`
|
|
318
|
+
path, is not delivery provenance. Prefer the highest existing observable behavioral test seam
|
|
267
319
|
and the fewest sufficient seams; never use the full test suite, a build, network
|
|
268
320
|
access, or redundant heavyweight checks as acceptance. Cite relevant test prior
|
|
269
321
|
art and explain how the selected seam catches the intended regression. This is
|
|
@@ -271,7 +323,9 @@ a planning heuristic: it must not weaken acceptance-specific focused
|
|
|
271
323
|
verification descriptors or add a mandatory user confirmation. Use the smallest
|
|
272
324
|
`timeout_ms` and `max_output_bytes` that cover deterministic post-implementation
|
|
273
325
|
QA. A v1 descriptor is historical-only and requires explicit Intent revision
|
|
274
|
-
before execution.
|
|
326
|
+
before execution. Report `valid` and `enrollment_ready` only as structural and
|
|
327
|
+
Enrollment readiness; only a completed deterministic QA result proves that a
|
|
328
|
+
descriptor executed and passed.
|
|
275
329
|
|
|
276
330
|
## Core Responsibilities
|
|
277
331
|
|
|
@@ -410,7 +464,7 @@ optional advisory dispatch fails, continue inline and record the reason.
|
|
|
410
464
|
|
|
411
465
|
## Boundary
|
|
412
466
|
|
|
413
|
-
- **Allowed**: Write a TaskIntent. Add a Spec only for complex work. Initiative planning carriers and necessary domain vocabulary.
|
|
467
|
+
- **Allowed**: Write a TaskIntent. Add a Spec only for complex work. Activate an absent routing policy under Kernel TaskIntent Routing. Initiative planning carriers and necessary domain vocabulary.
|
|
414
468
|
- **Blocked**: Implementation edits, direct Kernel-store writes, enrolled intent overwrites, and QA/Review decisions.
|
|
415
469
|
- **Workflow guard**: Execution continues through native Enrollment and explicit `imm-loop`. Planner owns design and decomposition, not execution authority.
|
|
416
470
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by scripts/plugin_versioning.ts from the root package.json.
|
|
2
|
-
export const PLUGIN_VERSION = "4.
|
|
2
|
+
export const PLUGIN_VERSION = "4.2.0" as const;
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
from `dist/`; nested modes, examples, recovery, and references load on demand.
|
|
7
7
|
- Ask only when missing information would change the goal, scope, observable behavior, compatibility, risk acceptance, a protected effect, or a fact only the user can supply. Resolve repository facts and delegated technical choices with bounded evidence instead of asking.
|
|
8
8
|
- Keep edits inside the user-requested Direct scope or the enrolled TaskIntent acceptance and `scope_hint`.
|
|
9
|
-
- Stage only explicit task-owned paths.
|
|
9
|
+
- Stage only explicit task-owned paths. This staging authority does not grant
|
|
10
|
+
commit, push, broad staging, or authority over pre-existing user changes.
|
|
11
|
+
Never use `git add .` or `git add -A` in a dirty worktree.
|
|
10
12
|
- Do not create, switch, or delete Git worktrees; operate only in the Host launch directory.
|
|
11
13
|
- Record reproducible evidence before reporting closure.
|
|
12
14
|
- Required verification must pass before reporting completion; disclosing a gap is not a substitute. Autonomously diagnose, repair, and rerun failing conventional local checks within the authorized scope; never delete, skip, or weaken a valid check to manufacture a pass. If a required check remains failing or cannot run, report the work as incomplete with the concrete blocker.
|
|
@@ -46,7 +48,9 @@ routing. A new Managed workflow starts only from explicit `imm-brainstorm`,
|
|
|
46
48
|
Managed owner remains authoritative; the user resumes it with `imm-loop`.
|
|
47
49
|
2. **Start explicitly**: the selected Immune-Brain Skill owns its planning or
|
|
48
50
|
coordination work. It creates only requested artifacts and their required
|
|
49
|
-
parent directories
|
|
51
|
+
parent directories. Explicit Planner entry also owns absent routing-policy
|
|
52
|
+
activation under Planner's Kernel TaskIntent Routing section;
|
|
53
|
+
it does not otherwise install project-wide contract files.
|
|
50
54
|
3. **Preserve authority**: Planner output is a candidate for later literal-user
|
|
51
55
|
Enrollment, and Fast-Track preserves TaskIntent scope, Enrollment, QA,
|
|
52
56
|
Review, authorization, and completion boundaries.
|