immune-brain 3.2.1 → 3.2.2
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/imm-agent-doc-maintain.md +28 -13
- package/plugins/immune-brain/dist/imm-loop.md +17 -12
- package/plugins/immune-brain/dist/imm-planner.md +1 -1
- package/plugins/immune-brain/skills/imm-loop/SKILL.md +3 -45
- package/plugins/immune-brain/skills/imm-planner/SKILL.md +3 -226
package/package.json
CHANGED
|
@@ -55,9 +55,12 @@ commit.
|
|
|
55
55
|
routing owner or scope cannot be read reliably, fail closed for mutation.
|
|
56
56
|
|
|
57
57
|
3. **Inventory instruction relationships.** Determine nesting, explicit
|
|
58
|
-
precedence statements, inbound references,
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
precedence statements, inbound references, existing authority pointers, and
|
|
59
|
+
semantic duplication within and across candidates. Preserve each file's
|
|
60
|
+
native organization. Do not normalize files to a shared template and do not
|
|
61
|
+
infer unsupported cross-host inheritance semantics. Resolve duplicate
|
|
62
|
+
ownership only from explicit precedence, authority, and inbound-reference
|
|
63
|
+
evidence; unresolved ownership remains `UNVERIFIED` or `BLOCKED`.
|
|
61
64
|
|
|
62
65
|
4. **Build repository facts.** Resolve current truth in this order:
|
|
63
66
|
executable/public registries, package exports, CLI/runtime entrypoints;
|
|
@@ -77,14 +80,25 @@ commit.
|
|
|
77
80
|
6. **Classify exact actions.** Classify entries as `REMOVE`, `REWRITE`,
|
|
78
81
|
`POINTER`, `KEEP`, `BLOCKED`, `BLOCKED_ACTIVE_SCOPE`, `UNVERIFIED`, or
|
|
79
82
|
`MISSING_OWNER`. Every mutation entry identifies exact file/section bytes,
|
|
80
|
-
preserved meaning, evidence, candidate hash, and resulting text.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
preserved meaning, evidence, candidate hash, and resulting text. A retained
|
|
84
|
+
meaning has one instruction owner; duplicate copies are not all `KEEP` by
|
|
85
|
+
default. Rules already enforced deterministically by a formatter, linter,
|
|
86
|
+
schema, permission policy, Git hook, or runtime are `REMOVE` unless the agent
|
|
87
|
+
still needs a non-discoverable recovery action, in which case use the shortest
|
|
88
|
+
`REWRITE` or `POINTER`. Keep globally relevant retained rules inline. For a
|
|
89
|
+
branch-specific rule, prefer `POINTER` to an existing current authority with
|
|
90
|
+
a concrete trigger condition; when no owner exists, use `MISSING_OWNER`
|
|
91
|
+
rather than creating one. This Skill does not create a reference document.
|
|
92
|
+
Do not introduce host-specific conditional markup,
|
|
93
|
+
including `<important if>`, without an explicit current host contract and
|
|
94
|
+
repository evidence that the target file uses those semantics. Discoverable
|
|
95
|
+
code snippets, examples, and command tables are repository caches and are
|
|
96
|
+
removed or replaced with a stable pointer unless they encode a necessary
|
|
97
|
+
non-discoverable exception or recovery action. Unknown or one-off-looking
|
|
98
|
+
rules remain `UNVERIFIED` and are not deleted by default. Unresolved
|
|
99
|
+
precedence or semantic conflicts that cannot be decided from explicit
|
|
100
|
+
repository scope or declared precedence are `BLOCKED`. Filename convention,
|
|
101
|
+
nesting, or guessed host behavior alone may not resolve a conflict.
|
|
88
102
|
|
|
89
103
|
7. **Produce one exact manifest.** `audit` mode stops after the manifest.
|
|
90
104
|
Mutation mode also stops until the literal user approves exact manifest
|
|
@@ -103,8 +117,9 @@ commit.
|
|
|
103
117
|
brevity.
|
|
104
118
|
|
|
105
119
|
9. **Verify and report.** Re-scan modified instruction relationships, local
|
|
106
|
-
pointer targets,
|
|
107
|
-
|
|
120
|
+
pointer targets, duplicate retained meanings, unresolved conflicts,
|
|
121
|
+
source/package public-surface parity, existing focused documentation
|
|
122
|
+
contracts, and `git diff --check`. This Skill
|
|
108
123
|
does not execute arbitrary documented commands, real-model success-rate
|
|
109
124
|
benchmarks, or Token measurements unless the user literally requests a
|
|
110
125
|
benchmark. This Skill does not commit. Report only `Removed`, `Rewritten`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: imm-loop
|
|
3
|
-
description: Use
|
|
3
|
+
description: Use to run an enrolled TaskIntent to completion through Kernel-governed execution, QA, and Review.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Immune-Brain: Loop
|
|
@@ -141,17 +141,22 @@ Default user-facing shape: checkpoint progress lines, then `Conclusion -> Eviden
|
|
|
141
141
|
When the Kernel projection reports an active/draining backend claim, keep
|
|
142
142
|
`imm-loop` as the user-facing entry and call the `imm_kernel_canary` Tool for
|
|
143
143
|
that owned task. Enrollment uses the `imm_canary_enrollment` Tool and Review
|
|
144
|
-
authorization remains a native TUI gate
|
|
145
|
-
action `record-user-approval`. When the projection calls for
|
|
144
|
+
authorization remains a native TUI gate. When the projection calls for
|
|
146
145
|
`request_authorization`, `approve_breaking_intent_revision`, or
|
|
147
146
|
`repair_authority_state`, invoke the exact Tool operation directly without
|
|
148
147
|
asking the user for chat pre-confirmation; the native host interaction is the
|
|
149
|
-
single authority decision.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
`
|
|
153
|
-
|
|
154
|
-
`request_authorization` remains the user authorization boundary.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
148
|
+
single authority decision. Do not invoke the removed `imm-canary-work` Skill as
|
|
149
|
+
a separate entry point. Invalid or contradictory projections fail closed. After
|
|
150
|
+
implementation and focused verification, freeze the artifacts and call
|
|
151
|
+
`advance_assurance`. If it returns `review_ready`, invoke the foreground
|
|
152
|
+
reviewer and pass its structured verdict to `submit_review`;
|
|
153
|
+
`request_authorization` remains the critical-risk user authorization boundary.
|
|
154
|
+
Every QA/Review operation stays foreground and returns its next projected
|
|
155
|
+
obligation directly to the Parent. The host performs any opted-in GitHub Issue
|
|
156
|
+
projection only after the corresponding authority mutation: only a fresh
|
|
157
|
+
claimless `done`/`stopped` projection with its exact terminal tombstone projects
|
|
158
|
+
terminal closure (`completed`/`not planned`); Enrollment performs no GitHub
|
|
159
|
+
projection. Treat the attached tracker result as non-authoritative observation.
|
|
160
|
+
Report its failure separately, but never use it as evidence, a stop condition,
|
|
161
|
+
or a reason to repeat a Kernel mutation. A terminal tombstone alone never
|
|
162
|
+
blocks unrelated v3 routing.
|
|
@@ -1,51 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: imm-loop
|
|
3
|
-
description: Use to run
|
|
3
|
+
description: Use to run an enrolled TaskIntent to completion through Kernel-governed execution, QA, and Review.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Immune-Brain: Loop
|
|
7
7
|
|
|
8
|
-
Load [`../../dist/imm-loop.md`](../../dist/imm-loop.md), then
|
|
9
|
-
|
|
10
|
-
`route` for active Steps, bounded repair, architecture exploration, advisory
|
|
11
|
-
review, Compounder, Kernel ownership, or scope expansion. Use `dispatch_role`
|
|
12
|
-
for `qa`, `code-review`, and `ui-review`, then invoke the returned foreground
|
|
13
|
-
Agent envelope exactly. Brainstorm and Planner use the same Tool for bounded
|
|
14
|
-
`arch-explorer` and explicit-lens `advisory-reviewer` dispatches. Loop may
|
|
15
|
-
dispatch `compounder` only when a closed Step supplies structured evidence for
|
|
16
|
-
a reusable Learning; routine work without that evidence returns `next: none`
|
|
17
|
-
and creates no Learning. Do not discover or load a Pi Skill for these roles. The Managed Path public entries remain `imm-brainstorm`, `imm-planner`, and `imm-loop`; standalone `imm-pr-fix`, `imm-doc-prune`, and `imm-agent-doc-maintain` are host-native and are never dispatched as the Loop role.
|
|
18
|
-
Subagent Dispatch Protocol](../../dist/docs/reference/subagent-dispatch-protocol.md#authorization-authority).
|
|
19
|
-
All internal Agent dispatch envelopes use `run_in_background: false` and
|
|
20
|
-
return a direct result to the Parent before any workflow mutation.
|
|
21
|
-
|
|
22
|
-
At `terminal_plan_complete`, stop with no next skill, authority, or action. At `awaiting_user_successor_decision`, stop with `recommended_authority: user`. This boundary follows the explicit internal Compounder handoff and runtime terminal settlement; it must not dispatch Planner, Compounder, transition, or a new Pi session/subagent. Only a literal user may approve a successor through the native authority gate; the internal runtime token is `--approve-successor`, never a public Skill or user-facing entry.
|
|
23
|
-
|
|
24
|
-
Scope expansion always returns to `imm-planner`; Executor and repair roles must stop with the concrete missing scope and verification reason instead of widening execution.
|
|
25
|
-
|
|
26
|
-
The loop always enters through `imm_loop_action`: the projected action's `next`
|
|
27
|
-
authority is `executor`, `test-fixer`, `pr-fix`, `arch-explorer`,
|
|
28
|
-
`advisory-reviewer`, `compounder`, `imm_kernel_canary`, `imm-planner`, or
|
|
29
|
-
`none`.
|
|
30
|
-
|
|
31
|
-
When the Kernel projection reports an active/draining backend claim, keep
|
|
32
|
-
`imm-loop` as the user-facing entry and call the `imm_kernel_canary` Tool for
|
|
33
|
-
that owned task. Enrollment uses the `imm_canary_enrollment` Tool and Review
|
|
34
|
-
authorization remains a native TUI gate. When the projection calls for
|
|
35
|
-
`request_authorization`, `approve_breaking_intent_revision`, or
|
|
36
|
-
`repair_authority_state`, invoke the exact Tool operation directly without
|
|
37
|
-
asking the user for chat pre-confirmation; the native host interaction is the
|
|
38
|
-
single authority decision. Do not invoke the removed `imm-canary-work` Skill as
|
|
39
|
-
a separate entry point. Invalid or contradictory projections fail closed. After
|
|
40
|
-
implementation and focused verification, freeze the artifacts and call
|
|
41
|
-
`advance_assurance`. If it returns `review_ready`, invoke the foreground
|
|
42
|
-
reviewer and pass its structured verdict to `submit_review`; `request_authorization` remains the
|
|
43
|
-
critical-risk user authorization boundary. Every QA/Review operation stays
|
|
44
|
-
foreground and returns its next projected obligation directly to the Parent. The host performs any opted-in GitHub Issue projection only after the
|
|
45
|
-
corresponding authority mutation: only a fresh claimless `done`/`stopped`
|
|
46
|
-
projection with its exact terminal tombstone projects terminal closure
|
|
47
|
-
(`completed`/`not planned`); Enrollment performs no GitHub projection. Treat the
|
|
48
|
-
attached tracker result as non-authoritative observation. Report its failure
|
|
49
|
-
separately, but never use it as evidence, a stop condition, or a reason to
|
|
50
|
-
repeat a Kernel mutation. A terminal tombstone alone never blocks unrelated v3
|
|
51
|
-
routing.
|
|
8
|
+
Load [`../../dist/imm-loop.md`](../../dist/imm-loop.md), then follow that
|
|
9
|
+
canonical contract in the current host conversation.
|
|
@@ -1,232 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: imm-planner
|
|
3
|
-
description: Use to create or revise a spec and
|
|
3
|
+
description: Use to create or revise a spec and TaskIntent from requirements; owns scope and decomposition, not implementation or Enrollment.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Immune-Brain: Planner
|
|
7
7
|
|
|
8
|
-
Load [`../../dist/imm-planner.md`](../../dist/imm-planner.md), then
|
|
9
|
-
|
|
10
|
-
design-contract mode formerly exposed as `imm-page-design`. Keep scope
|
|
11
|
-
explicit, including the Devil's Advocate preplan audit and `Devil's Advocate Audit` output. Return plan path, decisions,
|
|
12
|
-
first step, verification approach, and Next Action.
|
|
13
|
-
|
|
14
|
-
## Clarification supplement
|
|
15
|
-
|
|
16
|
-
Planner consumes an upstream Brainstorm manifest as a closed-world input and
|
|
17
|
-
must not repeat, reopen, or rewrite confirmed decisions. Direct Planner entry
|
|
18
|
-
and Medium/High Design Risk work must inspect relevant ADRs and rejected
|
|
19
|
-
Learnings. It resolves repository facts and owns ordinary technical choices: design and component boundaries, failure behavior, compatibility, migration, recovery and
|
|
20
|
-
rollback, Verification, execution slices, dependencies, scope, and delivery
|
|
21
|
-
risk. It then authors the candidate Spec, Plan, or TaskIntent.
|
|
22
|
-
|
|
23
|
-
Planner may ask only when concrete new evidence exposes an omission, repository
|
|
24
|
-
conflict, or invalidated assumption. Ask the focused decision delta, cite the
|
|
25
|
-
upstream `BR-*` item and new evidence when available, and preserve every
|
|
26
|
-
unaffected decision. Resolve a local delta here; if its answer reopens multiple
|
|
27
|
-
product branches or changes the overall goal or Scope, stop and return to
|
|
28
|
-
`imm-brainstorm`.
|
|
29
|
-
|
|
30
|
-
Direct Planner entry remains valid for clear requests. Resolve facts and derive
|
|
31
|
-
technical design without a Brainstorm pass; if an unresolved user-owned product
|
|
32
|
-
decision appears, return to `imm-brainstorm` instead of silently choosing it or
|
|
33
|
-
starting a second exhaustive interview. A zero-question fast path is valid when
|
|
34
|
-
no supplement is required. Present an unchanged result summary as a
|
|
35
|
-
non-blocking correction window and do not ask the user to reconfirm existing
|
|
36
|
-
decisions. If the summary itself introduces or changes a user decision, confirm
|
|
37
|
-
only that decision delta before finalizing.
|
|
38
|
-
|
|
39
|
-
Settlement-class intents (terminal settlement, cancellation, timeout, race, or
|
|
40
|
-
authority-lifecycle semantics) must embed the `Settlement-Design Contract`
|
|
41
|
-
enumeration required by the loaded contract before they are execution-ready.
|
|
42
|
-
|
|
43
|
-
## Technical Design Views And Decomposition
|
|
44
|
-
|
|
45
|
-
For Medium and High Design Risk, select every materially relevant technical-design view from architecture layers, service/component interfaces, data flow, state transitions, and temporal sequence. Record a short `Design views` statement naming the selected views and why any omitted view cannot affect the design. The Spec is the single Technical Design baseline. Persist those decisions there; do not copy them into a TaskIntent or revive prose Plan authority. Low risk remains concise and is not forced to produce empty architecture, interface, data-flow, state, or sequence sections.
|
|
46
|
-
|
|
47
|
-
Use the selected design boundaries as one TaskIntent decomposition dimension alongside outcome, Verification, dependency, risk, rollback, compatibility, and authority. Keep one TaskIntent when the selected views describe one coherent executable slice with shared acceptance, risk treatment, rollback, and authority. Split a successor TaskIntent only when a service, state-machine owner, migration, independently promotable layer, or sequence dependency needs independent verification, rollback, authorization, or settlement. Do not split merely because the design names several layers, files, or services.
|
|
48
|
-
|
|
49
|
-
Treat trust-boundary changes as the same kind of decomposition evidence. A TaskIntent should normally change one primary trust-boundary invariant; merely traversing several boundaries or updating both sides of one end-to-end authority chain does not require a split. Split separate trust invariants when they can be independently verified, rolled back, authorized, migrated, or settled. Keep multiple trust-boundary changes together only when they form one atomic security outcome and splitting would create an unsafe or unusable intermediate state; record that reason in the Spec. This is Planner judgment, not a TaskIntent schema field or an Enrollment counting rule.
|
|
50
|
-
|
|
51
|
-
## Reference Closure Preflight
|
|
52
|
-
|
|
53
|
-
Before authoring a TaskIntent, trace each expected behavior from its public or
|
|
54
|
-
runtime entry point through existing imports and callers to the highest focused
|
|
55
|
-
behavioral tests. Include generated or packaged mirrors and every owner of the
|
|
56
|
-
same state machine. Record the concrete paths in the Spec's discovery evidence;
|
|
57
|
-
do not author while a referenced sibling is unresolved. Use the smallest
|
|
58
|
-
coherent module directory for ordinary implementation scope. Keep Kernel,
|
|
59
|
-
authority, migration, secret, and security-sensitive scope exact to the files
|
|
60
|
-
proved necessary by the trace. Scope is closed by reference evidence, not by an
|
|
61
|
-
exhaustive filename guess.
|
|
62
|
-
|
|
63
|
-
## Managed Request Routing
|
|
64
|
-
|
|
65
|
-
`imm-planner` is entered explicitly by the user for a clear repository mutation.
|
|
66
|
-
Ordinary host input does not invoke this Skill through natural-language routing.
|
|
67
|
-
An active Assurance projection remains authoritative and is resumed only through an explicit `imm-loop` entry; explicit Planner entry owns planning and the later native Enrollment gate:
|
|
68
|
-
- an active Assurance projection remains on its current owner until the user explicitly enters `imm-loop`;
|
|
69
|
-
- read-only, explanation, review-only, Plan-only, and explicit no-modification
|
|
70
|
-
requests do not enroll;
|
|
71
|
-
- materially ambiguous mutations go to `imm-brainstorm` before planning; and
|
|
72
|
-
- clear new mutations reach this Planner phase.
|
|
73
|
-
|
|
74
|
-
Plan-only output remains non-authoritative. Planner creates or validates a
|
|
75
|
-
candidate Spec/TaskIntent, but it never enrolls a task or enrolls generated
|
|
76
|
-
artifacts unconditionally. Explicit Plan-only requests stop after returning the
|
|
77
|
-
planning artifacts. A later literal-user request to start Enrollment is a non-authoritative
|
|
78
|
-
execution trigger: invoke the native Enrollment gate directly, without asking
|
|
79
|
-
for chat pre-confirmation. For a clear mutation request that already includes
|
|
80
|
-
execution, invoke that gate as soon as the candidate is validated and Git-tracked.
|
|
81
|
-
Literal-user confirmation in the native gate remains the authority boundary.
|
|
82
|
-
Fast-Track may compress the same phases but cannot bypass that boundary, QA,
|
|
83
|
-
Review, authorization, or completion.
|
|
84
|
-
|
|
85
|
-
## Kernel TaskIntent Routing
|
|
86
|
-
|
|
87
|
-
Before producing a new managed planning artifact, resolve the canonical wrappers
|
|
88
|
-
from the declared Skill location: `../../bin/imm-plan` and
|
|
89
|
-
`../../bin/imm-kernel`. Invoke `imm-plan --routing-status --json` through that
|
|
90
|
-
resolved wrapper and use the resolved `imm-kernel` wrapper for every Kernel
|
|
91
|
-
command below. Do not assume either bare command is available on shell `PATH`.
|
|
92
|
-
Then route deterministically:
|
|
93
|
-
|
|
94
|
-
- an active Kernel claim routes to `imm-loop` for foreground Kernel Tool
|
|
95
|
-
coordination, not new planning;
|
|
96
|
-
- an active or otherwise nonterminal v3 Plan remains on its existing v3 route;
|
|
97
|
-
- no routing policy preserves the legacy v3 Planner behavior;
|
|
98
|
-
- a valid `kernel_task_intent` retirement policy produces one TaskIntent draft
|
|
99
|
-
through Pi `imm-planner`;
|
|
100
|
-
- an invalid, unreadable, untracked, or tracked-deleted policy rejects new
|
|
101
|
-
planning authority with `routing_policy_invalid`;
|
|
102
|
-
- no Planner path enrolls a task or falls back to v3 after retirement.
|
|
103
|
-
|
|
104
|
-
Current owner, phase, completion, and authority facts are authoritative only
|
|
105
|
-
when read from the Assurance projection and TaskRecord. `CONTEXT.md` is
|
|
106
|
-
non-authoritative vocabulary and architecture navigation, not a workflow-status
|
|
107
|
-
source. If its prose conflicts with those authority facts, report stale
|
|
108
|
-
documentation, preserve projection-based routing, and do not automatically
|
|
109
|
-
synchronize either representation.
|
|
110
|
-
|
|
111
|
-
Pi host identity is implicit and never a planning input. The production boundary
|
|
112
|
-
that turns a Git-tracked TaskIntent draft into managed execution authority is the
|
|
113
|
-
native host TUI: the Planner's final `ctx.ui.custom` gate (via the
|
|
114
|
-
`imm_canary_enrollment` foreground Tool) provides one literal-user confirmation
|
|
115
|
-
bound to the TaskIntent content hash. Invoke the Tool directly when the route is
|
|
116
|
-
ready; do not ask for a chat pre-confirmation. Enrollment validates the intent,
|
|
117
|
-
Git ownership, scope, workspace claim, and final authority preconditions without
|
|
118
|
-
executing acceptance descriptors. A routine task proceeds from that single
|
|
119
|
-
confirmation through enrollment, execution and QA without a second human stop.
|
|
120
|
-
|
|
121
|
-
The Planner never writes the `docs/plans/<task-id>.intent.json` artifact
|
|
122
|
-
directly and never overwrites an existing TaskIntent. Under an active
|
|
123
|
-
`kernel_task_intent` policy it supplies one complete candidate to the canonical
|
|
124
|
-
`imm-kernel intent author <path> --stdin --json` command, which owns strict
|
|
125
|
-
parsing, verification-descriptor canonicalization, path binding, and exclusive
|
|
126
|
-
file creation; then it validates the created artifact with
|
|
127
|
-
`imm-kernel intent validate <path> --json`. Revisions of an enrolled intent
|
|
128
|
-
continue through Kernel `revise_intent` authority and are not a Planner
|
|
129
|
-
overwrite path.
|
|
130
|
-
|
|
131
|
-
### Initiative Carrier Preference
|
|
132
|
-
|
|
133
|
-
For a large proposal split across multiple TaskIntents, exactly one planning
|
|
134
|
-
carrier is chosen per Initiative: a Local Markdown file at
|
|
135
|
-
`docs/initiatives/<slug>.md` or one GitHub Parent Issue. This preference applies
|
|
136
|
-
only to Initiatives; ordinary TaskIntents remain tracked by Kernel TaskRecords.
|
|
137
|
-
Resolve the carrier in this order:
|
|
138
|
-
|
|
139
|
-
1. a literal user instruction for the current request;
|
|
140
|
-
2. `Initiative carrier default: local` or `Initiative carrier default: github`
|
|
141
|
-
in the repository root `AGENTS.md`;
|
|
142
|
-
3. the same directive in `~/.pi/agent/AGENTS.md`; or
|
|
143
|
-
4. ask the user when no valid directive exists.
|
|
144
|
-
|
|
145
|
-
A repository directive overrides the global directive. Report an invalid value
|
|
146
|
-
and ask instead of guessing. After resolving it, display one non-blocking line
|
|
147
|
-
with the selected carrier and its source. A configured `github` default is
|
|
148
|
-
standing opt-in for GitHub projection, but the literal user must still confirm
|
|
149
|
-
the named Initiative, its immutable slug, and the complete Parent/Child
|
|
150
|
-
decomposition before the first remote mutation. A prior bulk approval cannot
|
|
151
|
-
confirm a name, slug, Child, or dependency that had not yet been shown.
|
|
152
|
-
|
|
153
|
-
Once decomposition is complete, present one review table containing the Parent
|
|
154
|
-
result and every Child's stable Slice ID, result, scope boundary, risk, blockers,
|
|
155
|
-
and proposed execution order. Ask one focused question: whether the coverage,
|
|
156
|
-
granularity, and dependencies are correct. Recommend the complete current
|
|
157
|
-
frontier so the user can approve it in one response. Before that approval,
|
|
158
|
-
perform zero GitHub mutations. A partial or progressively disclosed issue set is
|
|
159
|
-
not eligible for publication.
|
|
160
|
-
|
|
161
|
-
After approval, author, stage, and validate every TaskIntent in the decomposition
|
|
162
|
-
with `valid: true` and `enrollment_ready: true`. Resolve `../../bin/imm-tracker` from this Skill location; do not assume a bare command is on `PATH`. Submit the entire approved set once through
|
|
163
|
-
`imm-tracker publish-initiative --stdin --json`. Its input contains the confirmed
|
|
164
|
-
Initiative slug and goal, Parent projection, and every Child's `slice_id`,
|
|
165
|
-
canonical TaskIntent path, and public projection. The Parent projection requires
|
|
166
|
-
`problem`, `result`, and `design`, and may include `decisions`,
|
|
167
|
-
`testing_strategy`, and `out_of_scope`. `design` records Initiative-level
|
|
168
|
-
invariants, Slice boundaries and ordering, shared interfaces or state flow, and
|
|
169
|
-
material compatibility decisions. Every Parent Slice must correspond to one
|
|
170
|
-
published Child; future checklist-only Slices are not allowed in the batch.
|
|
171
|
-
|
|
172
|
-
Each Child projection may contain `result`, `current_behavior`,
|
|
173
|
-
`desired_behavior`, `key_interfaces`, `verification`, `blocked_by` Task IDs,
|
|
174
|
-
`out_of_scope`, and `agent_handoff`. The tracker rereads every canonical
|
|
175
|
-
TaskIntent for identity, risk, and acceptance; projection fields never widen
|
|
176
|
-
TaskIntent scope or authority. It validates the complete dependency graph before
|
|
177
|
-
remote writes, creates the Parent once, creates all Children, attaches every
|
|
178
|
-
Child as a native Sub-issue, creates native `blocked_by` relations, and rereads
|
|
179
|
-
the complete topology. The Child Agent Brief includes a direct Parent Issue link.
|
|
180
|
-
Internal role prompts, tool policies, review gates, model reservations, and
|
|
181
|
-
prompt digests never belong in this external handoff. If
|
|
182
|
-
`docs/initiatives/<slug>.md` exists, publication fails with a carrier conflict;
|
|
183
|
-
Local mode performs zero GitHub operations.
|
|
184
|
-
|
|
185
|
-
The batch result includes an execution recommendation: the first unblocked Task,
|
|
186
|
-
a stable dependency order, and parallel groups. For a plan-only request, report
|
|
187
|
-
that recommendation and stop. For a request that includes execution, invoke the
|
|
188
|
-
native Enrollment gate for the recommended first TaskIntent after successful
|
|
189
|
-
publication; do not ask for another chat confirmation. GitHub selection never
|
|
190
|
-
bypasses Enrollment.
|
|
191
|
-
|
|
192
|
-
Tracker output is observation, never authority. Before the Planner returns, its
|
|
193
|
-
GitHub carrier outcome must be exactly one of: `tracker_associated` after the
|
|
194
|
-
complete batch returns `created`, `updated`, or `already_current`;
|
|
195
|
-
`awaiting_user_initiative_confirmation` with the single pending name, slug, and
|
|
196
|
-
complete-decomposition decision; or `tracker_projection_failed` with the returned
|
|
197
|
-
failure and exact retry action. A candidate Initiative or partial Issue set
|
|
198
|
-
recorded only in the Spec or final summary is neither user confirmation nor a
|
|
199
|
-
completed carrier outcome. Report `retryable_failure`, `permanent_failure`, or
|
|
200
|
-
`ambiguous_remote_state` and the exact batch retry action. This does not invalidate
|
|
201
|
-
already-authored planning files, but it blocks `tracker_associated` and every
|
|
202
|
-
Enrollment or execution handoff for that Initiative until the same complete
|
|
203
|
-
batch succeeds. Do not infer opt-in from tracker output or Issue state, auto-close the Parent,
|
|
204
|
-
import Issue state, create a TaskIntent from an Issue, or store Issue identity in
|
|
205
|
-
TaskIntent or TaskRecord. Existing Issue markers grant permission only for
|
|
206
|
-
idempotent retry of that same approved Initiative; they never grant execution
|
|
207
|
-
authority.
|
|
208
|
-
|
|
209
|
-
### Verification Descriptor Discipline
|
|
210
|
-
|
|
211
|
-
Every acceptance verification descriptor must be a focused, deterministic,
|
|
212
|
-
repository-local check that exercises only its acceptance assertion. Prefer one
|
|
213
|
-
small `bun test <focused-file>` or `bun run <focused-script>` per acceptance;
|
|
214
|
-
never use the full test suite, a build, package installation, network access, or
|
|
215
|
-
redundant heavyweight checks. Prefer the highest existing observable behavioral
|
|
216
|
-
test seam and the fewest sufficient seams. Cite relevant test prior art and
|
|
217
|
-
explain how the selected seam catches the intended regression. This is a
|
|
218
|
-
planning heuristic: it must not weaken acceptance-specific focused verification
|
|
219
|
-
descriptors or add a mandatory user confirmation. Use the smallest `timeout_ms` and
|
|
220
|
-
`max_output_bytes` that cover deterministic post-implementation QA.
|
|
221
|
-
|
|
222
|
-
## Retirement Completion Contract
|
|
223
|
-
|
|
224
|
-
For retirement-class work, deletion of source and contract text is a completion condition. A retirement that routes the command to a retirement wall, pins the absence with test assertions, and leaves the source in the tree is not complete. A retirement is not complete until the source and its contract text are deleted.
|
|
225
|
-
|
|
226
|
-
An absence test is transitional scaffolding proving an in-progress deletion rather than a substitute for one. An absence test is transitional evidence of an in-progress deletion and may not stand in place of one. It proves a deletion in progress, not a completed result. Distinguish an absence assertion that guards something already gone, which is durable and correct, from one that stands in for a deletion still owed, which is a promise recorded as if it were a result.
|
|
227
|
-
Architecture exploration and advisory review use the internal Loop bridge's
|
|
228
|
-
read-only `arch-explorer` and `advisory-reviewer` roles. They can supply
|
|
229
|
-
candidates, evidence, and decision criteria, but cannot write this Spec/Plan or
|
|
230
|
-
activate execution.
|
|
231
|
-
Agreement becomes evidence, Disagreement becomes decision criteria, and
|
|
232
|
-
strong-model blockers become risks or verification requirements.
|
|
8
|
+
Load [`../../dist/imm-planner.md`](../../dist/imm-planner.md), then follow that
|
|
9
|
+
canonical contract. `mode: page_design` selects its page-design branch.
|