greprag 5.59.4 → 5.60.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/dist/commands/arm-reminder.d.ts +5 -0
- package/dist/commands/arm-reminder.js +11 -0
- package/dist/commands/arm-reminder.js.map +1 -1
- package/dist/commands/codex-chip/breakthrough-ack-command.d.ts +1 -0
- package/dist/commands/codex-chip/breakthrough-ack-command.js +25 -0
- package/dist/commands/codex-chip/breakthrough-ack-command.js.map +1 -0
- package/dist/commands/codex-chip/breakthrough-command.d.ts +5 -0
- package/dist/commands/codex-chip/breakthrough-command.js +46 -0
- package/dist/commands/codex-chip/breakthrough-command.js.map +1 -0
- package/dist/commands/codex-chip/breakthrough.d.ts +15 -0
- package/dist/commands/codex-chip/breakthrough.js +147 -0
- package/dist/commands/codex-chip/breakthrough.js.map +1 -0
- package/dist/commands/codex-chip/cleanup-command.js +11 -1
- package/dist/commands/codex-chip/cleanup-command.js.map +1 -1
- package/dist/commands/codex-chip/command.d.ts +1 -1
- package/dist/commands/codex-chip/command.js +48 -84
- package/dist/commands/codex-chip/command.js.map +1 -1
- package/dist/commands/codex-chip/goal-command.js +27 -4
- package/dist/commands/codex-chip/goal-command.js.map +1 -1
- package/dist/commands/codex-chip/goals.d.ts +15 -2
- package/dist/commands/codex-chip/goals.js +170 -10
- package/dist/commands/codex-chip/goals.js.map +1 -1
- package/dist/commands/codex-chip/help.d.ts +1 -0
- package/dist/commands/codex-chip/help.js +34 -0
- package/dist/commands/codex-chip/help.js.map +1 -0
- package/dist/commands/codex-chip/inbox.d.ts +1 -1
- package/dist/commands/codex-chip/inbox.js +5 -3
- package/dist/commands/codex-chip/inbox.js.map +1 -1
- package/dist/commands/codex-chip/mechanic-lifecycle.d.ts +5 -0
- package/dist/commands/codex-chip/mechanic-lifecycle.js +67 -0
- package/dist/commands/codex-chip/mechanic-lifecycle.js.map +1 -0
- package/dist/commands/codex-chip/model.d.ts +39 -1
- package/dist/commands/codex-chip/model.js +6 -0
- package/dist/commands/codex-chip/model.js.map +1 -1
- package/dist/commands/codex-chip/naming.d.ts +2 -2
- package/dist/commands/codex-chip/naming.js +8 -5
- package/dist/commands/codex-chip/naming.js.map +1 -1
- package/dist/commands/codex-chip/native.js +5 -1
- package/dist/commands/codex-chip/native.js.map +1 -1
- package/dist/commands/codex-chip/prompt.js +22 -2
- package/dist/commands/codex-chip/prompt.js.map +1 -1
- package/dist/commands/codex-chip/resume-command.js +3 -0
- package/dist/commands/codex-chip/resume-command.js.map +1 -1
- package/dist/commands/codex-chip/selection.d.ts +6 -3
- package/dist/commands/codex-chip/selection.js +81 -27
- package/dist/commands/codex-chip/selection.js.map +1 -1
- package/dist/commands/codex-chip/worker.js +19 -0
- package/dist/commands/codex-chip/worker.js.map +1 -1
- package/dist/commands/codex-delivery.d.ts +7 -1
- package/dist/commands/codex-delivery.js +98 -15
- package/dist/commands/codex-delivery.js.map +1 -1
- package/dist/commands/codex-native-delivery.d.ts +70 -0
- package/dist/commands/codex-native-delivery.js +285 -0
- package/dist/commands/codex-native-delivery.js.map +1 -0
- package/dist/commands/codex-startup.js +1 -1
- package/dist/commands/codex-startup.js.map +1 -1
- package/dist/commands/codex.js +17 -12
- package/dist/commands/codex.js.map +1 -1
- package/dist/commands/docptr.js +4 -4
- package/dist/commands/docptr.js.map +1 -1
- package/dist/commands/inbox-primer-reminder.js +2 -2
- package/dist/commands/inbox-primer-reminder.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/load-primer-reminder.js +2 -2
- package/dist/commands/load-primer-reminder.js.map +1 -1
- package/dist/commands/load.js +2 -2
- package/dist/commands/load.js.map +1 -1
- package/dist/index.js +96 -1
- package/dist/index.js.map +1 -1
- package/dist/opencode-plugin.bundle.js +4 -4
- package/dist/procedure-run.js +5 -5
- package/dist/procedure-run.js.map +1 -1
- package/dist/session-id.d.ts +4 -0
- package/dist/session-id.js +13 -0
- package/dist/session-id.js.map +1 -1
- package/package.json +1 -1
- package/skill/greprag/SKILL.md +1 -1
- package/skill/greprag/docs/codex-chip.md +10 -8
- package/skill/greprag/docs/setup.md +6 -6
- package/skill/templates/chip-leader.md +9 -6
- package/skill/templates/codex-chip-spawn.md +46 -32
package/dist/session-id.js
CHANGED
|
@@ -49,6 +49,7 @@ exports.peerHumanTag = peerHumanTag;
|
|
|
49
49
|
exports.readIdentityAlias = readIdentityAlias;
|
|
50
50
|
exports.buildSessionIdContext = buildSessionIdContext;
|
|
51
51
|
exports.armMonitorCommand = armMonitorCommand;
|
|
52
|
+
exports.buildArmDirective = buildArmDirective;
|
|
52
53
|
exports.handleSessionIdHook = handleSessionIdHook;
|
|
53
54
|
const path = __importStar(require("path"));
|
|
54
55
|
const fs = __importStar(require("fs"));
|
|
@@ -175,6 +176,18 @@ function armMonitorCommand(short, ownerPid, assistant = false, mechanic = false)
|
|
|
175
176
|
// the relaunch rate so a persistent crash can't spin.
|
|
176
177
|
return `while true; do ${watch}; case $? in 0|64) break;; esac; sleep 1; done`;
|
|
177
178
|
}
|
|
179
|
+
/** Backward-compatible copyable watcher directive for older hook consumers.
|
|
180
|
+
* Current hooks use the detection-gated reminder registry, but keeping this
|
|
181
|
+
* pure formatter exported preserves the public helper and older integrations. */
|
|
182
|
+
function buildArmDirective(short, alias = null, ownerPid, assistant = false, mechanic = false) {
|
|
183
|
+
const reply = `${alias || '<handle>'}@greprag.com/${short}`;
|
|
184
|
+
const command = armMonitorCommand(short, ownerPid, assistant, mechanic);
|
|
185
|
+
return 'STOP IMMEDIATELY AND READ THIS. '
|
|
186
|
+
+ `No live inbox watcher is armed for ${reply}. `
|
|
187
|
+
+ 'ToolSearch query "select:Monitor" and arm a persistent:true Monitor '
|
|
188
|
+
+ `(description:"greprag inbox ${short}", timeout_ms:3600000) with command: ${command}. `
|
|
189
|
+
+ 'Then answer the waiting peer message.';
|
|
190
|
+
}
|
|
178
191
|
/** Handle `greprag-hook session-id`. Reads the Claude Code hook payload
|
|
179
192
|
* from `input.session_id`, emits a JSON response with hookSpecificOutput.
|
|
180
193
|
* additionalContext to stdout. Silent on missing session_id (other hook
|
package/dist/session-id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-id.js","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,8CAKC;AAWD,wCAQC;AAaD,oCAIC;AASD,8CAaC;AAWD,sDAUC;AAuBD,8CAkBC;AAWD,kDAaC;
|
|
1
|
+
{"version":3,"file":"session-id.js","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skill/greprag/SKILL.md
CHANGED
|
@@ -130,7 +130,7 @@ Aliases (silent back-compat): `greprag memory briefing` → `recap` (renamed v5.
|
|
|
130
130
|
|
|
131
131
|
**Codex: DO NOT CLAIM HOOKS ARE ACTIVE JUST BECAUSE `~/.codex/hooks.json` EXISTS.** Codex Desktop requires Settings -> Settings -> Hooks trust review before command hooks run automatically. If turn capture is missing after `greprag init --codex`, tell the user: open Codex Desktop Settings -> Settings -> Hooks, trust the GrepRAG hooks, then start a fresh Codex session.
|
|
132
132
|
|
|
133
|
-
**Codex live inbox push requires the startup watcher plus target-thread delivery.** Hooks only fire at Codex turn/tool/session boundaries. Public installs should use `greprag init --codex --tenant-id <handle> --install-watcher`; run `greprag codex doctor --wake-test` to inspect state, and use `greprag codex watch --session <id>` only for foreground testing. The sidecar listens to GrepRAG inbox SSE.
|
|
133
|
+
**Codex live inbox push requires the startup watcher plus target-thread delivery.** Hooks only fire at Codex turn/tool/session boundaries. Public installs should use `greprag init --codex --tenant-id <handle> --install-watcher`; run `greprag codex doctor --wake-test` to inspect state, and use `greprag codex watch --session <id>` only for foreground testing. The sidecar listens to GrepRAG inbox SSE. BREAKTHROUGH is the sole agent-visible control rail: it records queued → injected → acknowledged → acted with a nonce-bound target acknowledgment. Codex app-server `thread/resume`, `turn/start`, and `turn/steer` are private transports behind that rail. A completed empty turn, `codex exec resume`, or persisted history entry is not delivery; natural turn-drain is degraded fallback only. If wake-test reports no loaded/native path, surface delivery degradation and keep the breakthrough pending for retry.
|
|
134
134
|
|
|
135
135
|
**ABOUT TO `greprag send` TO A `@gmail.com` / `@anthropic.com` / REAL EMAIL ADDRESS? STOP — for `inbox`/`send` (internal cross-session messaging), `users.email` IS NEVER A ROUTING ADDRESS.** Use the numeric handle (`1834729@greprag.com`) or claimed vanity alias (`travis@greprag.com`). If you don't know the recipient's handle, ASK — don't guess from their email. adr: adr/numeric-handles.md. Full grammar: `docs/inbox.md § address`.
|
|
136
136
|
|
|
@@ -13,14 +13,16 @@ greprag codex chip spawn "<task>" --name <slug> --title "<Purview>" \
|
|
|
13
13
|
Native-v4 sends the full mission, selected model/effort, and worktree in the
|
|
14
14
|
initial `create_thread`. There is no bootstrap task and no second assignment.
|
|
15
15
|
The initial hook binds the lease before tools; attach emits `IN-FLIGHT` and
|
|
16
|
-
starts monitoring only.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
starts monitoring only. Exact roles are `PLANNER: <Mission>` (intent and final
|
|
17
|
+
acceptance), `LEAD: <Mission>` (Luna/xhigh orchestration), `Chip A/B/C:
|
|
18
|
+
<Specific Purview>` (Luna/xhigh workers), and `ADVISOR: <Purview>` (read-only
|
|
19
|
+
Sol advice for a documented fundamental blocker).
|
|
20
|
+
|
|
21
|
+
Role gates are explicit: LEAD and worker execution are fixed to
|
|
22
|
+
`gpt-5.6-luna/xhigh`; PLANNER may use Luna/xhigh or Sol/high for planning;
|
|
23
|
+
ADVISOR is read-only Sol/high and requires `--model-reason "Fundamental
|
|
24
|
+
blocker: ..."`. Complexity flags no longer route new execution chips to Sol.
|
|
25
|
+
Use `codex chip breakthrough <id> --reason "..."` for boundary routing.
|
|
24
26
|
|
|
25
27
|
Declare every path the child may change. Split overlapping work differently;
|
|
26
28
|
never bypass a lease collision. Use `--read-only` for research or review.
|
|
@@ -65,12 +65,12 @@ greprag codex watch --session <8hex-or-full-codex-session-id>
|
|
|
65
65
|
|
|
66
66
|
If `--session` is omitted, it uses the latest Codex session recorded in
|
|
67
67
|
`~/.codex/session_index.jsonl`. The sidecar stays attached to GrepRAG inbox SSE
|
|
68
|
-
and
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
and routes agent-visible control through the nonce-bound BREAKTHROUGH protocol.
|
|
69
|
+
Private app-server continuation may create the target turn, but success requires
|
|
70
|
+
visible `BREAKTHROUGH_ACK:<nonce>` output; persisted history or an empty turn is
|
|
71
|
+
not delivery. `codex exec resume <session> -` can append to Codex's thread store,
|
|
72
|
+
but it is not a reliable visible wake in the active Desktop pane and must be
|
|
73
|
+
treated as fallback/diagnostic only.
|
|
74
74
|
Use `greprag codex startup status` to inspect the login entry and
|
|
75
75
|
`greprag codex startup remove` to uninstall it.
|
|
76
76
|
|
|
@@ -13,12 +13,15 @@ before mobilizing the troops.
|
|
|
13
13
|
|
|
14
14
|
## Codex Desktop standard
|
|
15
15
|
|
|
16
|
-
For Codex, the
|
|
17
|
-
observable final state, and criterion IDs
|
|
18
|
-
`LEAD: <Mission
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
For Codex, the `PLANNER: <Mission>` first creates one durable mission goal with
|
|
17
|
+
objective, observable final state, and criterion IDs, then launches exactly one
|
|
18
|
+
`LEAD: <Mission>` at `gpt-5.6-luna/xhigh`. The LEAD owns decomposition, child
|
|
19
|
+
dispatch, integration, checks, release proof, and immediate child closeout.
|
|
20
|
+
Before dispatch it assigns each workstream a unique letter and human
|
|
21
|
+
purview—`Chip A: <Specific Purview>`, `Chip B: ...`—plus disjoint leases and
|
|
22
|
+
explicit `--covers` criteria. Every worker spawn uses `--multi-chip`, its
|
|
23
|
+
`--label`, and its proper `--title`; workers stay Luna/xhigh. `ADVISOR:` is a
|
|
24
|
+
read-only Sol/high escape hatch only for a documented fundamental blocker.
|
|
22
25
|
|
|
23
26
|
Dispatch uses the native-v4 `createRequest` exactly once. It contains the real
|
|
24
27
|
mission, the parent-selected model/effort, and native worktree setup; never send
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
This is the Codex Desktop chip method. It is separate from Claude Code
|
|
4
4
|
`spawn_task`: never use or copy the Claude Block 1/Block 2 prompt here.
|
|
5
5
|
|
|
6
|
+
Exact visible titles are role contracts: `PLANNER: <Mission>` owns intent and
|
|
7
|
+
acceptance, `LEAD: <Mission>` is always Luna/xhigh and owns orchestration,
|
|
8
|
+
`Chip A/B/C: <Specific Purview>` are Luna/xhigh workers, and
|
|
9
|
+
`ADVISOR: <Purview>` is read-only Sol/high advice for a documented fundamental
|
|
10
|
+
blocker.
|
|
11
|
+
|
|
6
12
|
## Gate: one chip or a mission?
|
|
7
13
|
|
|
8
14
|
A single independent task proceeds directly. If two or more chips target one
|
|
@@ -18,6 +24,10 @@ uniquely named `Chip A: <Specific Purview>`, `Chip B: ...`; a single worker is
|
|
|
18
24
|
Every mission starts with a durable parent-owned goal. Give it a concrete
|
|
19
25
|
objective, final state, and stable acceptance criterion IDs. Every write chip
|
|
20
26
|
declares non-overlapping ownership leases; research uses `--read-only`.
|
|
27
|
+
After the planner attaches the Luna LEAD, the LEAD creates one nested goal and
|
|
28
|
+
runs `greprag codex chip goal bind-lead <lead-id> --goal-id <nested-goal-id>`.
|
|
29
|
+
That emits `GOAL_READY:<goalId>`; no LEAD execution or child dispatch is valid
|
|
30
|
+
before it. All later Chips, ADVISOR, and MECHANIC tasks use that exact goal.
|
|
21
31
|
|
|
22
32
|
```bash
|
|
23
33
|
greprag codex chip goal create \
|
|
@@ -36,30 +46,18 @@ greprag codex chip spawn "<independent task>" \
|
|
|
36
46
|
```
|
|
37
47
|
|
|
38
48
|
The parent/`LEAD:` selects each worker model before dispatch; the child never
|
|
39
|
-
self-selects or changes it.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
worker independently—workers do not inherit Sol. Complex selection requires a
|
|
52
|
-
concise `--model-reason` plus one or more `--complexity-signal` values:
|
|
53
|
-
`orchestration`, `multi-chip-integration`, `architecture-api-schema`,
|
|
54
|
-
`cross-cutting-ownership`, `ambiguous-synthesis`, `high-risk-correctness`, or
|
|
55
|
-
`novel-multi-hypothesis-diagnosis`. Explicit `--model`/`--effort` overrides are
|
|
56
|
-
supported and require `--model-reason`; standard records its rubric reason by
|
|
57
|
-
default. Native Desktop `thinking` uses the callable enum and is checked against
|
|
58
|
-
the selected model's advertised effort matrix.
|
|
59
|
-
An arbitrary custom native model also requires `--native-model-verified`, which
|
|
60
|
-
means the parent verified it on the Desktop surface before dispatch. The
|
|
61
|
-
manifest persists profile/model/effort, parent session in
|
|
62
|
-
`selectedBy`, reason, and matched signals.
|
|
49
|
+
self-selects or changes it. `LEAD` and ordinary Chips are fixed to
|
|
50
|
+
`gpt-5.6-luna/xhigh`.
|
|
51
|
+
`PLANNER` may use Luna/xhigh or explicitly Sol/high. `ADVISOR` must be
|
|
52
|
+
`--read-only`, Sol/high, and carry `--model-reason "Fundamental blocker: ..."`.
|
|
53
|
+
The old `--complex`, `--profile complex`, and `--complexity-signal` routing is
|
|
54
|
+
rejected for new spawns. Native Desktop `thinking` uses the callable enum and
|
|
55
|
+
is checked against the selected model's advertised effort matrix. The manifest
|
|
56
|
+
persists role, model, effort, parent session, reason, and criterion evidence.
|
|
57
|
+
The auditable selection fields are `selectedBy`, `reason`, and `matched signals`.
|
|
58
|
+
The hard-signal rubric covers `architecture/API/schema` and
|
|
59
|
+
`high-risk migration/security/accounting`; a scope boundary sends a
|
|
60
|
+
`breakthrough message` and the child `never swaps models autonomously`.
|
|
63
61
|
|
|
64
62
|
Native Desktop is the default runtime.
|
|
65
63
|
`--runtime cli` is opt-in and only valid when PATH Codex `model/list` actually
|
|
@@ -73,6 +71,9 @@ The spawn command creates a unique starting branch, records the manifest and
|
|
|
73
71
|
lease, and returns a `greprag-codex-native-v4` handoff. Pass `createRequest`
|
|
74
72
|
exactly to native `create_thread`: it already contains the full real mission,
|
|
75
73
|
selected `model`, `thinking`, project target, and worktree starting branch.
|
|
74
|
+
The native target schema is `target.type=project` with
|
|
75
|
+
`startingState={type:"branch", branchName}` inside the worktree environment;
|
|
76
|
+
do not invent a checkout path or second bootstrap turn. Do not add `cwd`, `title`, `model`, or `effort` to the native create request; those values belong to the handoff and post-create verification contract.
|
|
76
77
|
`expectedBaseSha` is the attach-time commit invariant behind that reserved branch.
|
|
77
78
|
This is the only assignment turn. Never create a bootstrap task and never send
|
|
78
79
|
the mission again after attach.
|
|
@@ -91,6 +92,8 @@ and starts the monitor. The enforced order is create-real-mission → provisiona
|
|
|
91
92
|
bind → resolve → rename/verify → attach → IN-FLIGHT → monitor. A standalone CLI cannot
|
|
92
93
|
invoke the Desktop-owned surface, so it prepares rather than pretending an old
|
|
93
94
|
PATH app-server successfully ran a 5.6 turn.
|
|
95
|
+
The title race contract is `set_thread_title` → read it back twice →
|
|
96
|
+
`IN-FLIGHT → mission` monitor only after the exact title remains stable.
|
|
94
97
|
|
|
95
98
|
## Mandatory parent inbox lifecycle
|
|
96
99
|
|
|
@@ -101,9 +104,9 @@ The child must address the recorded parent session, not a bare mailbox:
|
|
|
101
104
|
report` command in its opening prompt.
|
|
102
105
|
- `BLOCKED` before ending when it cannot finish, by running the exact `codex
|
|
103
106
|
chip block` command.
|
|
104
|
-
- If the work crosses the selected model boundary,
|
|
105
|
-
|
|
106
|
-
the child never swaps models
|
|
107
|
+
- If the work crosses the selected model boundary, run
|
|
108
|
+
`codex chip breakthrough <id> --reason "..."`. This emits a typed
|
|
109
|
+
`BREAKTHROUGH` event to the recorded parent; the child never swaps models.
|
|
107
110
|
|
|
108
111
|
The attached host monitor validates receipts from the recorded native cwd,
|
|
109
112
|
exact base ancestry, clean state, and every changed path against the lease. A
|
|
@@ -112,13 +115,17 @@ reserved chip ref, then sends the terminal inbox event. The
|
|
|
112
115
|
child never merges, pushes, cleans up, or edits the parent checkout. Reports map
|
|
113
116
|
concrete evidence to every covered goal criterion. The parent reviews the diff,
|
|
114
117
|
integrates it, and runs `greprag codex chip goal accept <goal-id> --summary
|
|
115
|
-
"<review judgment>"` only when all criteria and chips are satisfied.
|
|
116
|
-
|
|
118
|
+
"<review judgment>"` only when all criteria and chips are satisfied. A
|
|
119
|
+
LEAD-owned goal with no additional child chip records final proofs with
|
|
120
|
+
`goal attest --commit <release-commit>` plus repeated `--evidence` and `--check`
|
|
121
|
+
before acceptance. For a verified squash/cherry-pick add `--integrated <chip-id>`
|
|
122
|
+
to acceptance. Acceptance
|
|
117
123
|
returns machine-readable closeout entries: apply each native `archiveRequest`
|
|
118
124
|
first, then its exact `cleanupCommand`. Cleanup does not imply acceptance, is
|
|
119
125
|
refused before it, and requires `--native-archived` for native tasks.
|
|
120
126
|
|
|
121
|
-
Native chips
|
|
127
|
+
Native chips require parent-side `--native-model-verified` proof before monitor
|
|
128
|
+
start and have a receipt deadline (default 180 minutes; override with
|
|
122
129
|
`--native-timeout-minutes`). This standalone CLI cannot query Desktop-private
|
|
123
130
|
turn status, so it never guesses that a settled task succeeded: write *and read*
|
|
124
131
|
chips must submit `report`/`block`, and timeout fails loudly. One live monitor
|
|
@@ -145,12 +152,15 @@ Useful recovery commands:
|
|
|
145
152
|
```bash
|
|
146
153
|
greprag codex chip handoff <id> --json
|
|
147
154
|
greprag codex chip status <id>
|
|
148
|
-
greprag codex chip
|
|
155
|
+
greprag codex chip breakthrough <id> --reason "<follow-up>"
|
|
149
156
|
greprag codex chip resume <id>
|
|
150
157
|
greprag codex chip stop <id>
|
|
151
158
|
```
|
|
152
159
|
|
|
153
|
-
For a native chip, `
|
|
160
|
+
For a native chip, `BREAKTHROUGH` is the sole agent-visible control envelope;
|
|
161
|
+
native turn transport remains private. Breakthrough delivery is
|
|
162
|
+
durably queued → injected → acknowledged → acted; empty completed turns are
|
|
163
|
+
not delivery, and natural-turn drain is degraded fallback only. Stop fails
|
|
154
164
|
loud until the parent interrupts the Desktop task, then confirms that fact with
|
|
155
165
|
`stop <id> --native-interrupted`; the CLI never records a false cancellation.
|
|
156
166
|
After restart/usage interruption, use `resume`, deliver its handoff, and wait for
|
|
@@ -161,3 +171,7 @@ For an invalid terminal launch, preserve the mission and run `goal exclude
|
|
|
161
171
|
replacement. Excluded evidence cannot satisfy acceptance. To abandon the whole
|
|
162
172
|
mission, stop every chip first, then use `goal cancel <goal-id> --reason
|
|
163
173
|
"<concrete reason>"`; cancelled closeout is not acceptance.
|
|
174
|
+
|
|
175
|
+
Mechanic repair incidents are not Mechanic task termination: `REPAIR-READY/CLOSED`
|
|
176
|
+
returns the same Luna/xhigh Mechanic to `OPEN+DORMANT` for later typed friction.
|
|
177
|
+
Only final LEAD teardown may accept/clean it with `--mechanic-final`.
|