| … | … | @@ -3289,6 +3289,21 @@ injected per layer: |
| 3289 | 3289 | aborted with EEXIST. |
| 3290 | 3290 | - **Pre-existing, measured:** under heavy load s19 sometimes misses the JS uploader's "received" |
| 3291 | 3291 | report (old 3/10, new 4/10; the JS-only control fails too). |
| 3292 | - **R3b step 1 DONE 2026-10-05** (keetd dd3d270): microtasks are rt's. |
| 3293 | - protomux: `queueTick` / `Promise.resolve().then` → `rt::queueMicrotask`. A task that |
| 3294 | captures the mux or one of its channels is skipped once the mux is gone (`_life`). |
| 3295 | safety-catch's async rethrow is a real throw in rt's queue. |
| 3296 | - Replicator waiters (`resumeVia_`) and autobee-wakeup's `hasMuxer` → `rt::queueMicrotask`. |
| 3297 | `Host::defer` and `Protomux::defer` are removed. |
| 3298 | - Gate: ctest 78/78, plus all 18 m3c-era drill sets at their recorded baselines, every |
| 3299 | survivor already classified above. m5g1c went from 24/29 to 27/29 (later gates kill more). |
| 3300 | The drills ran on 3 rsync'd worker copies in parallel (TESTING-DESIGN §7), so the working |
| 3301 | tree stayed free for editing. |
| 3302 | - `drill_lint` (new ctest, 0.1 s) checks that every anchor still matches once. It found 15 |
| 3303 | anchors made stale by the day's fixes (N1, W1, F1, F2, M5g-4e-2's JsError, rt indentation, |
| 3304 | the speedometer port) plus R3b's own. A drill checks anchors only when it starts, so whole |
| 3305 | sets had silently stopped working. One replacement no longer compiled |
| 3306 | (`core.onappend` → `core->onappend`); lint cannot see that, only a run can. |
| 3292 | 3307 | - **R4:** storage, per the decision above. |
| 3293 | 3308 | - **Then 4e-4** (`createProtocolStream` / `replicate`): the first gate that composes the stack |
| 3294 | 3309 | is a COMPOSED trace against JS (secret-stream + protomux + replicator), now meaningful. |