@junghanacs/entwurf 0.38.0 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,140 @@ All notable changes to this project will be documented here. Format follows [Kee
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.38.1 - 2026-10-17
8
+
9
+ ### pi-durable
10
+
11
+ - **Background compaction returns to the SDK default (#146).** The owned Harness settings
12
+ hand the SDK Pi's compaction settings unchanged instead of forcing `backgroundTokens: 0`
13
+ (#143, 0.37.0-0.38.0), so the SDK's own default background policy applies again; no
14
+ Entwurf copy of its value exists. Past the background threshold a summary runs beside the
15
+ turn, which answers without waiting for it; threshold, overflow and manual compaction are
16
+ unchanged. Transport and the other Harness mappings are unchanged.
17
+ - **Limits.** A process started from 0.37.0-0.38.0 keeps the forced 0 it imported until the
18
+ operator restarts it. The beside proof is a faux scheduling proof on a loopback wire, not
19
+ live GPT latency, billing or overload evidence; thresholds for a given window are
20
+ predictions from the SDK's policy, not measurements. `backgroundTokens` has no operator
21
+ tuning entry, and Pi's per-model compaction overrides are not applied by the app.
22
+ - **Use native capabilities; refuse what a harness lacks.** `docs/durable-native-support.md`
23
+ now states the receive-side principle with the Pi / pi-durable contrast and maps which
24
+ layer decides each Harness setting.
25
+
26
+ ### Release boundary and verification
27
+
28
+ - **Implementation commits.** `58c4d0f` (principle doc) and `9229452` (#146 source, carrier,
29
+ pin, proof, mutant, docs). Coordinator independent review B0/D0 after one amendment;
30
+ additional independent review (ee20b5) B0/D0/O4.
31
+ - **Earlier-candidate PARTIAL (not this SHA):** `["bash","run.sh","check-pi-durable-carrier"]`
32
+ 30/30 killed, control ok, on the uncommitted amendment-1 surface (worktree diff
33
+ `fc146d97`, head beb5925), receipt seal `7906a9c0d88d`; the other 949 committed claims
34
+ not run there.
35
+ - **Kill-power at this SHA: not yet measured.** The final same-SHA manual `qualify=true`
36
+ whole BODY is required before the tag; its result is recorded in the #146 ledger and the
37
+ GitHub release, not in this frozen text.
38
+ - **Static/LIVE split.** Local P4/M0 `check:full` is not run on this operator host (its FULL
39
+ includes Herdr checks prohibited here) and is not counted as passed: the whole static
40
+ floor is owed to this prepared SHA's exact push CI.
41
+ - **Earlier LIVE r1 (history of the RED SHA c90b5bf, not this release's LIVE): MUST
42
+ (non-static 23) PASS=23 FAIL=0 SKIP=0 UNRUN=0; BEHAVIOR PASS=1 FAIL=0.** It ran once on
43
+ 2026-10-17 15:11:01-15:15:47 KST through the 0.38.0 stepwise driver. Its step lines are
44
+ unchanged, and `run.sh` is unchanged since d25b71e. Candidate: 9229452 plus `CHANGELOG.md`,
45
+ `NEXT.md` and `package.json`, which still carried the 0.38.0 npm runtime lock; the
46
+ fingerprint was equal at freeze, before and after. `smoke-codex-fresh-live` ran against an
47
+ owned app-server in its own session A, with `gpt-5.6-luna` / `openai-codex/gpt-5.6-luna`,
48
+ stopped by TERM afterwards. Receipts: `.tmp-verify/release-0.38.1/live-r1/` (`live.log`
49
+ 3ce295e1, `steps.SHA256SUMS` 5a18e7da). It was not a local `release-gate --cut` PASS.
50
+ - **Herdr follows core.** `plugins/herdr/runtime-lock.json` returns to the closed
51
+ `herdr-checkout` source for this unpublished candidate, as at the 0.37.1 and 0.38.0 cuts:
52
+ an npm lock must name the checkout's own version (`certifyLockCoherence`), and 0.38.1 has
53
+ no registry bytes yet. No plugin manifest version or registry pin changes; the npm pin
54
+ returns only in a separate Herdr snapshot after the operator publishes 0.38.1.
55
+ - **First prepared SHA was RED.** `c90b5bf` kept the 0.38.0 npm lock; its push run
56
+ 39009471179 failed `check` at `check-herdr-plugin-build` `[QK:HPB-DEFAULT-LOCK-READ]`
57
+ (`runtime-lock-incoherent`), with the other three jobs green. That gate is prohibited on
58
+ this operator host, so it first showed in CI. The RED run and that SHA's LIVE r1 stay as
59
+ history.
60
+ - **Repaired candidate LIVE r2 (RED, kept as history): MUST PASS=4 FAIL=1 UNRUN=19;
61
+ BEHAVIOR not reached.** It ran 15:31:58-15:37:27 KST on c90b5bf plus `CHANGELOG.md`,
62
+ `NEXT.md`, `plugins/herdr/README.md` and `plugins/herdr/runtime-lock.json`. Step
63
+ `smoke-mux-lifecycle-live` failed. In its pi-native arm, the sibling's first model turn
64
+ (`openai-codex/gpt-6.1-sol:low`) showed "Codex error: An error occurred while processing
65
+ your request", no nonce callback came, and the gate gave up after 300 s; the claude-code
66
+ arm passed. Whether that error is transient was not measured. Receipts:
67
+ `.tmp-verify/release-0.38.1/live-r2/` (`LIVE-R2-RED.md` 96070f72).
68
+ - **Local LIVE r3, this release's LIVE: MUST (non-static 23) PASS=23 FAIL=0 SKIP=0 UNRUN=0;
69
+ BEHAVIOR PASS=1 FAIL=0.** It ran once, 15:41:19-15:45:47 KST, on the same frozen repaired
70
+ candidate as r2 (fingerprint equal at freeze, before and after), with the same driver and
71
+ models. GLG approved this single re-measurement and allowed a repeat of that one vendor
72
+ failure to be recorded and continued past; it did not repeat, so the exception and its
73
+ continuation driver were not used. Each LIVE ran against a fresh owned app-server in its
74
+ own session A, stopped by TERM afterwards. Receipts: `.tmp-verify/release-0.38.1/live-r3/`
75
+ (`live.log` 929b7952, `steps.SHA256SUMS` 99f87db2). It was not a local
76
+ `release-gate --cut` PASS: the static step did not run locally.
77
+ - **Post-LIVE delta: evidence records only.** After r3, `CHANGELOG.md` and `NEXT.md` took
78
+ these records; `package.json`, the lockfile, `run.sh`, `plugins/herdr/` and all
79
+ source/carrier bytes equal the r3 candidate. The repaired prepared SHA's exact push CI is
80
+ owed.
81
+
82
+ ## v2026.10.16-herdr.0.38.0 — Herdr Entwurf plugin 0.38.0
83
+
84
+ A separate Herdr plugin snapshot, not another core release: core package 0.38.0 and its
85
+ `v0.38.0` tag remain unchanged. The operator has published the core to npm.
86
+
87
+ ### Herdr plugin
88
+
89
+ - **Re-pin the published core 0.38.0 and close the checkout window.**
90
+ `plugins/herdr/runtime-lock.json` returns from the `herdr-checkout` carrier that core 0.38.0
91
+ rode to production npm source `@junghanacs/entwurf@0.38.0` with the registry's measured
92
+ sha512 (`sha512-A7Pd4FOe…aqbA==`). The plugin manifest moves 0.37.0 → 0.38.0; admission
93
+ remains Herdr >= 0.9.0 and the one-build/one-pane/Linux shape is unchanged.
94
+ - **Pi 1.3 first, then the plugin.** The runtime this snapshot acquires carries core 0.38.0, whose
95
+ accepted Pi range is `>=1.3.0 <1.4` (#145). A host still on Pi 1.2 is refused by name
96
+ (`outside the supported range`) at plugin activation, the same check `entwurf setup` applies,
97
+ and no Pi settings are written. Upgrade Pi to 1.3, then install or reinstall the plugin. The
98
+ plugin README's Requirements say so.
99
+ - **Upgrade by acquisition source, not just version.** A settled npm-source 0.37.0 installation
100
+ can rebind under the plugin README's ownership conditions. A host that installed an
101
+ intervening `herdr-checkout` candidate must explicitly deactivate by its own absolute runtime
102
+ path before reinstalling the npm-source snapshot. No operator installation or active session
103
+ is rewired by this release work.
104
+
105
+ ### Source-specific verification
106
+
107
+ - Registry metadata reports version/latest 0.38.0, repair 0.12.8-repair.1, 599 files. The
108
+ registry's `dist.integrity` and `dist.shasum` equal the sha512 and sha1 independently
109
+ computed from the preserved accepted core candidate (SHA256
110
+ `6d21699b1a37a8441c9631bd9128f413aecd37146dfb091cc768eb7a69ea7438`, 11144202 bytes), so
111
+ core make's Docker consumer of those bytes (`node:24-bookworm`, repoDigest
112
+ `node@sha256:6dac556d…`) is reused here, not repeated. A sandboxed `pi install` of the
113
+ registry package resolved its bridge inside the sandbox, recorded the registry URL with that
114
+ integrity, and listed the curated Claude anchors with `--list-models entwurf`.
115
+ - **The npm runtime swap against the real registry**, by the registry-shipped helper (byte-equal
116
+ to this checkout's) in sandboxed user roots, 22/22 checks. The 0.37.0 runtime was seeded from
117
+ its own committed lock; the swap to 0.38.0 took one acquisition, the cached tarball's sha512
118
+ equals the lock and its sha256 equals both the ready journal's observed digest and the
119
+ accepted candidate. The `installing` journal carried the 0.37.0 identity as
120
+ `previousRuntime` and the `runtime-ready` journal carries `null`; when acquisition began the
121
+ 0.37.0 tree was still at the active address. A manually seeded torn swap (the active tree
122
+ moved to the backup address with a half candidate in staging; not a killed process) was
123
+ restored before acquisition and reported `recovered: torn-swap-with-candidate`. An exact
124
+ re-request acquired nothing and left journal and tree byte-identical, and the owned removal
125
+ reclaimed cache, runtime and journal. The helper is a leaf that probes no Pi, so these cells
126
+ certify neither a Pi upgrade nor Herdr's install/update relocation, harness wiring, the
127
+ installed CLI's deactivate path, a model turn, or recovery from a real kill.
128
+ - **Focused gates on the branch**, with HEAD, index and work surface unchanged across them:
129
+ `check-herdr-supply` (11 assertions), `check-herdr-plugin` (49),
130
+ `check-herdr-plugin-profile` (14), `check-herdr-runtime-bootstrap` (31),
131
+ `check-herdr-activation` (33), `check-herdr-placement` (25), `check-herdr-fresh-call` (45)
132
+ and `check-gate-manifests` (979 committed mutants across 72 lanes validated, none executed).
133
+ `check-herdr-plugin-build` and `check-herdr-sandbox` were not run locally because they run
134
+ the operator's own herdr; they ride the pushed SHA's FULL floor in CI.
135
+ - Pending, and not claimed here: the pushed SHA's four-job CI and the public-ref
136
+ install/use/deactivate journey on Herdr 0.9.5 with Pi 1.3.0. Earlier npm or checkout-carrier
137
+ receipts cannot certify these source-specific axes. This section is the prepared source
138
+ record; the actual post-push, public-ref and CI outcomes are recorded at the snapshot's
139
+ [acceptance ledger](https://github.com/junghan0611/entwurf/issues/145#issuecomment-6209375125).
140
+
7
141
  ## 0.38.0 - 2026-10-16
8
142
 
9
143
  ### Pi SDK 1.3.0
package/VERIFY.md CHANGED
@@ -233,8 +233,8 @@ are the visible-terminal and consumer subjects. The 1.2 bootstrap child also obs
233
233
  reopening the chosen session and cancelling to nothing (#143). Two more sandboxed children reach the
234
234
  reference app's settings and prompt mapping: one drives the real bootstrap against a loopback
235
235
  WebSocket Responses endpoint, whose received frames decide the forwarded transport and its
236
- continuation and the reference compaction policy (no background summary; blocking and overflow
237
- kept, #143); the other renders the carrier prompt's skills section with no model, against a fixture
236
+ continuation and the reference compaction policy (the SDK's background summary beside the turn, held on the
237
+ wire while the turn answers; blocking and overflow kept, #146); the other renders the carrier prompt's skills section with no model, against a fixture
238
238
  of both settings scopes, an absolute entry, a same-name pair and a wrong-base decoy.
239
239
  `check-pi-runtime-version` asks the
240
240
  same installed verifier (`check-pi-durable-beside`) whether this checkout resolves exactly the pinned SDK set (the native set; the PATH
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@junghanacs/entwurf",
3
- "version": "0.38.0",
3
+ "version": "0.38.1",
4
4
  "description": "Visible sibling sessions across independent agent harnesses: launch in Herdr or tmux, reopen pi in tmux, and deliver messages by garden id; native bridges and Claude/Cortex ACP adapters.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -34,10 +34,10 @@ export function createHarnessSettings(settingsManager )
34
34
  ...(provider.maxRetries === undefined ? {} : { maxRetries: provider.maxRetries }),
35
35
  };
36
36
  },
37
- // The reference app waits for a compaction instead of summarizing beside the running turn (#143): no background
38
- // compaction. Threshold, manual and overflow compaction stay the SDK's, on pi's own compaction settings.
37
+ // Pi's own compaction settings, which carry no background policy: the SDK supplies its default background,
38
+ // threshold, overflow and manual compaction (#146; #143 had forced background compaction off).
39
39
  get compaction() {
40
- return { ...settingsManager.getCompactionSettings(), backgroundTokens: 0 };
40
+ return settingsManager.getCompactionSettings();
41
41
  },
42
42
  get retry() {
43
43
  return settingsManager.getRetrySettings();
@@ -82,8 +82,8 @@
82
82
  {
83
83
  "name": "harness-setup.js",
84
84
  "source": "pi/pi-durable/src/experimental/durable/harness-setup.ts",
85
- "blob": "36a622ec6d5dccda828ffaceaf74ce8ec241e39d",
86
- "sha256": "efb06ae25258fbbab5b28f8a9bbb50956c7ebfd77a5ed23b065706f662e70ba3"
85
+ "blob": "e8561809321ce8833a13e3757c172f4e38faabcc",
86
+ "sha256": "eb1158030a8ab95187a4fdd5e7b90816a7995e5f446d09a8184d4f5007e7ac5f"
87
87
  },
88
88
  {
89
89
  "name": "prompt.js",
@@ -1177,14 +1177,14 @@
1177
1177
  "build": { "argv": ["bash", "scripts/build-bridge.sh"], "output": "mcp/entwurf-bridge/dist" }
1178
1178
  },
1179
1179
  {
1180
- "claim": "PI-DURABLE-COMPACTION-WAITS",
1181
- "title": "the Harness settings hand the SDK pi's compaction settings alone: its default background policy summarizes beside a running turn instead of the turn waiting",
1180
+ "claim": "PI-DURABLE-COMPACTION-SDK-BACKGROUND",
1181
+ "title": "the Harness settings force background compaction off again: past the SDK's background threshold the turn asks for no summary beside it",
1182
1182
  "subject": "pi/pi-durable/carrier/harness-setup.js",
1183
- "find": ["\t\t\treturn { ...settingsManager.getCompactionSettings(), backgroundTokens: 0 };"],
1184
- "replace": ["\t\t\treturn settingsManager.getCompactionSettings();"],
1183
+ "find": ["\t\t\treturn settingsManager.getCompactionSettings();"],
1184
+ "replace": ["\t\t\treturn { ...settingsManager.getCompactionSettings(), backgroundTokens: 0 };"],
1185
1185
  "gate": ["bash", "run.sh", "check-pi-durable-carrier"],
1186
1186
  "timeoutSeconds": 300,
1187
- "signature": "[QK:PI-DURABLE-COMPACTION-WAITS]",
1187
+ "signature": "[QK:PI-DURABLE-COMPACTION-SDK-BACKGROUND]",
1188
1188
  "signatureSource": "pi-extensions/lib/pi-durable-carrier.test.ts",
1189
1189
  "build": { "argv": ["bash", "scripts/build-bridge.sh"], "output": "mcp/entwurf-bridge/dist" }
1190
1190
  },