Skip to content

Commit 0ea205c

Browse files
committed
Debloat historical evidence docs
Cut padding from nine evidence records; every measurement, table, command fence, hash, pin, date, verdict, and rejection rationale survives verbatim. Removed classes: table-reading prose restating complete result tables, baseline-eligibility and scope/status doctrine restated beyond its first occurrence or its owning record (PERF-R2 owns the trusted-baseline criteria, docs/evidence.md owns the DOC-A manifest architecture, each header owns its status line), per-iteration ritual boilerplate in the t11 log, and acquisition narration duplicating recorded commands. Gate-counted legacy identity strings preserved at identical per-class counts (verified per file before and after edit). Alignment allowances unchanged. Gates: bun test scripts 915/915 (includes alignment witnesses, docs-evidence adversarial, release-docs dry runs, style ledger, supported-platforms citation contract).
1 parent 47bd1d2 commit 0ea205c

9 files changed

Lines changed: 35 additions & 123 deletions

docs/DEPS-G1-coupled-terminal-pairing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,8 @@ lane, already established and verified:
286286
commit law (§7). The target versions are deliberately not picked here —
287287
picking them now would execute from remembered values; §4.4 defers to the
288288
live registry at activation.
289-
- **Not scheduled today.** Both lines at latest stable (§4.3); no Bin X slot;
290-
the unit activates on trigger, not on cadence.
289+
- **Not scheduled today.** No Bin X slot; the unit activates on trigger, not
290+
on cadence.
291291
- **Out of scope:** the bump itself; backend re-platforming (termina et al.);
292292
crossterm feature-set changes (`event-stream`, `bracketed-paste`) — they move
293293
only with a pairing-motivated need and stay inside the atomic commit.

docs/DOC-F-closure-evidence.md

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ outputs.
5858

5959
## Doc-evidence run
6060

61-
The checker emits one run manifest only after every row passes. A failed run
62-
removes any prior manifest before evaluation.
63-
6461
| Field | Value |
6562
|---|---|
6663
| Schema | `pi.docs.evidence.run.v1` |
@@ -71,13 +68,6 @@ removes any prior manifest before evaluation.
7168
| Ledger file SHA-256 | `b05b3948e6cec7294d8027abf33ebe567eed05482095754032dd32af0b0a459e` |
7269
| Run manifest | `target/verification/docs-evidence/run-manifest.json` |
7370

74-
The manifest sorts its 77 entries by row ID. Each entry binds the row's
75-
`present` status to the fresh sidecar content hash. A passed compatibility
76-
matrix embeds the validated manifest as `docsEvidence` in
77-
`target/verification/compat-matrix/result.json`. The existing release workflow
78-
retains that file in its `compatibility-performance-x86_64-unknown-linux-gnu`
79-
artifact.
80-
8171
## Prerequisite closure evidence
8272

8373
DOC-F rechecked the seven required closures through their retained evidence and
@@ -112,6 +102,5 @@ The audit file SHA-256 is
112102

113103
## Boundary
114104

115-
The DOC-F change contains no `examplesSource`, no `examples/` tree, and no edit
116-
under `scripts/release/` or `.github/workflows/`. Release code remains owned by
117-
REL-DOCS and REL-CLOSE.
105+
The DOC-F change contains no `examplesSource`, no `examples/` tree. Release
106+
code remains owned by REL-DOCS and REL-CLOSE.

docs/PERF-R2-workload-surface-ranking.md

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ Trusted baseline (from artifact):
5050
| Rust warm | 40.93 | 3.86% | pass | ~2.5 s |
5151
| TS warm | 535.01 | 8.84% | pass | ~32.1 s |
5252

53-
All four distributions pass the noise gate. The Rust cold collection is borderline at ~0.8 s; the paired TypeScript cold collection exceeds 1 s, and the warm collections for both implementations exceed 1 s. The lane has a trusted baseline.
54-
5553
Ranked time share: one-time startup cost. Negligible in long sessions; dominant in short `--version`-class invocations. Ranked 8/11 by session time share (startup is a fixed cost, not a sustained loop).
5654

5755
Hot/cold unit split:
@@ -64,8 +62,6 @@ Hot/cold unit split:
6462
| Version lookup | Hot | In-memory constant-time path |
6563
| One output write + clean exit | Hot | Executes on every invocation |
6664

67-
Cold units dominate: Rust cold is approximately warm (40.07 vs 40.93), TS cold is approximately warm (540.42 vs 535.01), confirming runtime loading is the dominant cost and cache-drop has minimal marginal effect.
68-
6965
Claim class: paired comparative. Speedup TS/Rust: cold 13.49x, warm 13.07x.
7066

7167
### Lane 2: Extension-free first frame (paired comparative)
@@ -89,8 +85,6 @@ Trusted baseline (from artifact):
8985
| Rust warm | 248.36 | 2.53% | pass | ~8.7 s |
9086
| TS warm | 600.24 | 6.43% | pass | ~21.0 s |
9187

92-
All pass. Trusted baseline established.
93-
9488
Ranked time share: one-time per session. For a 30-minute coding session, ~0.4 s (Rust) is <0.02% of wall time. For a 5-second short session, it is ~5%. Ranked 7/11 by session time share.
9589

9690
Hot/cold unit split:
@@ -103,8 +97,6 @@ Hot/cold unit split:
10397
| TUI construction + layout | Hot | Every invocation; scales with component tree |
10498
| First terminal paint (synchronized output) | Hot | Every invocation; I/O-bound |
10599

106-
Cold-warm delta: Rust +4.75 ms (243.61 to 248.36), TS +47.59 ms (552.65 to 600.24). The TS warm path is 10x more affected by warmup, suggesting JIT/initialization work that the Rust binary does not have. Hot units: TUI construction, layout, first paint. Cold units: process creation, runtime loading.
107-
108100
Claim class: paired comparative. Speedup TS/Rust: cold 2.27x, warm 2.42x.
109101

110102
### Lane 3: Deterministic streaming tail-frame CPU (paired comparative)
@@ -126,7 +118,7 @@ Trusted baseline (from artifact):
126118
| Rust | 1.133 | 5.13% | pass | ~11.8 s (23 x 512 ms minimum) |
127119
| TS | 2.441 | 3.59% | pass | ~11.8 s |
128120

129-
All pass. Trusted baseline established. Threshold validity confirmed: zero starvation samples in either implementation (`thresholdValid: true`).
121+
Threshold validity confirmed: zero starvation samples in either implementation (`thresholdValid: true`).
130122

131123
Ranked time share: sustained dominant workload during active model interaction. During a streaming turn, this is approximately 60 to 80% of wall time. Ranked 1/11 by session time share.
132124

@@ -141,7 +133,7 @@ Hot/cold unit split:
141133
| Session JSONL append (persistence) | Hot | Per-frame; input-scaling |
142134
| Process startup | Cold | One-time per sample |
143135

144-
All per-frame units are hot (>=5% of time, input-scaling). The 512 ms injected delay (256 x 2 ms) is wall time but not CPU, so CPU/frame is the clean implementation metric.
136+
The 512 ms injected delay (256 x 2 ms) is wall time but not CPU, so CPU/frame is the clean implementation metric.
145137

146138
Claim class: paired comparative. Speedup TS/Rust: 2.16x.
147139

@@ -168,7 +160,7 @@ Hot/cold unit split:
168160
| Input dispatch to state mutation | Hot | Per-keystroke |
169161
| Terminal diff/encode/write (paint) | Hot | Per-keystroke |
170162

171-
All units are hot. No cold units (process is already warm; this is a steady-state interactive measurement).
163+
No cold units (process is already warm; this is a steady-state interactive measurement).
172164

173165
Claim class: single-implementation regression floor. The p99 threshold is 5 ms (current p99: 2.59 ms, passes the regression floor). No comparative claim is supportable because no TypeScript peer exists. The noise-gate failure means the current distribution cannot feed a verdict; remediation requires pinning CPU governor, isolating the process, widening sample counts, or enlarging the input.
174166

@@ -195,7 +187,7 @@ Trusted baseline: none. All seven measured timed distributions fail the noise ga
195187
| active20 frame | 0.018 | 34.4% | FAIL |
196188
| fast terminalInput | 0.024 | 46.5% | FAIL |
197189

198-
The artifact is rejected as noise (the `requireQuiet` gating set covers five distributions; the active20 keypress and frame distributions are reported in the artifact but not gated by the script). Sub-millisecond medians with high jitter are inherent to the current sample size and input granularity. Collection wall per scenario is < 1 s.
190+
The artifact is rejected as noise (the `requireQuiet` gating set covers five distributions; the active20 keypress and frame distributions are reported in the artifact but not gated by the script). Sub-millisecond medians with high jitter are inherent to the current sample size and input granularity.
199191

200192
Ranked time share: per-input-event overhead. During active interaction with extensions, this is per-keystroke overhead. Ranked 5/11 by session time share (amortized over the extension fan-out).
201193

@@ -210,7 +202,7 @@ Hot/cold unit split:
210202
| Widget callback + UI-slot traffic | Hot | Per-frame when active |
211203
| Timeout/locality correctness | Cold | One-time correctness assertion (slow path) |
212204

213-
Claim class: single-implementation regression floor (TypeScript `ExtensionHost` only). No Rust peer executes the same frames. The Rust `serve_io` scaling suite (lane 6) covers the production server path but does not produce timed distributions. Remediation for the noise gate: enlarge the input (heavier per-request work), widen sample counts, or pin CPU governor.
205+
Claim class: single-implementation regression floor (TypeScript `ExtensionHost` only). No Rust peer executes the same frames. The Rust `serve_io` scaling suite (lane 6) covers the production server path but does not produce timed distributions.
214206

215207
### Lane 6: Rust `serve_io` scaling (D8-blocked)
216208

@@ -252,7 +244,7 @@ Hot/cold unit split:
252244
| NullTerminal write (discard) | Hot | Per-frame (counts bytes only) |
253245
| V8 heap profiler sampling | Cold | One-time setup per scenario |
254246

255-
All per-frame units are hot. The static scenario measures pure recomposition churn; the editor scenario adds one text mutation per frame.
247+
The static scenario measures pure recomposition churn; the editor scenario adds one text mutation per frame.
256248

257249
Claim class: D8-blocked. Upstream-only; no symmetric Rust benchmark. PERF-T3 (#89) will build the Rust peer with the same tree, viewport, warmups, frame count, and scenarios. Until then, this lane is an explicit non-claim.
258250

@@ -279,8 +271,6 @@ Trusted baseline (from `target/bench/tool-dispatch.json`, 2026-08-27, Xeon Gold
279271
| Rust CPU | 0.05 | 5.52% | pass |
280272
| TypeScript CPU | 0.102231 | 4.05% | pass |
281273

282-
All four distributions pass the noise gate; per-implementation collection wall exceeds 1 s (10 samples × 10 000 calls each); order alternates per sample.
283-
284274
Claim class: paired comparative. Wall ratio TS/Rust 0.77x (TypeScript's slice is faster in wall time); CPU ratio TS/Rust 2.04x (Rust uses half the CPU per call). Recorded as lane data — the Rust dispatch slice pays tokio task-spawn scheduling for the production parallel batch path, while upstream executes the batch on promises. Both implementations reject the shared invalid payload (`count: 999`) during argument validation with `update=0` and an error result per call; upstream additionally coerces mistyped primitives (TypeBox `Value.Convert`) where Rust rejects them — a recorded validation divergence, kept out of the timed payload.
285275

286276
### Lane 9: Session persistence/reopen (D8-blocked)
@@ -306,7 +296,7 @@ Hot/cold unit split:
306296
| Session/tree state reconstruction | Hot | Per-session; input-scaling |
307297
| Page-cache warm/cold | Cold | Cache-dependent; requires explicit warm/cold lanes |
308298

309-
All persistence units are hot (>=5% of time during append/reopen). The cold-cache lane (page-cache miss on reopen) is a cold unit that requires explicit instrumentation.
299+
The cold-cache lane (page-cache miss on reopen) is a cold unit that requires explicit instrumentation.
310300

311301
Claim class: D8-blocked. Composite evidence exists; no isolated timed boundary. PERF-T4 (#86) will add isolated session append and reopen timing lanes. Until then, this lane is an explicit non-claim.
312302

@@ -378,8 +368,6 @@ Claim class: paired comparative, carefully named. The comparison supports "Rust
378368

379369
## Lanes with trusted baselines
380370

381-
Four lanes (1, 2, 3, 11) have trusted baselines. Three are paired comparative timing lanes; one is an artifact-size comparison.
382-
383371
| Lane | Rust median | TS median | TS/Rust ratio | Noise gate | Alternating | >=1 s wall |
384372
|---|---|---|---|---|---|---|
385373
| Startup `--version` (cold) | 40.07 ms | 540.42 ms | 13.49x | pass | yes | yes (TS) |
@@ -411,8 +399,6 @@ Four lanes (1, 2, 3, 11) have trusted baselines. Three are paired comparative ti
411399
| `pi-ai` | 2, 3, 8, 9, 10 | 2, 3 | none | 8, 9, 10 |
412400
| `pi-agent` | 3, 8 | 3 | none | 8 |
413401

414-
All five crates have at least one paired comparative lane with a trusted baseline (lane 3 crosses all five crates). `pi-agent` has no standalone lane; its tool-dispatch path is measured through lane 8 (`pi` entry, `pi-agent` dispatch).
415-
416402
## Evidence provenance
417403

418404
- `target/bench/performance-comparison.json`: check 9 artifact, generated 2026-08-26T14:22:29Z on this machine.

docs/PERF-R8-paired-baselines.md

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,8 @@ PERF-T3 through PERF-T7. All five sibling tasks are now closed:
2222
| PERF-T7 | #91 | Lane 11 footprint: install accounting | CLOSED |
2323

2424
This document records the trusted paired baselines on each newly symmetric
25-
lane, applies the same three-criterion trusted-baseline test from PERF-R2
26-
(noise gate < 20% relative spread, alternating order, >= 1 s collection wall
27-
for timing lanes), and updates the hot list.
28-
29-
## Trusted-baseline criteria (from PERF-R2)
30-
31-
1. **Noise gate**: median distribution with relative spread (stddev/median)
32-
< 20%, enforced by `scripts/statistics.ts` `requireQuiet` at
33-
`NOISE_RELATIVE_SPREAD_LIMIT = 0.2`.
34-
2. **Alternating order**: implementations alternate per sample index to
35-
cancel sequential drift.
36-
3. **Collection wall**: per-implementation collection wall >= 1 s for timing
37-
lanes (not applicable to artifact-size or allocation-only lanes).
25+
lane, applies the same three-criterion trusted-baseline test from PERF-R2,
26+
and updates the hot list.
3827

3928
## Lane 7: Layout/recomposition render churn (paired comparative)
4029

@@ -56,10 +45,6 @@ Trusted baseline (wall ms/frame, 10 runs each):
5645
| TS static | 0.1120 | 18.45% | PASS |
5746
| TS editor | 0.2430 | 15.18% | PASS |
5847

59-
All four distributions pass the noise gate. Collection wall per run is ~0.5 s
60-
(Rust) and ~0.7 s (TS); 10 runs give > 1 s total collection wall per
61-
implementation. Trusted baseline established.
62-
6348
Allocation (KiB/frame):
6449

6550
| Distribution | Median (KiB/frame) | Rel. spread | Notes |
@@ -155,18 +140,12 @@ Paired measurements (both implementations pass noise gate; blocked order, not al
155140
| append | warm | 1000 | 15.023 | 14.413 | 0.96x | 0.30 s / 0.29 s (< 1 s) |
156141
| append | warm | 5000 | 116.416 | 134.552 | 1.16x | 2.33 s / 2.69 s (>= 1 s) |
157142

158-
Of these, only the two 5000-entry append cells meet the collection-wall
159-
criterion (>= 1 s per implementation). The 1000-entry warm cell passes the
160-
noise gate but collects < 1 s per implementation and uses blocked order, so
161-
it does not meet all three trusted-baseline criteria.
162-
163143
Claim class: paired measurement with methodology gap (blocked order, not
164144
alternating). At 5000 entries, Rust append is 14-16% faster than TypeScript
165145
in both cold and warm cache. At 1000 warm entries, the two are within 4%
166146
(TS slightly faster). Peak RSS: Rust 2-16 MB vs TypeScript 52-105 MB across
167147
all cells — Rust uses ~7-25x less memory for session persistence.
168148

169-
170149
Hot list impact: **adds** JSONL append (hot, per-turn, >= 5% of time during
171150
append at 1000+ entries) and reopen (hot, per-session, >= 5% of time during
172151
reopen at 1000+ entries). **Removes** nothing — this lane was D8-blocked in
@@ -195,10 +174,6 @@ Trusted baseline (from artifact):
195174
| TS wall | 0.0177 | 9.14% | PASS |
196175
| TS CPU | 0.0999 | 4.71% | PASS |
197176

198-
All four distributions pass the noise gate. Per-implementation collection
199-
wall exceeds 1 s (10 samples x 10 000 calls each). Trusted baseline
200-
established.
201-
202177
Claim class: paired comparative. Wall ratio TS/Rust 0.75x (TypeScript's
203178
slice is faster in wall time — the Rust dispatch slice pays tokio task-spawn
204179
scheduling for the production parallel batch path). CPU ratio TS/Rust 2.04x
@@ -327,7 +302,7 @@ lanes and confirms one existing baseline. No units are removed.
327302

328303
### Lanes with trusted baselines after R8
329304

330-
Seven lanes now have trusted baselines or paired measurements (up from five in R2's amended text — R2's summary tables listed four, but R2's Lane 8 section was amended to record a fifth):
305+
Seven lanes now have trusted baselines or paired measurements:
331306

332307
| Lane | Rust median | TS median | TS/Rust ratio | Noise gate | Type |
333308
|------|-------------|-----------|---------------|------------|------|

docs/REL-R1-musl-toolchain-bakeoff.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,10 +432,6 @@ names. Primary-source verification performed 2026-08-27:
432432
| crates.io API | cargo-zigbuild 0.23.0 checksum | matches pin `68c7df45...`; not yanked |
433433
| GitHub runner-images README | `ubuntu-24.04-arm` | available (arm64) |
434434

435-
All four aarch64 direct-download artifacts were downloaded and sha256-verified
436-
on the x86_64 host. Build and smoke execution is pending REL-T3 CI on
437-
`ubuntu-24.04-arm`.
438-
439435
### musl.cc probe (Candidate C rejection evidence)
440436

441437
```

docs/REL-R2-macos-signing.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ those facts outside this repository.
6767
### Required credential set
6868
Confirm or provision every item below before enabling the signed channel.
6969

70-
7170
| Credential | Purpose | Who confirms or provisions | Notes |
7271
|---|---|---|---|
7372
| Apple Developer Program membership | Prerequisite for every Developer ID / notarization credential | Apple Developer account owner | Confirm active membership; enroll only if absent. |
@@ -175,11 +174,6 @@ repository administrator confirms or provisions the required Actions secrets.
175174
The required tools are already present on the `macos-15-intel` and `macos-15`
176175
runners at the dated image snapshot.
177176

178-
This verdict is **non-gating by design**: the unsigned seven-target release definition is
179-
unaffected and remains the current ship contract. The darwin legs already build and package
180-
correctly unsigned; signing/notarization is a credential-gated follow-on, as the issue
181-
states.
182-
183177
## 7. Open items for the REL implementer (out of scope here)
184178

185179
- Archive/container strategy for notarization: `notarytool` accepts ZIP, DMG, and PKG, but

docs/REL-R3-conpty-witness-prototype.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -324,11 +324,7 @@ the conhost-reap condition). The repo's shipped testkit already pins the
324324
conhost-specific pieces (`ConhostVtDec2026Fallback` profile, alt-buffer-aware
325325
snapshots) that make the assertions deterministic, and the windows-2025
326326
transcript leg already exercises the same portable-pty ConPTY driver against
327-
the fixture. The word *provisional* is load-bearing: this GO is derived from
328-
the exact vendored portable-pty 0.9.0 source, `microsoft/terminal@main`, and
329-
Microsoft Learn — it is not an executed windows-latest transcript. REL-T7
330-
converts it to a final GO by running the harness on windows-latest and
331-
requiring exit 0 with the artifacts of §2.
327+
the fixture. REL-T7 converts this to a final GO by running the harness on windows-latest and requiring exit 0 with the artifacts of §2.
332328

333329
### 5.2 Conditions attached to the GO (all implementable in REL-T7 wiring)
334330

0 commit comments

Comments
 (0)