@junghanacs/entwurf 0.25.1 → 0.30.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.
Files changed (86) hide show
  1. package/AGENTS.md +1 -1
  2. package/BASELINE.md +1 -1
  3. package/CHANGELOG.md +190 -0
  4. package/DELIVERY.md +1 -1
  5. package/README.md +183 -674
  6. package/VERIFY.md +21 -17
  7. package/demo/README.md +1 -1
  8. package/docs/acp-backend-rail.md +115 -18
  9. package/docs/external-mcp-host.md +1 -1
  10. package/docs/setup-clean-host.md +346 -10
  11. package/mcp/entwurf-bridge/dist/mcp/entwurf-bridge/src/index.js +27 -4
  12. package/mcp/entwurf-bridge/dist/pi-extensions/lib/acp/backend-adapter.js +55 -1
  13. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-peers-render.js +1 -1
  14. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-decider.js +2 -2
  15. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-mailbox.js +2 -2
  16. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-production.js +2 -2
  17. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-surface.js +3 -5
  18. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-visible-resume.js +3 -3
  19. package/mcp/entwurf-bridge/dist/pi-extensions/lib/fresh-call-composition.js +13 -6
  20. package/mcp/entwurf-bridge/dist/pi-extensions/lib/meta-mailbox-body.js +1 -1
  21. package/mcp/entwurf-bridge/dist/pi-extensions/lib/mux-fresh-call.js +3 -3
  22. package/mcp/entwurf-bridge/src/index.ts +30 -3
  23. package/package.json +13 -13
  24. package/pi-extensions/entwurf-control.ts +50 -637
  25. package/pi-extensions/lib/acp/backend-adapter.ts +81 -1
  26. package/pi-extensions/lib/acp/backend.ts +41 -5
  27. package/pi-extensions/lib/entwurf-fact-provider.ts +2 -2
  28. package/pi-extensions/lib/entwurf-mcp-server.ts +74 -0
  29. package/pi-extensions/lib/entwurf-peers-render.ts +1 -1
  30. package/pi-extensions/lib/entwurf-v2-decider.ts +2 -2
  31. package/pi-extensions/lib/entwurf-v2-mailbox.ts +2 -2
  32. package/pi-extensions/lib/entwurf-v2-production.ts +3 -3
  33. package/pi-extensions/lib/entwurf-v2-surface.ts +3 -5
  34. package/pi-extensions/lib/entwurf-v2-visible-resume.ts +3 -3
  35. package/pi-extensions/lib/fresh-call-composition.ts +13 -6
  36. package/pi-extensions/lib/meta-mailbox-body.ts +1 -1
  37. package/pi-extensions/lib/mux-fresh-call.ts +3 -3
  38. package/run.sh +177 -53
  39. package/scripts/check-entwurf-peers-surface.ts +8 -15
  40. package/scripts/check-entwurf-self-address.ts +7 -11
  41. package/scripts/check-entwurf-v2-surface.ts +20 -112
  42. package/scripts/check-fresh-call-dispatch.ts +12 -13
  43. package/scripts/check-gate-qualification.ts +250 -5
  44. package/scripts/check-herdr-plugin-build.ts +159 -57
  45. package/scripts/check-install-surface.ts +3 -2
  46. package/scripts/check-mux-resume-call.ts +24 -35
  47. package/scripts/check-pi-bridge-sender.ts +130 -0
  48. package/scripts/check-pi-mcp-bridge.ts +251 -0
  49. package/scripts/fixtures/herdr-supply.json +8 -8
  50. package/scripts/lib/codex-fresh-live-protocol.ts +17 -5
  51. package/scripts/lib/codex-fresh-source-receipts.ts +21 -2
  52. package/scripts/lib/mutation-qualify.ts +269 -44
  53. package/scripts/lib/pi-mcp-bridge-probe.mjs +170 -0
  54. package/scripts/meta-bridge-doctor.sh +16 -5
  55. package/scripts/mutants/acp-foreground-only.json +17 -0
  56. package/scripts/mutants/acp-prompt-lifecycle.json +2 -2
  57. package/scripts/mutants/acp-vendor-rejection.json +62 -0
  58. package/scripts/mutants/codex-native.json +11 -11
  59. package/scripts/mutants/control-send-receipt.json +6 -4
  60. package/scripts/mutants/copilot-birth.json +2 -1
  61. package/scripts/mutants/fresh-call-dispatch.json +3 -14
  62. package/scripts/mutants/gate-qualification.json +59 -0
  63. package/scripts/mutants/herdr-plugin-build.json +11 -0
  64. package/scripts/mutants/herdr-supply.json +3 -3
  65. package/scripts/mutants/mux-fresh-call.json +43 -45
  66. package/scripts/mutants/mux-resume-call.json +11 -35
  67. package/scripts/mutants/pack-install.json +15 -4
  68. package/scripts/mutants/pi-bridge-sender.json +54 -0
  69. package/scripts/mutants/pi-floor.json +6 -2
  70. package/scripts/mutants/pi-mcp-bridge.json +36 -0
  71. package/scripts/mutants/pi-mcp-register.json +51 -0
  72. package/scripts/mutants/v2-surface.json +6 -6
  73. package/scripts/resident-rpc-drive.ts +5 -1
  74. package/scripts/smoke-acp-bundled-mcp-live.ts +3 -1
  75. package/scripts/smoke-acp-cortex-live.ts +3 -1
  76. package/scripts/smoke-acp-raw-turn-live.ts +1 -1
  77. package/scripts/smoke-acp-session-reuse-live.ts +29 -12
  78. package/scripts/smoke-acp-socket-citizen-live.ts +3 -1
  79. package/scripts/smoke-acp-v2-send-live.ts +3 -1
  80. package/scripts/smoke-codex-fresh-live.ts +20 -1
  81. package/scripts/smoke-entwurf-chain-live.ts +6 -2
  82. package/scripts/smoke-entwurf-v2-matrix-live.ts +3 -1
  83. package/scripts/smoke-herdr-fresh-call-live.ts +21 -7
  84. package/scripts/smoke-herdr-raw-install-live.sh +1 -1
  85. package/scripts/smoke-mux-lifecycle-live.ts +1 -1
  86. package/scripts/smoke-resident-garden-guard.sh +3 -1
package/AGENTS.md CHANGED
@@ -18,7 +18,7 @@ Ask: does this follow capability rather than a surface name; record backend asym
18
18
 
19
19
  - **entwurf-core (v2):** garden-id addressing, record facts, rail liveness, dispatch decisions, and delivery evidence.
20
20
  - **Record authority:** every citizen uses V3 `MetaIdentity`; `backend` selects rail capability, never identity rank.
21
- - **pi adapter:** attaches its native session to a record, hosts the record-keyed control socket, and exposes pi’s native tools.
21
+ - **pi adapter:** attaches its native session to a record, hosts the record-keyed control socket, and registers the compiled `entwurf-bridge` with Pi’s built-in MCP under that record’s identity.
22
22
  - **Native bridges:** register existing sessions without owning transcript or auth. Claude Code and Copilot are self-fetch; Antigravity and Codex are native-push. Codex remains native rather than ACP so its vendor tools, delegation, and work context remain intact. Admission/evidence details belong in [DELIVERY.md](./DELIVERY.md) and [VERIFY.md](./VERIFY.md).
23
23
  - **ACP plugin:** one `entwurf` provider under an isolated overlay. The host pi session is already a record-backed citizen; ACP creates neither a second citizen nor a socket layer.
24
24
  - **mux:** launch-only placement and fixed-runtime launch. It never imports into delivery. Fresh identity arrives only through its callback envelope, never a lookup; same-id visible resume keeps identity/liveness/locking on the v2 side of the injected seam. Fresh call accepts only the narrow model, literal absolute cwd, and existing caller-server seat inputs; it creates no session and does not infer seat from cwd. A Codex CALLER alone has an omitted-placement rule: it opens beside its own TUI pane, matched by thread-id in that pane title; 0/2+ matches reject; explicit placement still wins. Do not turn either fresh call or resume into a generic driver, command/env carrier, or second creation API. Exact module/argv/import ownership: [docs/mux-launch-rail.md](./docs/mux-launch-rail.md).
package/BASELINE.md CHANGED
@@ -246,7 +246,7 @@ Per-question PASS / FAIL / NOTE for grading the model's response.
246
246
  ### Q-MCP — MCP enumerate
247
247
  - **PASS** — Exactly one: `entwurf-bridge`.
248
248
  - **FAIL** — Any second server appears, or `entwurf-bridge` missing.
249
- - **NOTE** — Codex naturally writes the name with underscores (`entwurf_bridge`); that is the agent-visible backend marker, not a mutation. The current server exposes seven tools, including the manual `entwurf_register_native` fallback; MCP enumeration asks for the server name, not a stale tool count.
249
+ - **NOTE** — Codex naturally writes the name with underscores (`entwurf_bridge`); that is the agent-visible backend marker, not a mutation. The current server exposes eight tools, including the manual `entwurf_register_native` fallback; MCP enumeration asks for the server name, not a stale tool count.
250
250
 
251
251
  ---
252
252
 
package/CHANGELOG.md CHANGED
@@ -4,6 +4,196 @@ All notable changes to this project will be documented here. Format follows [Kee
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.30.1 - 2026-10-04
8
+
9
+ ### Fixed
10
+
11
+ - **Claude incomplete foreground-tool failures no longer invite a whole-prompt replay (#127).**
12
+ Only a non-aborted prompt rejection decoded as the root ACP SDK's `RequestError`, code
13
+ `-32603`, vendor `errorKind: incomplete_tool_call`, receives an authored unsafe-to-replay
14
+ verdict. Some tools may already have run. The original rejection and stderr/lifecycle/launch
15
+ evidence stay in existing diagnostics rather than tainting pi's retry/overflow classifier.
16
+ FIRST failure, abort precedence, exactly one error seal, and new/reuse session drop remain;
17
+ other failures and Cortex retain their legacy paths. This is not a global retry disable or
18
+ a claim about vendor-internal retries or real incomplete-tool frequency.
19
+ - **Herdr's existing plugin/runtime consumption boundary is aligned (#126).** The follow-up to
20
+ 0.30.0 aligned the plugin manifest with its locked runtime, re-pinned the published npm bytes,
21
+ and measured Herdr 0.9.3 supply against the unchanged 0.9.0 admission floor. Sandbox path
22
+ normalization and the Pi-native callback oracle were corrected. Operating Herdr/config stayed
23
+ unchanged; no permanent plugin/package equality policy was introduced.
24
+ - **Herdr build verification covers both carriers and the real default lock reader.** Explicit
25
+ npm and checkout fixtures assert exact sequential acquisition counts and final artifact identity.
26
+ The uninjected default reader is checked against an independent committed JSON oracle, with a
27
+ dedicated wrong-directory mutant. This changes proof, not the production build/runtime/activation.
28
+ - **Published support, source observations and execution evidence stay distinct (#127).** The
29
+ ACP rail and dependency ledger separate conditional settings, capability-gated and ambient
30
+ changes from runtime certification, stock auth messages from sealed legacy stderr tails,
31
+ upstream comments from unread SDK internals, and native/platform/loader contexts. The typed
32
+ rejection row points only to its deterministic gate: normal raw/reuse LIVE turns do not induce
33
+ that rejection.
34
+
35
+ ### Changed
36
+
37
+ - **Claude ACP closure:** adapter `0.79.0` → `0.85.1`, shared direct/child ACP wire SDK `1.4.0` →
38
+ `1.6.0`, Agent SDK `0.3.274` → `0.3.286`; the existing shared-wire contract is retained.
39
+ New reachable upstream behaviour is classified in the ACP rail and ROADMAP ledger, not
40
+ silently adopted as new Entwurf policy. Pi 1.0's range and public bridge verbs are unchanged.
41
+ - **Unpublished Herdr verification candidate:** plugin metadata is 0.30.1 and uses the closed `herdr-checkout`
42
+ verification carrier while 0.30.1 is unpublished. No npm integrity is fabricated. After
43
+ publication, re-pin only the measured registry artifact and re-prove that acquisition source;
44
+ switching an installed source still requires explicit deactivate/activate.
45
+
46
+ ### Verification
47
+
48
+ - Implementation/source review, related MUST LIVE and pre-version landing receipts are in
49
+ [#127](https://github.com/junghan0611/entwurf/issues/127), with #126's Herdr acceptance separate.
50
+ Main landing `f24820c` passed required four CI jobs, full411s and qualification841/841.
51
+ These are pre-version receipts, not this release's exact-SHA acceptance.
52
+ - The gate-only amendment landed separately at `61dbef7`: independent review closed with
53
+ zero Blockers/Defects; the frozen 0.30.0 source passed local qualification **842/842** and
54
+ full645s. Its [exact-SHA CI](https://github.com/junghan0611/entwurf/actions/runs/37181269379)
55
+ passed all four required jobs, full361s and qualification842/842. These are pre-version
56
+ implementation receipts, not 0.30.1 release acceptance. The original npm-only/version-pinned
57
+ HPB failure, old wrong-directory mutant survival, inventory RED, PARTIAL13/13 and PARTIAL14/14
58
+ receipts remain separate history; offline four positive/two negative controls are not registry
59
+ proof (`~/tmp/e0301-prepare/gate-fix/implementation-floor/`).
60
+ - **Fresh 0.30.1 working-candidate floor:** P4 full641s, followed by
61
+ `LIVE=1 ./run.sh release-gate /tmp/entwurf-release-gate-0.30.1.SLE9uA --cut`:
62
+ **MUST PASS=24 FAIL=0 SKIP=0**, **BEHAVIOR PASS=1 FAIL=0 SKIP=0**, exit0/cutOK;
63
+ its own full645s and qualification **842/842** passed. The versioned candidate on
64
+ `61dbef7` stayed frozen through both runs (seal
65
+ `541cc5a368315e6ecac4548a3492ce73024c6fe9dc5613077e14898d4fd76879`).
66
+ Complete log: `/tmp/entwurf-release-gate-0.30.1.SLE9uA/release-gate.log`, SHA256
67
+ `ea070c2ea019c05766e40e3442d1a31d68894e6cb3da7f7bbb80460c782bc020`.
68
+ - **Native Codex caller-seat acceptance:** 65 assertions, native `gpt-5.6-luna` and
69
+ Pi `openai-codex/gpt-6-luna`; personally launched app-server PID2143836 in session
70
+ A `$309` and initial Pi/fresh Codex/outbound Pi all in S `$316`, windows
71
+ `@810/@811/@812`. The outbound receipt names `codex-title-anchor`; both exact
72
+ source-role audits completed3/3. The complete pre-cleanup evidence is retained at
73
+ `.probe-artifacts/codex-fresh-live-fypXrI/`; decoded decisive receipts accompany
74
+ `~/tmp/e0301-prepare/fresh-prepare/p5-accepted.json`.
75
+ - **On-demand long-turn:** Sonnet5 completed the original three sequential240s
76
+ foreground waits in736147ms, with exactly one cold ACP bootstrap and no reported
77
+ retry/timeout; the same candidate seal remained MATCH. This normal-turn receipt does
78
+ not induce `incomplete_tool_call` or certify vendor-internal retry frequency.
79
+ - **Immediate P9:** census113 unused roots, four owned/aged/unused roots444K and one
80
+ reparented GLG Emacs daemon. All four roots were archived before four-fence-checked
81
+ reclamation; no process was killed. Post-census reports110 unused/zero reclaimable
82
+ roots, with Emacs untouched. Archive SHA256
83
+ `3132ab92d26702a5b1e3ddf9298e7e77c6abe63c276625ac2cd93b12558ad19a`;
84
+ per-root fences and before/after observations are in
85
+ `~/tmp/e0301-prepare/fresh-prepare/p9-reclaim/receipt.json`.
86
+ - **Claude checkout-provenance certification of the candidate tree:** the local
87
+ owner-managed installer was refreshed from this working0.30.1 checkout, then a NEW
88
+ native Claude2.1.289 session was opened without sending a prompt. Install finished
89
+ `2026-10-04T10:20:16.328Z`; fresh garden `20261004T192019-c50e8a` was created at
90
+ `10:20:19.625Z`. Exact launched PID3397500/startKey `linux:284430975` joins both
91
+ markers, its unique V3 record and registered bridge child3397563. Registry-authoritative
92
+ cached plugin0.1.0 and stable XDG assembly match the checkout's hook/writer/session-id/
93
+ registry bytes; plugin0.1.0 is not the root package version. Strict doctor exit0:
94
+ three live owner joins, source=assembled=installed writer `8558bb3a5aa8`, registry
95
+ `277c8dc2a183`, store v1=0/v2=0/v3=1476, PASS. The targeted leaf completed27s;
96
+ **full/BODY/P5 reruns=0**, leaf seal
97
+ `1f754eeb12ff800b2d7c1122d2b8fad030c9311e1784aab67166916ad3eb5364` MATCH.
98
+ Receipt `~/tmp/e0301-prepare/fresh-prepare/criterion4.json` SHA256
99
+ `0af3edc3d913eae2157d8229f7408c670f47b8bdd6363ff8e1f1c8a51e2b1fe6`;
100
+ doctor log SHA256 `6922043ddb500c34edaba5f70115d910cbdbfe7a1d01f8ff9ab28f2b3cf9a83f`.
101
+ This satisfies the pre-commit fresh-native criterion in dev-clone mode, not emitted-JS
102
+ package/bin-shim, final-artifact, registry, model-turn or fresh delivery/reply acceptance.
103
+ - **Explicit one-cut agy exception, authorized by GLG (2026-10-04):**
104
+ “명시 예외 승인 npm publish 전까지 쭉 가줘” authorizes this0.30.1 cut to proceed
105
+ without criterion7 acceptance. **agy native-push is NOT CERTIFIED on the1.2 line**:
106
+ measured on oracle/agy1.2.16, the answering LS port requires a CSRF nonce the external
107
+ sender does not legitimately hold; authenticated current host/CID join and same-gid
108
+ round-trip are absent. HTTP200/grpc16 `missing CSRF token` is not successful delivery.
109
+ The requirement's introduction date is unknown. The checked adapter/imprint/raw-send/
110
+ LIVE/pin subjects are unchanged from0.30.0; last native acceptance remains1.1.0
111
+ (2026-07-14), `PIN_AGY_MINOR=1.1` and DELIVERY's certification row are unchanged.
112
+ Follow-up [#128](https://github.com/junghan0611/entwurf/issues/128) is prerequisite
113
+ research: own tool-shell key presence/current CID/garden first, no nonce extraction,
114
+ discovery/cache/manager or unapproved implementation. This exception does not label
115
+ agy green, modify the permanent floor, or authorize npm publication.
116
+ - **No duplicate local floor:** GLG requested retaining the existing green evidence
117
+ and resolving only the two native leaves. P4/full, qualification BODY, P5 and duplicate
118
+ local M0/full are not restarted for the post-verdict evidence/policy prose. Exact
119
+ prepared-SHA CI (four required jobs plus its qualification BODY) and one preserved
120
+ final-artifact consumer acceptance remain separate mandatory make evidence. The
121
+ working-candidate receipts above do not certify those later axes or registry bytes;
122
+ verification prose added after each frozen verdict is not the bytes that run consumed.
123
+
124
+ ## 0.30.0 - 2026-10-02
125
+
126
+ ### Changed
127
+
128
+ - **Pi 1.0 admission — the pi fence is `>=1.0.0 <1.1` (#125).** Dev pins move to Pi 1.0.0 and the
129
+ peer range to the next-minor ceiling `>=1.0.0 <1.1`. The range checks are major-aware; pack
130
+ literals, the four affected mutants, the live docs and ROADMAP's two gate-read lines follow. No
131
+ ACP, vendor or Herdr companion bump rides it. The 0.99.1 and 0.99.2 floors this cycle passed
132
+ through were branch steps and never shipped. Pi now carries MCP in its core
133
+ ([You Said No MCP!](https://earendil.com/posts/you-said-no-mcp/), 2026-09-29) and this admission
134
+ builds on it rather than duplicating native tools; `pi-durable` and Pi's codemode are not adopted
135
+ here, and what they mean for Entwurf is undecided.
136
+ - **Codex first-admission verification follows the current Pi MCP dialect.** Joined native
137
+ call/result names must still agree before exact Pi-qualified names become semantic receipts;
138
+ downstream source audits and receipt-owned cleanup use the same boundary. The LIVE driver now
139
+ separates launch from callback-validated relay, and clarifies callback-first startup without
140
+ relaxing message bytes, role counts, omitted cwd/seat, or claiming guaranteed model obedience.
141
+ The final standalone Codex chain passed 65 assertions, including both exact source-role audits.
142
+ - **This cut has an explicit local acceptance exception (GLG, 2026-10-02).** The original P5
143
+ remains MUST 23 PASS / 1 FAIL / 0 SKIP, BEHAVIOR PASS; subsequent scoped Codex acceptance is a
144
+ separate run on amended bytes, not a synthetic 24/24 single-run result. GLG chose not to repeat
145
+ local full/qualification BODY/P5/M0 after the repairs. Exact prepared-SHA CI (including fresh
146
+ full and qualification BODY) and preserved-candidate Docker acceptance remain required. The
147
+ grouped development proofs do not activate #124 P3 composite release policy.
148
+ - **A pi citizen's Entwurf verbs ride Pi's built-in MCP (#125).** A born pi citizen registers the
149
+ compiled `entwurf-bridge` with `pi.registerMcpServer` under its record gardenId, so a pi model
150
+ reaches the same server every other host does. The five hand-written native tools are gone;
151
+ `entwurf_inbox_read` and `entwurf_register_native` are hidden on a pi host, leaving six declared.
152
+ Pi folds every character outside `[A-Za-z0-9_]` in an MCP tool name to `_`, so a pi model calls
153
+ `mcp__entwurf_bridge__<verb>`, and the pi fresh-call dialect (callback, delivery, peers) moved to
154
+ that spelling as one literal hard cut — no alias, no version router. The server key stays
155
+ `entwurf-bridge`; a same-namespace `mcp.json` entry overrides the registration by Pi's own
156
+ precedence.
157
+ - **Qualification builds what a gate consumes (#125, development tooling).** The snapshot stays
158
+ source-only; a mutant may declare `build {argv, output}`, and for that gate group only the
159
+ runner builds the output from the snapshot's own bytes, rebuilds it after every mutation and
160
+ before the post-control (baseline digest required), never counts a build red as a kill, voids a
161
+ run whose gate writes into the output, and removes it when the group ends (`[QK:QUALIFY-BUILD-*]`).
162
+
163
+ - **README is the product entry; clean-host setup owns the operating detail.** Installation,
164
+ prerequisites, citizen first use, terms and short history stay in README. Detailed settings,
165
+ harness configuration, context, skills and upgrades move to `docs/setup-clean-host.md` with
166
+ retained entry anchors and links. Herdr keeps its separate installation document. VERIFY
167
+ distinguishes Pi's built-in MCP tool ingress from record-addressed Unix-socket receive and
168
+ the ACP explicit tool projection; this is contract prose, not a new acceptance receipt.
169
+
170
+ ### Fixed
171
+
172
+ - **Claude ACP turns no longer get vendor-managed background work (#125).** The Claude adapter's
173
+ child env sets `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`, which turns off the vendor's own
174
+ Bash/Agent `run_in_background` option and its timeout / turn-abort auto-backgrounding. Cortex is
175
+ unchanged. A process a command detaches on its own (`&`, `setsid`, a daemon) is outside this
176
+ switch, so it is not a general termination guarantee. Observed on the branch (#125, one host,
177
+ not a release acceptance): cancelling a reused turn's foreground work ended it and the same
178
+ session served the next turn, while a cancelled FIRST turn is not retained and the next turn
179
+ bootstraps a new session. Pinned by `[QK:ACP-CLAUDE-FOREGROUND-ONLY]` with one rollback mutant.
180
+ - **`check-pack-install` keeps the consumer inside its own sandbox.** Its consumer subcalls name
181
+ every writable root (HOME, four XDG, `PI_CODING_AGENT_DIR`); an inherited agent dir had received
182
+ the npm consumer's user-scope settings (`[QK:PACK-INSTALL-INHERITED-AGENTDIR-UNTOUCHED]`,
183
+ `[QK:PACK-INSTALL-CONSUMER-ROOTS-CONTAINED]`).
184
+ - **LIVE smokes match Pi 1.0 (#125).** Isolated pi citizens load `-e builtin:mcp` beside
185
+ `--no-extensions`, which turns the built-in MCP off too; the chain hop-2 tool name uses the
186
+ underscore form. `smoke-acp-session-reuse-live` judges reuse by turn 2's `[acp: reusing live
187
+ session]` notice rather than by recall alone, since a rebuilt turn re-sends the full transcript.
188
+ The native lifecycle cell drives `openai-codex/gpt-6-luna`.
189
+ - **Docs state the current contract.** The bridge's eight verbs are counted as eight wherever a
190
+ current sentence counts them (dated seven-tool receipts stay as they were). The harness source
191
+ map's callback column names `FRESH_CALL_CALLBACK_TOOL`, with the delivery dialects moved to a
192
+ note. The ACP support table is this checkout's declaration rather than a shipped baseline,
193
+ VERIFY's surface banner no longer carries 0.21.0's acceptance numbers, the Herdr docs separate
194
+ the committed `herdr-checkout` carrier from npm's production authority, and VERIFY's ACP
195
+ troubleshooting reads turn evidence from lifecycle notices and the session's stopReason.
196
+
7
197
  ## 0.25.1 - 2026-09-30
8
198
 
9
199
  ### Added
package/DELIVERY.md CHANGED
@@ -108,7 +108,7 @@ physical host. Do not read a D-level cell as a Darwin receipt.
108
108
 
109
109
  | Harness / surface | Product status | Capability | Transport and boundary |
110
110
  |---|---|---|---|
111
- | **pi native Entwurf** | shipped | D7; D8 partial | Record-addressed Unix control socket. A record-less socket is diagnostic only and never dispatched. |
111
+ | **pi Entwurf** | shipped | D7; D8 partial | Record-addressed Unix control socket. A record-less socket is diagnostic only and never dispatched. A pi session calls the verbs through Pi's built-in MCP running the compiled `entwurf-bridge` (#125); the receive rail is unchanged. |
112
112
  | **Claude Code interactive `>=2.1.217`** | shipped; Linux certified | D6; D7/D8 partial | Per-session mailbox + exec-form `FileChanged`/`asyncRewake`. B2 proved idle wake and same-session continuity on one NixOS host. |
113
113
  | **Antigravity / agy** | shipped | D6; D7 partial | Record-backed native-push through LS gRPC `agentapi send-message`; no mailbox or receiver marker. Admitted before the #82 step 9 contract and not re-evaluated under it, so it is legacy citizen evidence, not a step-9 supported harness: `entwurf_fresh_call` cannot open an agy sibling, and nothing here should be read as claiming visible lifecycle parity. |
114
114
  | **Codex CLI app-server citizen** | supported in 0.21.0; caller-seat topology ACCEPTED on Linux at 0.153.4, 2026-09-16 (56 assertions, exit 0), and the caller-DIRECTORY axis ACCEPTED the same day on the same host (#95 lane C, 65 assertions, exit 0; the 2026-09-12 explicit-home acceptance is history — #95 D1 retired that room) | D6 accepted; D7 partial; D8 unproven | Vendor-trusted user-scope `SessionStart` birth plus strict per-request metadata join; no shared-pid sender marker. `thread/loaded/list` probes the operator-owned app-server UDS and one-shot `codex queue` delivers with no retry. The operator owns the app-server and seats it wherever they like; Entwurf creates, moves and supervises none of it. Since #95 lane B a Codex CALLER with no explicit placement opens its sibling beside its OWN pane, located by the `thread-id` its `[tui].terminal_title` writes into the pane title; 0 or 2+ matching panes refuse with no fallback, and the title is a placement input only — never an address, liveness or delivery fact. #95 D1 (2026-09-16) retired the fixed `codex` home that omitted-placement Codex TARGETS used to select, so an omitted seat is the caller's own session for every backend. Exact 0.153.4 source still bounds placing a sibling beside a TUI whose thread nobody named as unsupported; the anchor resolves only the pane showing the caller's own thread. |