@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 (
|
|
237
|
-
kept, #
|
|
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.
|
|
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
|
-
//
|
|
38
|
-
//
|
|
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
|
|
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": "
|
|
86
|
-
"sha256": "
|
|
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-
|
|
1181
|
-
"title": "the Harness settings
|
|
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
|
|
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-
|
|
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
|
},
|