redweb 0.12.0 → 0.13.0

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 (167) hide show
  1. package/CHANGELOG.md +166 -9
  2. package/README.md +177 -523
  3. package/bin/redweb.js +11 -20
  4. package/client.d.ts +7 -2
  5. package/config/tsconfig.json +14 -14
  6. package/contract.d.ts +45 -0
  7. package/contract.js +5 -0
  8. package/docs/ACTION_INPUT_VERIFICATION.md +96 -0
  9. package/docs/ADMISSION_TIMEOUT_VERIFICATION.md +69 -0
  10. package/docs/AGENT_ACCESS.md +35 -0
  11. package/docs/AGENT_EVALUATION.md +58 -0
  12. package/docs/AGENT_READY_ACCEPTANCE.md +763 -0
  13. package/docs/APPLICATION_RECORDER_VERIFICATION.md +50 -0
  14. package/docs/BENCHMARK_VERIFICATION.md +307 -0
  15. package/docs/BROWSER_OWNER_VERIFICATION.md +191 -0
  16. package/docs/CLI.md +116 -0
  17. package/docs/CLIENT_DEVELOPMENT.md +152 -0
  18. package/docs/CLIENT_POLISH_VERIFICATION.md +282 -0
  19. package/docs/COVERAGE_COUNTER_VALIDATION.md +109 -0
  20. package/docs/COVERAGE_SCOPE_AUDIT.md +1183 -0
  21. package/docs/DEVELOPMENT.md +79 -0
  22. package/docs/DIAGNOSTIC_COMPATIBILITY.md +76 -0
  23. package/docs/DOCUMENTATION.md +37 -0
  24. package/docs/FEEDBACK_COMMAND_VERIFICATION.md +228 -0
  25. package/docs/GETTING_STARTED.md +58 -0
  26. package/docs/JSX_PERFORMANCE_VERIFICATION.md +59 -0
  27. package/docs/LIVE_HTML.md +169 -21
  28. package/docs/LIVE_HTML_LOAD_VERIFICATION.md +98 -0
  29. package/docs/MIGRATION.md +28 -0
  30. package/docs/MULTIPLAYER_OPERATIONS.md +26 -4
  31. package/docs/ORIGINAL_RECOVERY_VERIFICATION.md +100 -0
  32. package/docs/PACKAGED_EXAMPLE_VERIFICATION.md +126 -0
  33. package/docs/POLISH_RELEASE_CHECKPOINT.md +91 -0
  34. package/docs/PROCESS_CLEANUP_OBSERVATION.md +61 -0
  35. package/docs/PROCESS_REAPING_VERIFICATION.md +30 -0
  36. package/docs/PRODUCTION_READINESS.md +11 -2
  37. package/docs/RECOVERY_CLIENT_HEAP.md +201 -0
  38. package/docs/RECOVERY_CODE_ATTRIBUTION.md +174 -0
  39. package/docs/RECOVERY_CODE_CENSUS.md +158 -0
  40. package/docs/RECOVERY_COMPARISON.md +103 -0
  41. package/docs/RECOVERY_DEOPTIMIZATION.md +169 -0
  42. package/docs/RECOVERY_FOLLOWUP_SPIKE.md +147 -0
  43. package/docs/RECOVERY_INVESTIGATION.md +229 -0
  44. package/docs/RECOVERY_RUNTIME_CONTROLS.md +181 -0
  45. package/docs/RELEASE_TRUST.md +58 -0
  46. package/docs/ROOM_AUTHORIZATION.md +49 -0
  47. package/docs/RUNTIME_DIAGNOSTICS.md +78 -0
  48. package/docs/SERVER_RECOVERY_CANDIDATE.md +185 -0
  49. package/docs/SOAK_ROTATION_OBSERVATION.md +160 -0
  50. package/docs/SOAK_VERIFICATION.md +154 -0
  51. package/docs/SOCKET_CONTRACTS.md +39 -0
  52. package/docs/SPLIT_RECOVERY_COVERAGE.md +83 -0
  53. package/docs/SPLIT_RECOVERY_ERROR_HANDLING.md +67 -0
  54. package/docs/STARTER_COORDINATOR_VERIFICATION.md +112 -0
  55. package/docs/STARTER_LIFECYCLE_VERIFICATION.md +75 -0
  56. package/docs/STARTER_REPORT_RETENTION.md +73 -0
  57. package/docs/VERIFICATION_EVIDENCE.md +2 -0
  58. package/docs/generated.json +2154 -0
  59. package/docs/guides/chatroom.md +27 -0
  60. package/docs/guides/http-websocket.md +28 -0
  61. package/docs/guides/jsx-without-react.md +26 -0
  62. package/docs/guides/realtime-dashboard.md +29 -0
  63. package/docs/guides/typed-websockets.md +26 -0
  64. package/docs/reference.json +1207 -0
  65. package/docs/snippets/room-access.tsx +51 -0
  66. package/docs/topics.json +21 -0
  67. package/examples/live-html/chatroom.js +207 -268
  68. package/examples/live-html/chatroom.tsx +167 -0
  69. package/examples/live-html/jsx-page.js +1 -1
  70. package/examples/live-html/jsx-page.tsx +1 -1
  71. package/examples/live-html/tsconfig.json +8 -7
  72. package/index.d.ts +170 -45
  73. package/index.js +2 -0
  74. package/jsx-dev-runtime.js +2 -2
  75. package/jsx-runtime.d.ts +7 -2
  76. package/package.json +88 -7
  77. package/recipes/add/artifact.test.cjs +57 -0
  78. package/recipes/add/live.tsx +18 -0
  79. package/recipes/add/socket-route.ts +24 -0
  80. package/recipes/chat/README.md +22 -0
  81. package/recipes/chat/app.test.cjs +105 -0
  82. package/recipes/chat/app.tsx +9 -0
  83. package/recipes/dashboard/README.md +43 -0
  84. package/recipes/dashboard/admin.ts +21 -0
  85. package/recipes/dashboard/app.css +16 -0
  86. package/recipes/dashboard/app.test.cjs +450 -0
  87. package/recipes/dashboard/app.tsx +86 -0
  88. package/recipes/dashboard/auth.ts +80 -0
  89. package/recipes/dashboard/cards.tsx +102 -0
  90. package/recipes/dashboard/rate-window.test.cjs +17 -0
  91. package/recipes/dashboard/store.ts +120 -0
  92. package/recipes/http-ws/README.md +11 -0
  93. package/recipes/http-ws/app.test.cjs +92 -0
  94. package/recipes/http-ws/app.tsx +36 -0
  95. package/recipes/realtime/README.md +8 -0
  96. package/recipes/realtime/app.test.cjs +15 -0
  97. package/recipes/realtime/app.tsx +28 -0
  98. package/recipes/shared/README.md +40 -0
  99. package/recipes/shared/app.css +8 -0
  100. package/recipes/shared/copy-assets.cjs +8 -0
  101. package/recipes/shared/network.cjs +59 -0
  102. package/recipes/shared/run-app.test.cjs +158 -0
  103. package/recipes/shared/run-app.ts +50 -0
  104. package/recipes/site/README.md +4 -0
  105. package/recipes/site/app.test.cjs +19 -0
  106. package/recipes/site/app.tsx +25 -0
  107. package/recipes/socket/README.md +39 -0
  108. package/recipes/socket/app.test.cjs +85 -0
  109. package/recipes/socket/app.tsx +30 -0
  110. package/recipes/socket/contract.ts +12 -0
  111. package/recipes/socket/handlers.ts +40 -0
  112. package/src/OwnedServerLifecycle.js +66 -0
  113. package/src/access/AccessPolicy.js +37 -0
  114. package/src/access/AuthenticationFailure.js +13 -0
  115. package/src/access/RequestFailure.js +33 -0
  116. package/src/access/failure-codes.json +25 -0
  117. package/src/async/BoundedOperation.js +62 -0
  118. package/src/cli/ActionReferences.js +193 -0
  119. package/src/cli/AdditionLayout.js +140 -0
  120. package/src/cli/FilePlan.js +94 -0
  121. package/src/cli/ProjectAddition.js +60 -0
  122. package/src/cli/ProjectConfig.js +26 -0
  123. package/src/cli/ProjectDoctor.js +112 -0
  124. package/src/cli/ProjectInitializer.js +20 -30
  125. package/src/cli/SourceInspector.js +207 -0
  126. package/src/cli/StaticSource.js +192 -0
  127. package/src/cli/arguments.js +62 -0
  128. package/src/cli/formatCommand.js +10 -0
  129. package/src/cli/run.js +57 -0
  130. package/src/cli/templates.js +86 -87
  131. package/src/context/RequestSnapshot.js +41 -0
  132. package/src/dataProperty.js +11 -0
  133. package/src/development/DevelopmentPageManager.js +48 -0
  134. package/src/development/Inspection.js +104 -0
  135. package/src/development/ObservedRenderer.js +42 -0
  136. package/src/development/description.js +35 -0
  137. package/src/development/loopbackRequest.js +27 -0
  138. package/src/development/refreshBrowser.js +96 -0
  139. package/src/development/refreshStyles.js +9 -0
  140. package/src/development/settings.js +17 -0
  141. package/src/docs/Documentation.js +182 -0
  142. package/src/htmx/ActionDefinition.js +44 -0
  143. package/src/htmx/Jsx.js +24 -8
  144. package/src/htmx/LiveHtmlServer.js +41 -19
  145. package/src/htmx/LivePage.js +63 -13
  146. package/src/htmx/PageIdentity.js +32 -0
  147. package/src/htmx/PageLifetime.js +37 -0
  148. package/src/htmx/PageManager.js +203 -74
  149. package/src/htmx/ReactiveRenderer.js +241 -0
  150. package/src/htmx/StaticExporter.js +1 -1
  151. package/src/htmx/TemplateRenderer.js +13 -7
  152. package/src/htmx/browserRuntime.js +2 -93
  153. package/src/htmx/metadata.js +19 -7
  154. package/src/validation/ActionInputError.js +12 -0
  155. package/src/validation/SchemaValidator.js +38 -0
  156. package/src/ws/AdmissionPolicy.js +24 -23
  157. package/src/ws/BaseSocketServer.js +53 -38
  158. package/src/ws/ContractValidationError.js +12 -0
  159. package/src/ws/HeartbeatMonitor.js +19 -7
  160. package/src/ws/ProtocolPolicy.js +1 -1
  161. package/src/ws/RoomAccess.js +82 -0
  162. package/src/ws/RoomRegistry.js +56 -6
  163. package/src/ws/RouteRuntime.js +56 -10
  164. package/src/ws/SocketContract.js +112 -0
  165. package/src/ws/SocketRoute.js +18 -0
  166. package/src/ws/protocol-schema.json +6 -1
  167. package/examples/live-html/chatroom.ts +0 -217
@@ -0,0 +1,1183 @@
1
+ # Coverage scope and remaining work
2
+
3
+ This inventory separates shipped authored code from verification machinery.
4
+ Passing behavior tests do not establish complete coverage; a coverage report's
5
+ instrumentation hash alone does not prove correspondence with current source.
6
+ No aggregate whole-repository 100% claim is made. This does not waive the open
7
+ coverage requirement in `AGENT_READY_ACCEPTANCE.md`.
8
+
9
+ Split-runner authored coverage is now complete in its maintained scope: 161
10
+ unit/native tests cover the original coordinator/worker plus policy/wrapper at
11
+ all-four 100% (457 statements / 170 branch outcomes / 86 functions / 388 lines).
12
+ Original-source maps are validated; synthetic units are not memory evidence.
13
+ The full Windows `df58f94` suite also passed, but that commit's Node 24 PR job
14
+ failed a soak delivery assertion. See `SPLIT_RECOVERY_COVERAGE.md` and
15
+ `SOAK_ROTATION_OBSERVATION.md`; source coverage does not waive this failure.
16
+
17
+ ## Established scopes
18
+
19
+ ### Original shared-process recovery verifier
20
+
21
+ `npm run verify:recovery:original:coverage` combines 28 explicit boundary units
22
+ with the existing 17-test verifier suite, including native CLI/socket/snapshot
23
+ checks. All 45 pass in 35.606s; authored scope is 112 statements / 71 branch
24
+ outcomes / 20 functions / 93 lines, all 100%. Units supply the source-matched
25
+ map; native child behavior is separate evidence, not instrumented coverage or
26
+ the full default memory workload. Equality regressions exposed a false rejection
27
+ at exactly 110%; exact integer-byte comparison fixes it without changing the
28
+ limit or any-cycle rule. The original diagnostic remains non-blocking and its
29
+ historical failures remain visible. See `ORIGINAL_RECOVERY_VERIFICATION.md` for
30
+ baseline failures, hashes, full-suite failures and the real session-test repair.
31
+
32
+ ### Frozen Live HTML browser tool
33
+
34
+ `npm run verify:live-html:browser:coverage` runs the unchanged full Live HTML
35
+ browser CLI plus separate process/CDP/application boundary units. Its CI step
36
+ replaces the existing plain browser invocation rather than adding a duplicate
37
+ workload at that step. CI attempts to upload available coverage/native artifacts
38
+ even after failure; `full-native.log` is published only after native success and
39
+ validation. Failed commands retain their outer workspace and report diagnostics
40
+ in test/job output, but that temporary directory is not part of the CI artifact.
41
+ The native test uses real APIs, HTTP/WebSockets and Chromium with
42
+ original-filename in-memory instrumentation; it requires successful command
43
+ completion, the exact workload banner, and absence of known owned profile and
44
+ dashboard-workspace directories. Unexpected command, oracle or coverage failures
45
+ retain the outer workspace. The source and every statement/function/branch map
46
+ are checked against the unchanged original. No frozen file or timing limit was
47
+ edited; the test's outer command timeout is 180 seconds.
48
+
49
+ The first native run passed its behavior test in 26.790s (25,909ms workload) but
50
+ correctly failed coverage: 85.41% statements / 54.65% branches / 85.10% functions /
51
+ 94.32% lines. That partial map is retained, not overwritten by a passing claim.
52
+ The final maintained run passed **52 tests in 27.384s** on Windows Node 22.21.0:
53
+ one full native workload and 51 explicit unit cases. The complete authored scope
54
+ is **336 statements / 86 branch outcomes / 47 functions / 282 lines, all 100%**.
55
+ Actual Windows Node 18.20.8 also passed the 51 units in 1.671s with the same scope
56
+ at 100%; the native test was explicitly skipped using the dashboard's canonical
57
+ Node engine requirement. That skip is not native browser/dashboard acceptance.
58
+
59
+ The unit harness deliberately does not implement a fake DOM: observations are
60
+ synthetic values used to check specific host errors. It uses one reusable
61
+ boundary class, a controlled clock, owned real files and original-source VM
62
+ instrumentation. Tests cover all failed observation assertions, listener and
63
+ HTTP/socket/CDP errors, launch retries/deadlines, transient and permanent profile
64
+ contention, cleanup aggregation, and generated eventual-expression behavior.
65
+ Embedded browser-string execution is not a hidden part of the authored Node
66
+ coverage denominator; the separate native workload remains necessary.
67
+
68
+ Independent review found no new test defects and verified all 47 authored
69
+ functions and exact map correspondence. Tests also characterize these existing
70
+ frozen-tool limitations; covering them does **not** fix them:
71
+
72
+ - Servers are acquired before the main cleanup boundary; partial startup can
73
+ leave earlier acquisitions and the profile behind.
74
+ - Synchronous socket close, browser stop or shutdown errors can skip later
75
+ cleanup and replace a primary error. Rejected shutdown promises are ignored.
76
+ - Browser stop can resolve after both waits without confirming exit. Native CLI
77
+ exit and absent directories are not independent proof of descendant cleanup.
78
+ - Partially opened pages are not closed on errors; pending CDP commands do not
79
+ reject on socket closure. HTTP/socket/CDP waits lack internal deadlines; the
80
+ outer test timeout does not repair them.
81
+ - Falsy thrown values can disappear. The success banner precedes cleanup, which
82
+ is why the native test also requires successful command completion.
83
+
84
+ These are source-derived, explicitly simulated counterexamples—not observed
85
+ failures of the native run or changes to the newer coordinator's independently
86
+ tested guarantees. Frozen code stays untouched.
87
+
88
+ Retained evidence under `coverage/frozen-live-browser-evidence/`:
89
+
90
+ | File | SHA-256 |
91
+ | --- | --- |
92
+ | `coverage-final.json` | `d3aa367c929498d6297f8fce2ad3c538529c94cfe6eb271095dd3f67fb435162` |
93
+ | `full-native.log` | `65e21284bbb593f7c09e7b7bcff89f937cbe5f58e3d8b80dd9b31c54f6b72c2d` |
94
+ | `baseline-coverage.json` | `f106ee7ed870500338560541793d6e2efdd34a7193ec9edda00726ef0dc4939f` |
95
+
96
+ The frozen source LF-normalized SHA-256 is
97
+ `3159843a23e11cacf83f84631c4697388badd182908864881cb86d9a028057e4`.
98
+ This closes the last enumerated frozen-tool direct-map gap, not whole-repository
99
+ coverage, the default throughput failure, original Linux cleanup observation,
100
+ client diagnostics, final release verification or public package/site alignment.
101
+
102
+ ### Frozen browser evaluator
103
+
104
+ `verify:evaluation:controls:coverage` now measures both `validate.js` and
105
+ `verify.js` in one maintained gate. The shared test-only `FrozenCoverage` helper
106
+ accepts multiple selected original filenames, requires exactly one native CLI
107
+ coverage record, verifies every selected source/map and merges only explicitly
108
+ requested scopes. Preparation, trial and sealing tests retain single-file use;
109
+ no frozen source, checker identity or sealed evaluation record is rewritten.
110
+
111
+ The original eleven-case real Windows browser matrix is reused once. Four new
112
+ native CLI cases exercise actual npm builds, startup parsing/exit, invalid URLs,
113
+ and HTTP rejection. Recorded application PIDs must become absent without a
114
+ second signal; saved reports must match CLI output and contain no additional
115
+ cleanup failure or remaining profile. On Windows, the HTTP case specifically
116
+ requires the actual 404-versus-200 assertion in both the report and failed check,
117
+ with no acquired browser tabs. Elsewhere, it requires the exact unsupported
118
+ interface refusal. Independent review identified why accepting any failure at
119
+ the same check could conceal a different network failure; the stricter oracle
120
+ does not relabel such a failure passing. Unexpected outcomes preserve the
121
+ original captured command error and outer workspace.
122
+
123
+ Twenty-three explicit VM units supply browser/process boundaries and a controlled
124
+ clock, using real owned files. They are not browser or process integration
125
+ evidence. They cover handshake/data-stream deadlines, interception failure,
126
+ startup/build/CLI paths, listener rejection, independent cleanup attempts,
127
+ aggregate causes, optional reports, and standalone room inspection. The
128
+ high-volume event case verifies 30,030 received-event counts and exercises the
129
+ private buffer's saturation path; it does not directly measure that hidden
130
+ buffer's size. The original native assertions and timing limits are unchanged.
131
+
132
+ The initial 25-test native/existing-unit selection passed in 67.037s but correctly
133
+ failed coverage: evaluator 91.56% statements / 66.66% branches / 90.24% functions /
134
+ 94.82% lines. The first 23 new units passed in 2.906s but still missed failed CLI
135
+ exit status (99.57/98.24/100/100). The four native failure cases completed that
136
+ path; the focused 27-test run passed in 7.894s. Full maintained evidence is
137
+ recorded below; these intermediate results are not whole-release acceptance.
138
+
139
+ The final unchanged-input maintained run passed 44 tests in 67.556s on Windows /
140
+ Node 22.21.0: five native CLI tests (one executes the eleven original controls)
141
+ and 39 explicit boundary units. Evaluator coverage is 237 statements / 57 branch
142
+ outcomes / 41 functions / 174 lines, all 100%; combined with the validator it is
143
+ 261/71/45/193, also all 100%. The real control matrix took 59,742ms.
144
+ Retained evidence under `coverage/frozen-evaluator-evidence/`:
145
+
146
+ | File | SHA-256 |
147
+ | --- | --- |
148
+ | `coverage-final.json` | `6ea227a33425b26ea1d15552c84784153277cc2c6499cc471838cba6799f063b` |
149
+ | `native-control-report.json` | `d49e012a6a5756aa1d39e3c713bd23c9195a6e20430a084b091898532a97d2aa` |
150
+ | `frozen-evaluator-native/build-failure.json` | `96461915fb820bc1c53c0a773e5800937d9e8c2f1454f80134b2035ed2de60a5` |
151
+ | `frozen-evaluator-native/http-rejection.json` | `8b2ca9e78a6a79fbf9aa85780bdef64f33da131f4fa04b214bdf6625c6b85ae0` |
152
+ | `frozen-evaluator-native/invalid-url.json` | `ad03ab76518f7e05d4b4a8af16f9a0e7cf8ed3c2164a601e33ce42f7e815f8fc` |
153
+ | `frozen-evaluator-native/startup-exit.json` | `877ad0b31df0685cb2bd3de5565fcda737cdadfb94af52c3f079a45b36d05406` |
154
+
155
+ The unchanged evaluator's LF-normalized source SHA-256 is
156
+ `9008136ae8c7e29b5e05ca06247d84bc6721827abf534ab762dd52ba6aa81b53`;
157
+ validator identity remains the one recorded below. CI preserves the combined map
158
+ and native CLI reports separately from the other verifier scopes. Windows
159
+ evidence does not establish native Linux browser acceptance or resolve the
160
+ historical cleanup observation, throughput failure, or remaining release gates.
161
+
162
+ Single-file helper regressions also passed: preparation five tests in 13.119s;
163
+ process/sealing 40 tests with one skip in 7.986s; trial runner 23 tests in 9.996s.
164
+ Their copies in the same evidence directory are `preparation-regression.json`,
165
+ `process-seal-regression.json`, and `trial-regression.json`. All retain the exact
166
+ 100% map hashes recorded in their individual sections below; the multi-file
167
+ helper refactor did not change those measured scopes.
168
+
169
+ ### Frozen control validator
170
+
171
+ The validator-only `c4679a5` run of `verify:evaluation:controls:coverage` checked
172
+ the unchanged validator with one native CLI test and sixteen explicit
173
+ verifier-result/reporting-oracle units; the combined gate above retains them.
174
+ On Windows the native test executes all eleven original controls: four working
175
+ variants pass every browser check; seven deliberately broken variants fail at
176
+ their expected check. Actual HTTP/WebSockets, ephemeral interface inspection,
177
+ Chromium processes and filesystem operations are not mocked. Successful variants
178
+ require three browser versions and no unrun checks; all outcomes require no
179
+ additional cleanup errors or aggregate causes and no leftover owned profile.
180
+ This is evaluator validation, not a packed Redweb release or a new agent trial.
181
+
182
+ Elsewhere, the native test requires an ordinary CLI exit 1 with the exact
183
+ structured unsupported-interface refusal and failed loopback check. It does not
184
+ claim browser acceptance on Linux. Independent review found that matching only
185
+ the unsupported-platform message could accept a supervisor timeout or additional
186
+ cleanup failure. The stricter oracle rejects those outcomes and preserves the
187
+ original command error, including its captured stderr, alongside the assertion
188
+ failure. Unit regressions require that exact error identity. Unexpected native
189
+ failures conservatively retain the outer workspace, even if the frozen validator
190
+ failed before creating its final report. These are source-derived oracle
191
+ corrections, not observations of a native timeout or cleanup failure.
192
+
193
+ Boundary units separately cover import/CLI execution, optional report output,
194
+ the complete ordered matrix, verifier rejection, wrong pass/check results,
195
+ cleanup uncertainty, missing browser identity, and an actual existing report
196
+ that must remain byte-identical after `EEXIST`. Their supplied verifier results
197
+ are explicitly not browser evidence. A shared test-only outcome table keeps the
198
+ native and boundary assertions consistent without modifying the frozen control
199
+ matrix. Test infrastructure is not silently included in the library denominator.
200
+
201
+ Authored validator scope is 24 statements / 14 branch outcomes / four functions /
202
+ 19 lines, all 100%. The final unchanged-input maintained run passed all 17 tests
203
+ in 60.969s on Windows / Node 22.21.0 / Chrome 152.0.7977.64. Its eleven native
204
+ controls took 59,549ms in total. Retained map
205
+ `coverage/frozen-controls-evidence/coverage-final.json` has SHA-256
206
+ `65e9475ba8a17ba6c0fbc2c20206a488b58c5f8da8043d4a200aa8f98588f4ae`;
207
+ native report `coverage/frozen-controls-evidence/native-control-report.json`
208
+ has SHA-256
209
+ `66106142dee8b9b54e6ab87cad4afa9bfb6e26a6d210e19c42aca2f549427f5c`.
210
+ The unchanged validator's LF-normalized source SHA-256 is
211
+ `ae50f008dce0dd72533c07eb0cb9b6ffb71055263acc992423af667bb0126955`.
212
+ CI bounds and retains this map separately; native Linux behavior remains subject
213
+ to its actual CI result, not inferred from the local Windows run.
214
+
215
+ The initial nine-test run passed in 60.921s before additional
216
+ immutable-report and stricter refusal-oracle units were added. Remaining frozen
217
+ Live HTML browser coverage and broader release obligations stay open; the
218
+ evaluator's previously open scope is now covered by the combined gate above.
219
+
220
+ ### Frozen trial runner
221
+
222
+ `verify:evaluation:trial:coverage` passed 21 tests in 10.367s on Windows /
223
+ Node 22.21.0: seven existing real archive/file-lock checks, four real CLI checks,
224
+ five explicit copy/verifier/cleanup boundary units and five filesystem-backed
225
+ outer-wrapper retention units. The successful CLI case executes the unchanged
226
+ evaluator control using real HTTP/WebSockets and three actual Chromium profiles,
227
+ requiring all ten checks, no unrun checks, matching compiled/input hashes and
228
+ normal execution-directory removal. Its synthetic candidate archive is a
229
+ checker fixture, not an actual packed Redweb release or independently authored
230
+ agent submission. The frozen control's protocol code is copied unchanged.
231
+
232
+ Other native cases require failed npm build status, detection of build-time
233
+ source mutation, and rejection of altered installed bytes before result creation.
234
+ No compiler/process/filesystem/browser/transport APIs are mocked in these native
235
+ tests. Windows-only browser/interface and exclusive-file-lock cases are skipped
236
+ elsewhere; the remaining 19 cases cover the same authored runner scope, with
237
+ boundary units explicitly supplying unavailable platform faults and CLI success.
238
+ Linux CI remains the authority for native Linux execution, not the Windows result.
239
+
240
+ Authored coverage is 66 statements / 14 branch outcomes / six functions / 53
241
+ lines, all 100%. The initial eleven native checks passed but coverage failed at
242
+ 98.48/92.85/100/98.11; missing catch/retention paths were not relabelled complete.
243
+ Retained map `coverage/frozen-trial-evidence/coverage-final.json` has SHA-256
244
+ `a7d323126b4eb8ebab4cf131856a9143fa014162fe0f82740c05f8331708cc42`;
245
+ unchanged LF-normalized source SHA-256
246
+ `9be48fe5153e505e112467bdfbc87b18da539ade5f1bf4b359fc6e600dad7e35`.
247
+
248
+ Independent review found a source-derived test-wrapper failure: an ordinary CLI
249
+ rejection could let its outer owner delete a deliberately retained execution.
250
+ The shared fixture helper now preserves that owner for recorded cleanup errors,
251
+ retained/unrecorded execution directories or unreadable evidence. Original CLI
252
+ errors survive report-read failures. Actual-filesystem regressions assert this
253
+ before their explicit file-only rescue; this was not an observed native cleanup
254
+ failure. No frozen implementation was changed. Shared fixture extraction keeps
255
+ the existing archive inputs unchanged and is test infrastructure, not silently
256
+ part of the library denominator. Process/sealing regression passed 40 tests with
257
+ one skip in 7.652s; its retained map
258
+ `coverage/frozen-trial-evidence/process-seal-regression.json` remains SHA-256
259
+ `cea882c6209d0dc9c03a28140ce81038cfbd613628ec3a04a8900c487d7f8b75`.
260
+ CI bounds and preserves this runner map separately; historical trial records,
261
+ remaining verifiers and broader release requirements remain untouched.
262
+
263
+ Trial-wrapper follow-up: the evaluator routes browser/profile cleanup failures
264
+ through `error` and sometimes `causes`, not application `cleanupError`. Therefore
265
+ the frozen runner can remove its execution directory while its browser profile
266
+ remains. Two new filesystem regressions failed on the original wrapper, both
267
+ with an error/causes report and without any report. The leftover-directory guard
268
+ now also recognizes `framework-acceptance-browser-*`; it preserves the original
269
+ CLI error and profile bytes without classifying message text. All 23 maintained
270
+ tests pass in 9.559s, retaining the identical runner map above. The two added
271
+ tests are file-only wrapper units, not observations of a native browser failure.
272
+ Frozen cleanup behavior and historical evaluations are unchanged.
273
+
274
+ ### Frozen candidate preparation
275
+
276
+ `verify:evaluation:prepare:coverage` passed five tests in 12.289s on Windows /
277
+ Node 22.21.0. Two native tests use actual npm/tar/git execution: plain and
278
+ in-memory-instrumented CLI runs must produce matching archive, catalogue and
279
+ commit identities; a failed launch from an absent source directory must not
280
+ create a success manifest. Assertions verify emitted/on-disk manifest parity,
281
+ actual byte hashes, host metadata and empty trial directories. Temporary
282
+ artifacts are confined to the test's owned directory and removed afterward.
283
+ Frozen failed-preparation retention is not silently redefined as tool cleanup.
284
+ Three explicit subprocess-result units verify error/stderr/stdout precedence
285
+ and POSIX launch options; they are not native fault simulations.
286
+
287
+ The unchanged source covers 25 statements / eight branch outcomes / three
288
+ functions / 21 lines at 100%, including all three independently inventoried
289
+ functions. The previous existing-test baseline measured preparation at zero;
290
+ behavior-only success did not establish this scope. Retained map
291
+ `coverage/frozen-prepare-evidence/coverage-final.json` has SHA-256
292
+ `045d8055f326a8c9252426698bf12cbdc194e34856b856532b9d877377f520d1`;
293
+ unchanged LF-normalized source SHA-256
294
+ `9647fad32399076f10e5bafa29d65d9837f7f9066b82b3b989642ceb63d05106`.
295
+
296
+ The small `FrozenCoverage` test helper extracts the sealing test's existing
297
+ original-filename instrumentation, source-identity checks and exact map-shape
298
+ validation. It is test infrastructure, not silently included in the library
299
+ denominator. The maintained process/sealing regression passed 40 tests with one
300
+ skip in 8.054s; its complete map remains byte-identical, retained as
301
+ `coverage/frozen-prepare-evidence/process-seal-regression.json`, SHA-256
302
+ `cea882c6209d0dc9c03a28140ce81038cfbd613628ec3a04a8900c487d7f8b75`.
303
+ CI bounds and preserves the preparation map separately. No frozen source,
304
+ sealed evaluation, publication, new agent trial or acceptance limit changed.
305
+
306
+ ### Explicit zero-budget page shutdown
307
+
308
+ The b2ca53a PR Node 18 [job](https://github.com/lakam99/redweb/actions/runs/33416866879/job/99569507960)
309
+ passed 1,770 tests with ten skips, but failed aggregate coverage at
310
+ 99.92/99.97/99.89/99.91. Missing PageManager lines 532–534 and 540 identify render
311
+ drain timeout/reporting and outstanding render-page disposal. The existing native
312
+ test gives shutdown and aborted-render cleanup competing 20ms deadlines; either
313
+ can finish first. That explains a plausible coverage race, not proof of the
314
+ historical run's precise timer order or a runtime shutdown defect.
315
+
316
+ A focused unit uses real PageManager/LivePage ownership and controlled application
317
+ promises, with no timer/API mocks. Zero shutdown budget requires both timeout
318
+ causes and empty registries; application promises are released afterward. The
319
+ real-HTTP test now covers both zero and the existing 20ms budget, requiring the
320
+ nested render-timeout cause only for zero. Runtime source and limits are unchanged.
321
+
322
+ The full focused selection (all `tests/htmx`, `tests/unit/page-access.unit.test.js`,
323
+ and the page-access, live-html, reactive and runtime-diagnostics integration files)
324
+ passed 125 tests on Windows Node 18.20.8 in 11.199s and Node 22.21.0 in 10.285s.
325
+ PageManager covers 462 statements / 303 branches / 87 functions / 372 lines, all
326
+ 100%. Both `coverage/page-shutdown-complete-node18/coverage-final.json` and
327
+ `coverage/page-shutdown-complete-node22/coverage-final.json` have SHA-256
328
+ `0e2653a6978178246aa8a73cefb1f5465bdd97713a93f034281fa9865335b344`;
329
+ unchanged LF-normalized source SHA-256
330
+ `8917ac1cb84cc6b5535c6aee95990842e374db06cb033e4d69e2a57ce3d47520`.
331
+ Earlier 38-test and 90-test partial selections passed behavior but failed coverage
332
+ because they omitted other existing PageManager paths; they are not acceptance
333
+ runs. The new tests are included by ordinary full-suite discovery. CI confirmation
334
+ and the broader release conjunction remain separate; no historical failure is erased.
335
+
336
+ ### Isolated browser harness dependency correction
337
+
338
+ Both 665be56 workflows failed ([PR](https://github.com/lakam99/redweb/actions/runs/33415303095),
339
+ [push](https://github.com/lakam99/redweb/actions/runs/33415299477)). PR Node 22/24
340
+ and lifecycle logs identify `Cannot find module './lib/finishVerificationSummary'`:
341
+ the browser coordinator gained a shared dependency absent from the explicit
342
+ copied harness. Local browser-only success did not exercise that copy boundary.
343
+ b2ca53a also contains that omission; its earlier tool-coverage result is not a
344
+ passing isolated-package result.
345
+
346
+ The correction adds the unchanged helper to the copied set (26 to 27 files).
347
+ A TypeScript AST-based unit regression resolves every literal relative import
348
+ into `scripts/` or `tests/` from the real copied files and requires membership
349
+ in the fingerprinted input set. It fails on the preceding list. It does not
350
+ claim dynamic-import completeness or turn synthetic runtime-resolution fixtures
351
+ into integration tests. All 12 harness units pass in 1.483s, covering 53 statements,
352
+ 11 branch outcomes, nine functions and 49 lines at 100%; the existing maintained
353
+ `verify:package:tools` command already includes this file and test selection.
354
+
355
+ The full `verify:package:coordinator:coverage` rerun passed 71 tests in 266.225s
356
+ on Windows / Node 22.21.0: the actual isolated package/registry-client workflow,
357
+ two real listener-cleanup cases and 68 explicit unit/filesystem cases. Normal TLS
358
+ verification used the system CA store; the environment override was restored.
359
+ Coordinator 173/69/12/162 and report helper 21/6/3/16 remain all-four 100%.
360
+ The owned temporary package workspace was removed normally. Runtime coverage
361
+ 426/262/64/351 and refresh coverage 82/44/12/71 are complete; both refresh modes
362
+ observed actual back-forward-cache restoration. Real counter/chat, reconnect,
363
+ disconnect, authenticated dashboard and source-free generated applications passed.
364
+
365
+ Retained evidence:
366
+
367
+ - `coverage/package-harness-correction/harness-coverage.json`, SHA-256
368
+ `c5b127f32a3bd382328e157e51b249871c9850db2d9d7af278c7a61be1e8cccc`.
369
+ - `coverage/package-harness-correction/package-coverage.json`, SHA-256
370
+ `199e25f0d8f67c35119dbcd86e227ba6dace836aea14fe29e8d4f20d99791faa`.
371
+ - `coverage/packed-browser/2d7c8451-791e-4f36-9513-43f6fe67df54/report.json`, SHA-256
372
+ `7598586fece41f5ae55f187932ad25a281cae6361259681d22629b5c26901552`.
373
+ - Packed archive SHA-256
374
+ `c21f55ab86f74970a5cca9d4a93953e99d50ba17658e592b408807664c361f12`;
375
+ 211 package files / 27 unchanged harness inputs, registry client 0.2.0 without
376
+ candidate override. The archive predates this evidence/documentation update,
377
+ and the browser report is phase-specific, not a transcript of the whole gate.
378
+
379
+ Independent review approved the dependency correction and regression boundary.
380
+ Original throughput/client/Linux-cleanup diagnostics remain open. No new hour
381
+ soak, publication, deployment, merge or whole-repository 100% is claimed.
382
+
383
+ ### Frozen evaluation process and sealing tools
384
+
385
+ `npm run verify:evaluation:process:coverage` measures the existing process and
386
+ sealing implementations without rewriting either source or any sealed evaluation.
387
+ The final Windows / Node 22.21.0 selection passed 40 tests with one platform skip
388
+ in 7.634 seconds: 23 explicit OS/process-boundary units and 17 real process,
389
+ filesystem/archive, CLI and listener checks. The existing 15 tests had passed
390
+ behavior but measured only 84% statements, 59.37% branches, 100% functions and
391
+ 91.07% lines; that baseline coverage command failed and remains distinct.
392
+
393
+ Both authored files now have all-four 100%: process 52 statements / 25 branch
394
+ outcomes / 12 functions / 36 lines; seal 23 / 7 / 7 / 20. The reviewer independently
395
+ matched all 19 AST functions and complete map inventories to unchanged source,
396
+ with no coverage-ignore directives. The maintained command repeats the tested
397
+ selection; CI retains its map separately from actual agent-evaluation results.
398
+
399
+ A small test-only CommonJS preload substitutes instrumented source in memory,
400
+ preserving the real CLI filename, `require.main`, dependency resolution and
401
+ filesystem paths. The native sealing test checks that recorded checker identity
402
+ matches the original file, validates the emitted map's original-source locations,
403
+ and proves a second invocation cannot overwrite the first seal. Its synthetic
404
+ archive is only byte-sealing input, not a valid npm package or new agent trial.
405
+ The test loader is test infrastructure, not silently part of the library scope.
406
+ Native interface inspection runs only on Windows; other platforms check explicit
407
+ rejection. Platform-boundary doubles are not claims of native cross-platform faults.
408
+
409
+ Retained map: `coverage/frozen-process-seal-evidence/20260831-1657/coverage-final.json`,
410
+ SHA-256 `cea882c6209d0dc9c03a28140ce81038cfbd613628ec3a04a8900c487d7f8b75`.
411
+ Unchanged source SHA-256 identities:
412
+ process `8bfbf3ad3887b7f215b14414cc9433c1a1f0776f109c41cf2f5c7a6d02ed340b`;
413
+ seal `46bf4a65fef83f43ab9a7ec9250c2eeada06d35ffb19acefd4f6d4cac87ce09e`.
414
+ This closes these two direct-map gaps, not the other frozen tools, original Linux
415
+ cleanup observation, client/throughput diagnostics or release alignment.
416
+
417
+ ### Browser coordinator terminal evidence and direct coverage
418
+
419
+ The coordinator reuses `finishVerificationSummary` to preserve primary errors and
420
+ retained-workspace identity, normalize rejected values, and retry terminal report
421
+ publication once with failed status. Correction is best-effort: persistent writes
422
+ can leave stale/partial evidence, but the command still rejects. Ten new report regressions failed on the
423
+ preceding implementation. Application shutdown failure now attempts guarded
424
+ listener unref, preserving uncertainty rather than claiming termination. Redundant
425
+ mode/launch flags were removed after checking their reachable states; no browser
426
+ assertions, collection scopes, cleanup deadlines or performance limits changed.
427
+
428
+ The maintained `verify:browser:coordinator:coverage` combines the coordinator with
429
+ the four already-covered runtime/refresh helpers, replacing the two separate
430
+ native invocations inside the umbrella browser gate. Final Windows / Node 22.21.0 /
431
+ Chrome 152.0.7977.64 execution passed 109 tests in 81.961 seconds: 101 units and
432
+ eight native integrations, with the linked-source case explicitly enabled. The
433
+ separate collector selection passed 27 tests in 3.931 seconds. All five authored
434
+ files are 100% statements/branches/functions/lines: coordinator 187/69/35/143;
435
+ page owner 32/2/5/29; runtime helper 58/0/5/55; refresh controls 206/60/26/165;
436
+ refresh coverage helper 189/44/34/132. Embedded browser-expression execution is
437
+ not measured by this host map; separate frontend/refresh maps remain required.
438
+
439
+ Evidence: `coverage/browser-coordinator-evidence/20260831-1636/`.
440
+ The exact authored map SHA-256 is
441
+ `846afe1d2aa625c7250cbe41670ad6732cab341acfdda7ef759cce1d6a7a5e15`;
442
+ coordinator LF-normalized source SHA-256 is
443
+ `3086c58d65701eda7639fc526a3d5c675df5cb939d4c1846477ce7a45bbef645`.
444
+ Retained runtime report SHA-256:
445
+ `56f8c564e2f7546789a7f7f973fda967f717e7c0afb75a6f166086a9425a6cb5`;
446
+ refresh report:
447
+ `ba82d45ef3dc52014954230387bdf885401984d73b5f27b009c6621fe83d6a41`.
448
+ Runtime remains 426/262/64/351 and refresh 82/44/12/71, all 100%; both refresh
449
+ modes observed actual back-forward-cache restoration.
450
+
451
+ The installed-client-only diagnostic remains **failed**, at 93.76% statements,
452
+ 89.57% branches, 100% functions and 96.04% lines. Its retained report SHA-256 is
453
+ `22d56f5d24daa3d732fb557021771e65b98573dd629854c4178a1934021bb104`.
454
+ The native regression requires a fresh report, completed protocol/network/selection
455
+ checks and exactly the coverage assertion failure; an additional reporting failure
456
+ cannot pass under the same primary message. This is not client coverage acceptance.
457
+ The separately enabled source CLI passed its actual client tests, source builds,
458
+ browser checks and 791/521/125/659 original-source scope at 100%. It requires
459
+ `REDWEB_VERIFY_CLIENT_SOURCE=1`, a linked checkout and development dependencies;
460
+ ordinary registry-only CI skips that extra case (108 tests plus one skip).
461
+ The standalone source gate is unchanged.
462
+
463
+ Failure history is retained: the first native baseline had three passing cases,
464
+ the known incomplete-client failure, and a new test-driver realm mismatch when
465
+ calling the source CLI within Jest. Running the actual CLI in its native process
466
+ corrected the driver without weakening source inventory assertions. Baseline host
467
+ coverage was 81.67/67.07/79.41/90.41%. A later 54-test run passed behavior but failed
468
+ 97.36% coordinator branch coverage; the first 109-test combined run likewise
469
+ failed at 99.43% aggregate branches. Its map is retained under
470
+ `coverage/browser-coordinator-evidence/20260831-1635-partial/`. Removing unreachable
471
+ state and exercising signal termination completed the direct map; none of those
472
+ earlier commands is relabeled passing. Independent review corrected the source
473
+ test's CI prerequisites and the diagnostic's aggregate-error oracle before the
474
+ final run. Frozen tooling, original performance/Linux cleanup findings, and
475
+ publication alignment remain open.
476
+
477
+ ### Package coordinator failure and coverage follow-up
478
+
479
+ The package coordinator now normalizes rejected values at browser/harness/report
480
+ boundaries and owns each example server immediately after acquisition. A small
481
+ local owner is shared by the example group and smoke example; every shutdown is
482
+ attempted independently and bounded, with uncertain cleanup retained. Render
483
+ waits are bounded. Success is printed only after workspace cleanup completes.
484
+ Consumer assertions, isolated registry-client resolution and browser workloads
485
+ are unchanged. Private exports are test seams, not public npm APIs.
486
+
487
+ Sixteen new regressions failed on the preceding implementation. Final Windows /
488
+ Node 22.21.0 / Chrome 152.0.7977.64 verification passed 71 tests in 265.812 seconds:
489
+ 68 unit/filesystem cases and three native integration cases. Explicit dependency
490
+ doubles are unit tests, not no-mock integration. Native cases run the full packed
491
+ consumer/browser workflow and prove two real HTTP listeners are closed after a
492
+ later constructor or acceptance failure, before rescue cleanup. The full consumer
493
+ case follows the dashboard's Node floor and is skipped on unsupported Node versions;
494
+ native ownership cases still run there.
495
+
496
+ `npm run verify:package:coordinator:coverage` maintains 100% statements, branches,
497
+ functions and lines: coordinator 173/69/12/162, report helper 21/6/3/16. Retained map
498
+ `coverage/package-coordinator-final/coverage-final.json`, SHA-256
499
+ `199e25f0d8f67c35119dbcd86e227ba6dace836aea14fe29e8d4f20d99791faa`.
500
+ The baseline consumer passed, but its direct coverage command failed at
501
+ 85.71/66.19/87.5/87.16%; it is not relabeled a passing command. The earlier unit-only
502
+ measurement also failed coverage before adding CLI and native consumer execution.
503
+
504
+ Packed report: `coverage/packed-browser/6579e832-9946-489c-b1cc-77c5bae47cda/report.json`.
505
+ The tested archive SHA-256 is
506
+ `d0a9795a7e35456105af26a5a36dcf9c44d2f20a3fcbfad44889b8e2acadc60f`;
507
+ it used registry redweb-client 0.2.0 without a candidate override. Acceptance,
508
+ runtime and refresh phases passed, with 211 package files and 26 harness files.
509
+ Generated frontend coverage remains 426/262/64/351 and refresh 82/44/12/71,
510
+ all 100%; both refresh modes observed actual cache restoration. This archive
511
+ predates the subsequent documentation/CI edits, not a final release artifact.
512
+ CI replaces the standalone package invocation and retains both authored and
513
+ packed-browser evidence. Remaining browser/frozen scopes and failed performance
514
+ diagnostics are not waived.
515
+
516
+ ### Generated-app development verifier follow-up
517
+
518
+ The development coordinator now reuses `BrowserPages` for bounded acquisition
519
+ and ownership across both templates and standalone refresh controls. Late page
520
+ openings remain owned; an unsettled opening retains workspace uncertainty.
521
+ Port reservation handles listener and close errors and releases its local handle
522
+ after uncertain cleanup. Template failures are normalized before their captured
523
+ output is attached; watcher stdout/stderr/unref releases are independently
524
+ attempted. HTTP page close checks status/body completion and preserves concurrent
525
+ socket-release failures. These changes do not modify generated application/runtime
526
+ code, browser assertions, rebuild workloads or existing acceptance deadlines.
527
+
528
+ Nine new boundary regressions failed against the preceding implementation.
529
+ The existing fifteen outer-cleanup units had stopped during template setup and
530
+ did not cover these deeper paths. Final verification combines those fifteen with
531
+ sixteen explicit dependency-boundary units and four no-mock integrations: the
532
+ complete generated realtime/site watcher workflow in Chromium, actual port
533
+ rebind, an HTTP 500 with a real WebSocket, and an adverse DevTools peer followed
534
+ by natural subprocess exit and temporary-workspace removal. Late/pending page
535
+ timing is exercised at unit boundaries, not claimed as a native-browser fault.
536
+
537
+ Windows / Node 22.21.0 / Chrome 152.0.7977.64: 35 tests across three suites passed
538
+ in 71.327 seconds. Authored coverage is 217 statements, 39 branch outcomes,
539
+ 38 functions and 170 lines, all 100%; no ignore exclusions. This instruments
540
+ construction, not execution, of browser-expression strings. Actual browser
541
+ checks remain required. The measured command is maintained as
542
+ `npm run verify:development:coverage`; CI uses it in place of the old standalone
543
+ development invocation and preserves its map on success or failure.
544
+
545
+ Retained map:
546
+ `coverage/development-coordinator-evidence/20260831-1558/coverage-final.json`,
547
+ SHA-256 `845db843f705dd889ef5d22082b07413c13256ed0403c80e1dc0b45752e3082c`.
548
+ Coordinator source SHA-256 (LF-normalized):
549
+ `a23bcd62dddb4fc8aca807682e63beba858e43aa96e8c222cbdd60a04afb7522`.
550
+ Independent review approved the acquisition/cleanup correction and new test
551
+ oracles. This removes the development coordinator from the missing-map inventory,
552
+ not the remaining browser coordinators or frozen tooling. The package coordinator
553
+ was subsequently covered above.
554
+
555
+ ### Refresh verifier failure and coverage follow-up
556
+
557
+ `npm run verify:refresh:coverage` now covers both authored refresh helpers and
558
+ replaces the old refresh CLI invocation inside the browser coverage command.
559
+ The canonical plain/instrumented browser workload is still invoked once; a
560
+ separate native test exercises standalone controls with their default HTTP peer
561
+ and without supplemental checks. Real HTTP tests retain malformed, oversized,
562
+ aborted and valid uploads, listener conflicts and upgraded-socket cleanup.
563
+ Explicit unit doubles cover error boundaries; they are not no-mock integration.
564
+
565
+ The new regressions reproduced three evidence-handling defects: falsy rejected
566
+ values could be swallowed, socket release could replace collection/page-close
567
+ errors, and a controls failure could hide an earlier upload error. Both helpers
568
+ reuse the shared error normalizer/combiner. Browser behavior and acceptance
569
+ deadlines are unchanged. Independent review also required a bounded close and
570
+ independent socket release in the new standalone test driver; this was corrected
571
+ before the final run.
572
+
573
+ Final Windows / Node 22.21.0 / Chrome 152.0.7977.64 browser gate passed:
574
+ 27 collector tests, five runtime-helper tests (7.180 seconds), and 52 refresh
575
+ tests (53.535 seconds). The two-file authored scope is 395 statements,
576
+ 104 branch outcomes, 60 functions and 297 lines, all 100%. An independent AST
577
+ inventory confirmed all 26 controls and 34 coverage-helper functions; there are
578
+ no coverage-ignore exclusions. This map covers construction, not internal
579
+ execution, of embedded browser expressions. Generated refresh coverage remains
580
+ 82/44/12/71 and runtime coverage 426/262/64/351, all 100%; both refresh modes
581
+ observed actual back-forward-cache restoration.
582
+
583
+ Retained evidence directory:
584
+ `coverage/refresh-verifier-evidence/50eccf7b-e6a3-4de4-8bd8-6eea319bdb72/`.
585
+ SHA-256 identities:
586
+
587
+ - Authored `coverage-final.json`: `e1681a8656ab89951f29ac4f82fcff47e79c1f633d2de72f134a78b4ce2ae5c1`.
588
+ - `refresh.json`: `22b89f04c38478c3e0464774d8f8ebe1077a021b1753a06a254d962717b34e66`.
589
+ - `runtime.json`: `0574735a7144d2b6b46fdcaf1956495ad6e874c21c43bcf304a95d3596742b69`.
590
+ - Controls source, LF-normalized: `4602557d0a287e3155d7681edb6c5514ba31bef44425f683cb10974a37aed006`.
591
+ - Coverage helper source, LF-normalized: `cfb8297b7167354f48320dee6518eb2930f3ff1bf1e2a1814e4a926d6413b4e4`.
592
+
593
+ CI retains the authored map with the existing browser artifact. This removes only
594
+ these two helpers from the missing-map inventory, not the coordinators or frozen
595
+ tooling below. Performance, original Linux cleanup and publication remain
596
+ separate open evidence requirements.
597
+
598
+ ### Dashboard verifier follow-up
599
+
600
+ `npm run verify:dashboard:coverage` measures the authored dashboard verifier
601
+ separately. Twenty-four explicitly isolated boundary units cover setup, readiness,
602
+ late/unsettled page acquisition and cleanup. The `unref` case failed on the old
603
+ source: secondary handle-release failure escaped before `cleanupFailure` was set,
604
+ replacing the primary error. A nested guard now retains both cleanup failures
605
+ while preserving the primary error. This double fault was reproduced at an API
606
+ boundary, not claimed as an observed native Node failure.
607
+
608
+ Three no-mock integrations cover the actual generated dashboard's Chromium,
609
+ SQLite, authentication, private card updates and draft-preserving logout/re-login;
610
+ adverse DevTools HTTP setup with natural subprocess exit; and Windows file-lock
611
+ retention. The browser test independently shuts down Chromium and confirms
612
+ temporary-directory removal. Native dashboard checks respect the starter's Node
613
+ requirements; the file-lock case is Windows-only. The new CI gate preserves its
614
+ coverage artifact on success or failure.
615
+
616
+ Windows / Node 22.21.0: 27 tests / 2 suites passed in 60.683 seconds. Direct
617
+ coverage is 101 statements, 14 branch outcomes, 14 functions and 82 lines, all
618
+ 100%. Preserved map:
619
+ `coverage/dashboard-verifier-evidence/72e59434-6d51-491d-89f3-89534a184b09/coverage-final.json`,
620
+ SHA-256 `d486205c7c8549e2fe5487b29c4d8f4405ba074406a0da730d8401b06ab2eeb3`.
621
+ Verifier source SHA-256 (LF-normalized):
622
+ `007d5ca646f3eb182b75b1bc9c84db19f1977b0b70780b694aaaacad95eb6aed`.
623
+ This measures host-side authored code, including construction of browser strings,
624
+ not an execution coverage map for those strings. It does not replace the separate
625
+ frontend map, complete library regression, package or performance acceptance.
626
+
627
+ ### Refresh history observation follow-up
628
+
629
+ The refresh verifier now persists the actual `bfcacheRestored` boolean separately
630
+ for plain and instrumented modes. Browser cache admission is not part of required
631
+ case parity: navigation and resumed polling remain mandatory. These observations
632
+ are recorded after successful mode completion, including cleanup and collection;
633
+ a failure earlier in the mode may leave its observation only in the console.
634
+ Two explicit report-boundary units retain asymmetric false/true outcomes and
635
+ reject a failed mode. A no-mock integration runs the canonical HTTP/Chromium
636
+ workload and reads the resulting report from disk.
637
+
638
+ Local verification: 3 tests / 2 suites passed in 37.541 seconds. Preserved report
639
+ `coverage/refresh-observation-evidence/d1704e74-90a0-48e3-aae6-f4bc73c6948c/report.json`
640
+ has SHA-256 `28a4edc0e32ddb0c10e7b4dc2b78c35a8ec313e0ca8a03ecdffea81c211072ab`.
641
+ Both modes actually observed cache restoration in Chrome 152.0.7977.64 on
642
+ Windows. The unchanged generated refresh source retains 82 statements,
643
+ 44 branch outcomes, 12 functions and 71 lines at 100%; source SHA-256
644
+ `d8a14c1b44dab03f1fd6a62ef4b6721bb5e4baa9348b5f2e93a7fa2316bf8cd0`.
645
+ This does not establish complete direct coverage of the two private refresh
646
+ verification helpers, a fresh full regression, or performance acceptance.
647
+
648
+ ### Previously established coverage
649
+
650
+ - Library: all 91 files in the configured root-entrypoint / `src/**/*.js` scope,
651
+ 5,449 statements, 4,046 branches, 978 functions and 4,468 lines, all 100%.
652
+ Latest full local evidence: 1,486 tests/142 suites for the source set in `bf01c2a`,
653
+ with two POSIX-only skips, including the
654
+ benchmark, terminal-interruption, generator, memory, load and navigation corrections. Exact
655
+ scoped/full-run results are below; the preceding runtime/resource/package checkpoint remains
656
+ in `ADMISSION_TIMEOUT_VERIFICATION.md`.
657
+ Exact current full-run and native linked-client evidence is in
658
+ `FEEDBACK_COMMAND_VERIFICATION.md` and `BROWSER_OWNER_VERIFICATION.md`;
659
+ this head's hosted checks remain separate.
660
+ The preceding `377f029`, `1697f33` and `726b9a3` hosted checks passed. The preceding isolated package
661
+ evidence is in `ACTION_INPUT_VERIFICATION.md`; its hosted checks and evidence follow-up passed.
662
+ The preceding clean load/memory/recovery/soak/audit checkpoint and passing
663
+ workflows remain in `PACKAGED_EXAMPLE_VERIFICATION.md`.
664
+ - Shipped `bin/redweb.js`: separate real-subprocess CLI gate, all four 100%.
665
+ - Six starter applications and shared `run-app.ts`: original-TypeScript gate,
666
+ 104 tests per mode, 600 statements, 299 branches, 160 functions and 472 lines,
667
+ all 100%. Includes the canonical chatroom component.
668
+ - Client authored source: 791 statements, 521 branches, 125 functions and 659
669
+ lines at 100%, with 77 tests per mode plus native browser acceptance. Published
670
+ client 0.2.0 runtime bundles match the tested build.
671
+ - Emitted frontend and development refresh: separate native-browser gates,
672
+ all-four 100%; not inferred from coverage of strings that generate scripts.
673
+ - Site documentation: seven declared modules at 100% line/branch/function
674
+ coverage, six tests and real HTTP/build checks; not whole-site coverage.
675
+ - Server recovery policy/coordinator/CLI and authored split coordinator/worker:
676
+ maintained CI coverage command, 161 tests/ten suites, 457 statements,
677
+ 170 branch outcomes, 86 functions and 388 lines, all 100%. See
678
+ `SPLIT_RECOVERY_COVERAGE.md` for exact report identity and native/unit boundaries.
679
+ - Shipped `recipes/shared/copy-assets.cjs`: `npm run verify:assets:coverage`
680
+ now measures the original source under c8 through actual subprocess/filesystem
681
+ tests and requires all-four 100% in CI. Nested CSS/HTML copying, excluded source
682
+ files, existing compiled-code preservation, stylesheet replacement and a missing
683
+ source failure are checked without mocks. This closes one of the initial eight
684
+ shipped-source gaps.
685
+ - Both `recipes/add` authored templates: the existing addition matrix now runs
686
+ each generated page, component and socket route normally and instrumented,
687
+ using actual HTTP/WebSocket tests in CJS/ESM and standard/legacy decorator modes.
688
+ All twelve generated artifacts require complete original-source coverage.
689
+ Unit coverage of template generation remains in the library scope.
690
+
691
+ Addition evidence: all six enclosing tests passed in 87.697 seconds on Windows,
692
+ Node 22.21.0 / TypeScript 5.9.3. Each page/component covers three statements/lines
693
+ and two functions; each socket route covers four statements/lines and two
694
+ functions (no authored branches). All four metrics are 100% for each artifact.
695
+ Reports under `coverage/addition-source/` retain pre-build source/test/template/
696
+ compiler-config and collector fingerprints, plain/instrumented outcomes and raw
697
+ child maps, including failure evidence outside disposable workspaces. Run IDs:
698
+ `851bfab5-4ebf-45e9-917e-07935946a060` (CJS standard),
699
+ `8a047f5d-5c49-4371-b6be-5b20d5f461d6` (ESM standard),
700
+ `5d36acc9-7a40-4a06-a46b-2de3069103cd` (CJS legacy),
701
+ `c11c44cf-656d-4f45-8d56-e493d8444c11` (ESM legacy).
702
+ The independent critic approved the source correspondence, failure reporting,
703
+ module-format handling and bounded process cleanup. Both CI runs at `0ca4a7f`
704
+ also passed; the addition extension above follows that checkpoint.
705
+
706
+ Asset-copier evidence (Windows/Node 22.21.0): two integration tests pass; all eight
707
+ statements/lines, three branches and one function are covered. Original source
708
+ SHA-256: `5e340377eec8a59b64e0dc0d5791de0826dec8b82d40c3502b67eda6f7aaefee`.
709
+ Report `coverage/recipe-assets/coverage-final.json` SHA-256:
710
+ `bc857afaed89d95aea1bfa448641f5ac2433467e8eed75afbeec99d2ad12c280`.
711
+
712
+ The subsequent complete local regression at `db9e469` passed 925 tests/88 suites
713
+ in 455.485 seconds with all-four 100% library coverage; report SHA-256:
714
+ `38aec4ec3b394f15fa96bfc11d87683a1da83ff9c0fd37f8b21a7a47815e0cab`.
715
+ Both [PR CI](https://github.com/lakam99/redweb/actions/runs/33354236822) and
716
+ [push CI](https://github.com/lakam99/redweb/actions/runs/33354234299) passed all
717
+ Node 18/20/22/24 and lifecycle jobs. The asset-copier tests above were added after
718
+ that full run and passed separately; they are not retroactively included in 925.
719
+
720
+ The exact historical package/client/browser/starter identities and mock boundaries
721
+ remain in `CLIENT_POLISH_VERIFICATION.md`, `POLISH_RELEASE_CHECKPOINT.md` and the
722
+ acceptance work log. Integration uses actual networking, processes, files and
723
+ browsers. Explicit unit fault injection is not called mock-free integration.
724
+
725
+ ## Shipped-source audit gaps closed
726
+
727
+ The standalone-example gate now measures these five original authored modules:
728
+
729
+ ```text
730
+ examples/live-html/cards.ts
731
+ examples/live-html/components.ts
732
+ examples/live-html/counter.ts
733
+ examples/live-html/jsx-page.tsx
734
+ docs/snippets/room-access.tsx
735
+ ```
736
+
737
+ Generated example `.js` files are compiled derivatives of their maintained
738
+ TypeScript, not independent authored implementations. Their compilation and
739
+ runtime behavior remain verified by the same unchanged real-network suite against
740
+ ordinary and instrumented builds, in standard and legacy decorator modes. The
741
+ existing original-source collector covers 56 statements, 20 branches, 25 functions
742
+ and 47 lines, all 100%. Each run executes 28 tests across three suites; retained
743
+ Jest JSON reports enforce matching inventories, passing statuses and no skips.
744
+ Launcher defaults, signal handlers and authorization truth tables have explicitly
745
+ separate unit stubs. HTTP, sockets, page actions, authentication, joining,
746
+ broadcast and revocation use actual implementations in integration tests.
747
+
748
+ Final focused matrix: two outer tests pass in 27.915 seconds, Windows/Node22.21.0.
749
+ Reports under `coverage/example-source/<run>/report.json`:
750
+
751
+ | Mode | Run | SHA-256 |
752
+ | --- | --- | --- |
753
+ | Standard | `87bee699-81ae-47d0-aef4-92eba2efddd8` | `dd708de4786da5beb470b02fd87440be225576290a9f24a7d91bb1d122abdc00` |
754
+ | Legacy | `c1d64975-5ecf-4ebb-bda1-66bb6fa8cedc` | `75eeb3ecaca08efee1e9d79f3bd75d8206105839b437d24963c8906dfe42ca24` |
755
+
756
+ The shared room verifier was extracted rather than duplicating its integration
757
+ checks. Review uncovered a cleanup flaw: a rejected peer close could skip server
758
+ shutdown and hide the primary error. Both cleanup operations are now attempted
759
+ independently, preserving all failures. Eight unit failure combinations plus the
760
+ real source-free room integration pass. `npm run verify:room:coverage` enforces
761
+ all-four 100% in CI: 47 statements, six branches, five functions and 40 lines.
762
+ Source SHA-256: `5484a90e42a45d51552a5bd80796f2c25e0f71cf999f25055edd461469808094`.
763
+ Report `coverage/room-verifier/coverage-final.json` SHA-256:
764
+ `c1360e5405610039332629493eab4c4aa61b449f96b74b2d1fac7916904830e0`.
765
+
766
+ Together with asset copying and addition templates, this closes the initial eight
767
+ shipped-source audit gaps. It does not close the private-tool inventory below or
768
+ claim whole-repository coverage.
769
+
770
+ ## Private tools with existing complete scoped reports
771
+
772
+ These report directories contain all-four 100% maps for the listed files.
773
+ They are separate measurements, not a merged coverage total. Report-to-source
774
+ correspondence must be retained from the relevant recorded input/checkpoint before
775
+ using an old report to certify new edits.
776
+
777
+ | Report under `coverage/` | Files (under `scripts/`) |
778
+ | --- | --- |
779
+ | `package-tools` | `lib/ClientCandidate.js`, `lib/InstalledClient.js`, `lib/PackedBrowserHarness.js`, `lib/preservePackedBrowserReport.js`, `lib/verificationError.js`, `lib/compile-consumer.js`, `lib/verify-documentation.js`, `lib/verify-starter.js` |
780
+ | `memory-tools` | `memory-worker.js`, `verify-memory-overhead.js`, `lib/MemoryMeasurement.js`, `lib/VerificationWorkspace.js` (updated owner; evidence below) |
781
+ | `server-recovery-acceptance` | `lib/ServerRecoveryCandidate.js`, `lib/ServerRecoveryPolicy.js`, `verify-server-recovery.js`, `diagnostics/recovery-split.cjs`, `diagnostics/recovery-split-worker.cjs` (current scope in `SPLIT_RECOVERY_COVERAGE.md`) |
782
+ | `browser-collector` | `lib/BrowserCoverage.js`, `lib/ApplicationCoverage.js`, `lib/assertCoverageFile.js` (current validation evidence in `COVERAGE_COUNTER_VALIDATION.md`) |
783
+ | `browser-commands` | `lib/browserCommands.js`, `lib/verify-action-feedback.js` (unit and actual Chromium/server cases; see `FEEDBACK_COMMAND_VERIFICATION.md`) |
784
+ | `application-collector` | `lib/ApplicationCoverage.js` |
785
+ | `room-verifier` | `lib/verify-room-example.js` |
786
+ | `tool-source/<run>` | `build-live-html-examples.js`, `generate-docs.js`, `generate-protocol-types.js` (separate reports below) |
787
+ | `client-check-preflight` | `lib/ClientSourceCoverage.js`, `lib/reportCommand.js` |
788
+ | `compatibility-capture-runtime` | `diagnostics/ClientHeapCapture.cjs` |
789
+ | `code-attribution-native` | `diagnostics/CodeAttribution.cjs`, `diagnostics/HeapCodeComparison.cjs`, `diagnostics/HeapSnapshotGraph.cjs`, `diagnostics/recovery-heap-graph.cjs`, `diagnostics/recovery-heap-summary.cjs` |
790
+ | `recovery-deopt-native-final` | `diagnostics/DeoptimizationCensus.cjs`, `diagnostics/recovery-code-summary.cjs` |
791
+
792
+ The independent critic confirmed the five attribution/graph files are unchanged
793
+ since reviewed checkpoint `8a15569`, the two deoptimization parsers since
794
+ `8b4694c`, and capture since `daacdac`. Do not substitute the older
795
+ `client-source-collector` report for expanded checkout validation or the older
796
+ `recovery-native-exact` map for the later shared-graph extraction.
797
+
798
+ ## Generator checkpoint: ba4a0bc
799
+
800
+ The example builder now rejects invalid compiler options and configurations that
801
+ emit no JavaScript. Windows malformed-config paths are normalized before asking
802
+ TypeScript to format diagnostics, avoiding its internal path assertion. Actual
803
+ compiler tests cover `.js`, `.mjs`, `.cjs`, type errors, skipped emission and
804
+ non-emission, import rewriting, missing/stale output and CRLF equivalence.
805
+ The documentation generator's existing release/snapshot/README checks are reused
806
+ with explicit released/unreleased fixtures, not duplicated or dependent on the
807
+ repository remaining unreleased. Protocol output is checked against exact types.
808
+
809
+ `npm run verify:build:coverage` runs identical real CLI cases against ordinary and
810
+ original-source-instrumented scripts. It reuses `ApplicationCoverage` and the
811
+ managed workspace owner. Fixture files, compiler, original script, test, collector
812
+ and helper inputs are fingerprinted. Each instrumented invocation, including an
813
+ expected command failure, must produce exactly one validated raw coverage map;
814
+ ordinary invocations must produce none. Matched command inventories and source
815
+ correspondence are required before accepting complete coverage. Reports survive
816
+ temporary-workspace cleanup. CI retains them for 30 days on success or failure.
817
+
818
+ Final focused run: 12 passing tests/four suites in 26.592s, Windows/Node22.21.0,
819
+ TypeScript5.9.3. Three unrelated documentation tests are intentionally filtered by
820
+ this command, not counted as passing. Integration uses actual compiler, files and
821
+ processes, with no API mocks. Five explicitly labelled unit fault cases inject
822
+ falsy thrown values; real-process negative controls remove/duplicate/add owned
823
+ report files to prove invalid evidence is rejected. The critic approved the
824
+ implementation, cleanup budgets and actual PR head.
825
+
826
+ | Original script | Statements | Branches | Functions | Lines | Child reports |
827
+ | --- | ---: | ---: | ---: | ---: | ---: |
828
+ | `build-live-html-examples.js` | 35 | 18 | 8 | 28 | 16 |
829
+ | `generate-docs.js` | 50 | 37 | 7 | 42 | 41 |
830
+ | `generate-protocol-types.js` | 13 | 6 | 1 | 12 | 7 |
831
+
832
+ Every listed metric is 100%. Reports under `coverage/tool-source/<run>/report.json`:
833
+
834
+ | Script | Run | SHA-256 |
835
+ | --- | --- | --- |
836
+ | Example builder | `6d6d82f8-db83-456a-b429-58d8613a6f00` | `c48f5076a0e325e2cd93ea2b015c327e0e319fa0317cfec1eb4903563789dec1` |
837
+ | Documentation | `6df5c048-eab7-4462-8108-008dd0f32658` | `d8f8a7a69848000006f34ae4b2276183948313fe71fccefe260772ddcbb8c2ab` |
838
+ | Protocol types | `74c46f2f-ea89-4814-849c-01d70d13b86f` | `6f35424ef444a384a04f287b88249c63481d00381d7552689313c4bfde3d4fd0` |
839
+
840
+ All current tooling hashes, paired inventories and 64 raw-report hashes were
841
+ rechecked after this run. Full local regression at the same code checkpoint
842
+ passed all 951 tests/95 suites in 517.317s, including normal pretest/generated/type
843
+ checks. Library counts remain those listed above, all-four 100%.
844
+ `coverage/coverage-final.json` SHA-256:
845
+ `24b22792ad69ee6460f2282814046ccb6c53796be25008bb11b0c9389d62e456`.
846
+ Hosted PR33358575524 and push33358573729 subsequently passed, as did the evidence
847
+ follow-up `3c4010e` PR33359014962 and push33359012472. No new runtime/resource/long-soak result, npm publication, deployment
848
+ or merge is claimed by this build-tool increment.
849
+
850
+ ## Memory verifier correction: 7e94e99
851
+
852
+ An actual zero-client command previously exited zero with null per-connection
853
+ values and zero computed metadata. The correction validates positive safe counts,
854
+ derived capacity/trial arithmetic and finite budgets before launching workers.
855
+ Complete worker JSON must match the requested mode/count, contain a safe signed
856
+ heap delta and a finite per-connection value equal to that delta divided by count.
857
+ Invalid/duplicate JSON, missing trials and non-finite comparisons cannot pass.
858
+
859
+ The existing workspace owner runs sequential workers with 60-second deadlines.
860
+ Its new opt-in strict-output flag rejects a truncated stdout or stderr stream;
861
+ ordinary callers retain the existing bounded-tail behavior. Real child tests
862
+ prove that oversized junk followed by a valid JSON tail still fails strict mode.
863
+ Each worker owns peers before waiting for connection, attempts every peer/server
864
+ cleanup independently, and prints success only after cleanup. The existing nested
865
+ error formatter preserves primary and cleanup failures at the CLI boundary.
866
+ Defaults (500 clients, three alternating trials, 2,048-byte limit), batches,
867
+ sampling points, GC sequence, upper median and signed deltas are unchanged.
868
+
869
+ The actual uninstrumented default run passed: legacy 8,901.888, enabled 10,783.68,
870
+ and computed metadata 1,881.7919999999995 bytes/connection, below 2,048.
871
+ Small four-client integration fixtures verify mechanics, not this acceptance
872
+ budget. They launch real processes/sockets/GC for all nine feature modes and
873
+ invalid CLI inputs; no integration API mocks are used. Launcher, configuration,
874
+ report and injected cleanup-failure units are explicitly separate.
875
+
876
+ The initial scoped gate passed 68 tests/four suites in 41.838s. Full Windows
877
+ regression then passed all 1,001 tests/98 suites in 506.606s, including pretest and
878
+ type gates, with all-four 100% library coverage. Report SHA-256:
879
+ `761a9158ddd829a3aed9f81f8e3dd21aaa02f58bcea440daaf293c6e11f4cab3`.
880
+ All Node18/20/22/24 jobs passed in both [PR CI](https://github.com/lakam99/redweb/actions/runs/33359772699)
881
+ and [push CI](https://github.com/lakam99/redweb/actions/runs/33359769989).
882
+ Both lifecycle jobs failed coverage: Linux passed all 66 selected tests but skipped
883
+ two Windows-only file-lock cases, leaving the shared owner's removal-error branch
884
+ uncovered. Later lifecycle/package/browser steps were skipped, not passed.
885
+
886
+ The follow-up keeps the 100% threshold and adds two portable deletion-failure unit
887
+ cases plus two real POSIX nonempty/non-writable-directory cases. Root skips the
888
+ permission cases because its privileges bypass them; portable unit cases remain
889
+ active. Permission restoration and unit-spy restoration precede test cleanup.
890
+ The revised Windows gate passes 70 tests/four suites in 40.634s with two explicitly
891
+ skipped POSIX cases. These new cases are not retroactively included in 1,001 above;
892
+ hosted verification of the correction passed in both `e035657` runs. CI now retains memory coverage
893
+ maps on success or failure. The critic approved both actual code and this correction.
894
+
895
+ The maintained `npm run verify:memory:coverage` Jest/Istanbul scope is all-four100%:
896
+ 163 statements, 93 branches, 30 functions and 139 lines across four files.
897
+ `coverage/memory-tools/coverage-final.json` SHA-256:
898
+ `30d70e08956b46e13bb4c004c60eed30a4f12ba56f47c1cfc20c18827980c395`.
899
+
900
+ | Source (under `scripts/`) | SHA-256 |
901
+ | --- | --- |
902
+ | `memory-worker.js` | `ad949d7061081df8b32f2e650d3c861f1e32aafaac1efef7bd164cb633a9441c` |
903
+ | `verify-memory-overhead.js` | `5f5aa797a68c0591695a39fcd497ab9b6590c7f0012dd5f457e16ccc21fb64f0` |
904
+ | `lib/MemoryMeasurement.js` | `f71d11dd56e18f8ab0e0a3252620d05bdd60f1f84864a39d0c9fe16809e3b1ae` |
905
+ | `lib/VerificationWorkspace.js` | `21ba3dea77089ef6ba90ae2cf5c93671ad5822251a014a4548ef04506ec6407c` |
906
+
907
+ An exploratory native c8 map was partial and is not represented as complete native
908
+ coverage. The above scope combines explicitly instrumented unit coverage with
909
+ separate actual process/socket integration. It does not replace the remaining
910
+ private-tool inventory, certify older owner maps against its new strict-output
911
+ code, or claim a new long soak/publication/deployment/merge.
912
+
913
+ ## Load verification and navigation follow-up
914
+
915
+ The `e035657` push [33360581687](https://github.com/lakam99/redweb/actions/runs/33360581687)
916
+ passed every job. Its PR [33360585345](https://github.com/lakam99/redweb/actions/runs/33360585345)
917
+ passed memory coverage and all Node18/20/22/24 jobs, but failed the packed refresh
918
+ browser phase at a heading-readiness expression with `Uncaught`; soak was skipped.
919
+ The saved log does not retain the underlying browser exception. Two exploratory
920
+ streamed-document probes timed out before reaching that predicate and cleaned up;
921
+ they are not successful reproductions. A maintained real-HTTP/native-browser case
922
+ now establishes that the old expression throws a TypeError when the heading is
923
+ absent, while the shared null-safe predicate returns false until the exact heading
924
+ exists. Unrelated evaluation errors remain fatal. Both ordinary and instrumented
925
+ refresh runs pass (report `07037c8f-d4d9-4e22-9af6-1d2c921f6b7e`), retaining all-four
926
+ 100% of the unchanged generated refresh source. CI retains packed-browser reports
927
+ on success and failure. The original CI failure is not relabelled passing.
928
+
929
+ An actual load run accepted `NaN` latency/throughput limits and exited zero. The
930
+ corrected policy rejects invalid limits before opening sockets, consumes exact
931
+ per-client outstanding IDs once, and requires finite complete results. Workload
932
+ defaults remain 32 clients, 100 messages each, 250ms p99 and 500 messages/second;
933
+ one request per client, JSON parsing before latency completion, the 30s response
934
+ deadline and original slow-consumer probe remain. Partial acquisitions settle
935
+ before cleanup. Socket close now waits for actual CLOSED state after termination;
936
+ a real paused-peer test failed before this fix. Synchronous close failures cannot
937
+ skip termination or abandon observers, and probe/cleanup failures remain visible.
938
+
939
+ `npm run verify:load:coverage` passes 41 tests/six suites in 40.628s on Windows,
940
+ Node22.21.0: 213 statements, 99 branches, 41 functions and 160 lines, all100% across
941
+ four files. Explicit coordinator/transport boundary units are separate from actual
942
+ WebSocket/CLI/timeout integration; no API mocks occur in those integration cases.
943
+ The coverage run is not the clean performance measurement. Report SHA-256:
944
+ `07c1e9e492ea88262c594114d62d73d1579d74fcbd2b23f3701da6ed465ab8be`.
945
+
946
+ | Source (under `scripts/`) | SHA-256 |
947
+ | --- | --- |
948
+ | `verify-load.js` | `551e318a275658d3cc70343ce26d838fe4ca45692c79038d2e05020e1555e8ef` |
949
+ | `lib/LoadMeasurement.js` | `4c6b23311a7db539c971df5676cd0df133f99861b042e6c4fbc3667dee6a36e2` |
950
+ | `lib/measureLoadTraffic.js` | `8e68504a61efcf21813779e37d413b5e8bd4b8692af6cc31469a478ae1351370` |
951
+ | `realtime-harness.js` | `12e5905b576cc861017a1a18393bac347d122db5a19e22a7804dbd65031add22` |
952
+
953
+ Before the critic's final synchronous-failure refinements, default load passed
954
+ 6,659.875 messages/second and 6.4039ms p99; memory passed1,881.744 bytes/connection.
955
+ Server recovery delivered all7,400 replies, peaked109.0175% and finished97.1814%
956
+ of warm heap. The30s/16-client soak passed all eight trends, with4,352 sent and4,348
957
+ received (99.9081%, not lossless), zero final registries and100.3442% final warm heap.
958
+ The original shared-process recovery diagnostic failed its110% limit at111.4056%
959
+ despite finishing97.9749%; that remains visible and non-blocking by the approved
960
+ contract. These interim measurements do not certify the final helper hash above
961
+ or constitute a new60-minute soak. Final clean regression/hosted follow-up remains
962
+ pending at that interim checkpoint; no publication, deployment or merge is claimed.
963
+
964
+ Final `d576278` verification (Windows, Node22.21.0): the full command including
965
+ pretest/types passed1,045 tests/105 suites in570.020s, with two POSIX-only skips
966
+ and all-four100% of the unchanged91-file library scope. Full report SHA-256:
967
+ `b350add1cf03432f77ad0a8f0844195c25a56dabd1656ef4564d2f3e5c82746e`.
968
+ Both [PR33362263127](https://github.com/lakam99/redweb/actions/runs/33362263127)
969
+ and [push33362261457](https://github.com/lakam99/redweb/actions/runs/33362261457)
970
+ passed every Node18/20/22/24 and lifecycle job, including packed refresh, retained
971
+ coverage artifacts and the short soak. No selective retry hid the prior failure.
972
+
973
+ After other local test/package jobs exited, sequential uninstrumented checks
974
+ passed: default load5,683.736 messages/second,7.1724ms p99 and contained slow peer;
975
+ default500-client/three-trial metadata1,881.744 bytes/connection; server recovery
976
+ all7,400 replies, peak108.5190% and final96.9803% of warm heap, with empty registries.
977
+ Client113.0027% remains diagnostic, not server acceptance. HTML load passed200
978
+ expired renders/110 clients with8,058,856-byte heap delta; JSX10,000rows passed in
979
+ 56.7ms with1.3MiB retained. The30s/16-client soak passed all eight resource trends,
980
+ 4,368 sent/4,364 received (99.9084%, four missing—not lossless), zero final registries,
981
+ 100.3000% final warm heap and handles1→2. This does not replace the historical60min
982
+ soak. Production audit reports zero vulnerabilities with certificate validation on.
983
+
984
+ The completed local package gate verified publishedclient0.2.0, all generated and
985
+ source-free consumers plus native browser acceptance/runtime/refresh. Archive hash
986
+ `0fb2dce8fdd6b51ed5b607e5bdb47bc2c5f893f96a823a40295fd06356aa6415` predates this
987
+ increment's README/evidence-only edits; runtime/harness fixes match the checkpoint.
988
+ Packed report `75975202-ee63-4880-ab92-91f6cf1e65ee`, SHA-256
989
+ `fc53aaedc67693c7b42774af7c7255761222ae7cb70f3f201465cb06cd4d2653`.
990
+ Hosted package checks above cover the committed documentation too. The senior
991
+ critic approved all20 remote changed-file blobs with no remaining findings.
992
+ Site checkpoint `20f56dd` synchronizes canonical docs locally:98pages/154assets,
993
+ all HTTP/link/download and atomic rollback checks, six tests/seven scoped modules
994
+ at100% line/branch/function coverage. No site deployment or npm publication occurred.
995
+
996
+ The documentation-only `4267db1` follow-through passed both hosted runs:
997
+ PR33363026371 and push33363023458, including every matrix and lifecycle job.
998
+
999
+ The subsequent disabled-feature benchmark increment closes unchecked worker
1000
+ values, unbounded response waits and incomplete reply accounting. Its six-module
1001
+ scope reaches all-four100% (204 statements/111 branches/30 functions/174 lines),
1002
+ 52 unit and actual-network/process tests. The shared strict-output owner now also
1003
+ rejects truncation on failed exits; its updated memory-tool scope passes71 tests
1004
+ with two POSIX-only skips and all-four100%. See `BENCHMARK_VERIFICATION.md` for
1005
+ precise boundaries and retained performance results: the first default registry
1006
+ comparison passed, but the second failed the unchanged3% throughput limit at
1007
+ 4.7850% regression. This remains an open performance result, not waived by
1008
+ coverage, an earlier pass or the separate recovery diagnostic decision.
1009
+
1010
+ Final benchmark implementation verification at `43c6d73`: full1,098 tests/110
1011
+ suites,614.552s, two POSIX-only skips and all-four100% library coverage. Both
1012
+ PR33365382012 and push33365378641 passed every hosted job. Sequential default
1013
+ load/memory/server-recovery, HTML/JSX, short-soak and audit checks also passed;
1014
+ exact counts/hashes and remaining throughput failure are retained in
1015
+ `BENCHMARK_VERIFICATION.md`. The critic approved all21 remote changed-file blobs.
1016
+ One bounded diagnostic profile pair found no candidate-specific hotspot and does
1017
+ not justify speculative runtime changes or waive the default benchmark failure.
1018
+ The local site was synchronized and tested at `caa166f`; nothing was published.
1019
+
1020
+ ## Remaining private-tool measurement gaps
1021
+
1022
+ The unchanged application recorder now has a direct maintained source scope:
1023
+ six selected tests/two suites, six statements, two branches, one function and six
1024
+ lines, all 100%. The actual exit/pipeline checks remain separate from the direct
1025
+ callback unit. A native converter omitted the anonymous callback from its function
1026
+ denominator; that older zero-function map is diagnostic only, not accepted as
1027
+ authored function coverage. Source/report identity and scope are documented in
1028
+ `APPLICATION_RECORDER_VERIFICATION.md`. Eight unrelated cases are filtered.
1029
+
1030
+ The soak correction adds a direct maintained scope: 80 tests/four suites cover
1031
+ 241 statements, 100 branches, 65 functions and 173 lines at all-four 100% across
1032
+ the coordinator, measurement policy and socket owner. Native undersampling
1033
+ reproduction, exact reply/ownership checks, preserved acceptance boundaries and
1034
+ short-run results are in `SOAK_VERIFICATION.md`. Full regression passed 1,246
1035
+ tests/119 suites with two POSIX-only skips and unchanged all-four 100% library
1036
+ coverage. This is not a new one-hour soak or a substitute for the unresolved
1037
+ benchmark result and remaining hosted/release gates.
1038
+
1039
+ The next Live HTML load correction closes its direct coverage gap:54 tests/three
1040
+ suites, all-four100% across the coordinator, bounded HTTP reader and client owner
1041
+ (195 statements,49 branches,52 functions,139 lines). Exact source/report hashes,
1042
+ native malformed-JSON reproduction, fixture correction and unchanged acceptance
1043
+ limits are in `LIVE_HTML_LOAD_VERIFICATION.md`. Clean default load passed200
1044
+ renders/110 clients with6,824,576-byte heap growth. The critic approved the scoped
1045
+ correction. The full regression then passed 1,152 tests/113 suites in 631.578s
1046
+ with two POSIX-only skips and all-four 100% library coverage; source/report
1047
+ identity is retained in that document. Hosted verification remains pending. This does not waive
1048
+ the separate unresolved benchmark throughput result.
1049
+
1050
+ The JSX performance verifier now has a maintained direct scope: 14 tests/two
1051
+ suites cover 27 statements, eight branches, four functions and 23 lines, all 100%.
1052
+ Exact markup validation replaces the demonstrated false-pass predicate, while
1053
+ timing and memory limits remain unchanged. Native CLI checks and explicit boundary
1054
+ units are separate; the critic approved the correction. See
1055
+ `JSX_PERFORMANCE_VERIFICATION.md` for hashes and measurement boundaries. These new
1056
+ tests are not retroactively included in the preceding full regression inventory.
1057
+
1058
+ The two split-runner files previously had only partial historical maps. Their
1059
+ current original-source maps are now complete in the maintained server recovery
1060
+ coverage gate; see `SPLIT_RECOVERY_COVERAGE.md`. Historical converted maps are
1061
+ not used as proof of the current authored function denominator.
1062
+
1063
+ The packaged-example probe, its dependency coordinator and guarded action helper
1064
+ now have a maintained exact source scope: 40 tests/five suites, 178 statements,
1065
+ 44 branches, 20 functions and 150 lines, all 100%. Explicit fault units complement
1066
+ actual native peers and a clean packed/installed consumer that compiles and runs
1067
+ generated additions. The probe VM map is private outside its explicitly selected
1068
+ scope; the library denominator is unchanged. See `PACKAGED_EXAMPLE_VERIFICATION.md`.
1069
+
1070
+ The action-input verifier now has its own maintained scope: 42 unit/native tests
1071
+ across three suites cover 63 statements, eight branches, nine functions and
1072
+ 53 lines at all-four 100%. Both source-free decorator compiler modes and the
1073
+ original action/context/revocation assertions remain in the native integration
1074
+ flow. Outer test budgets and cleanup were corrected without changing the inner
1075
+ limits. The final scope, isolated package and full regression gates pass.
1076
+ See `ACTION_INPUT_VERIFICATION.md`.
1077
+
1078
+ The starter measurement/authored coordinators now retain available raw
1079
+ reports before parsing or workspace cleanup. Their shared `reportCommand` helper
1080
+ has a maintained 15-test scope at all-four 100% (16 statements, eight branches,
1081
+ one function, 14 lines). See `STARTER_REPORT_RETENTION.md`.
1082
+
1083
+ Both coordinators and `lib/finishVerificationSummary.js` now also have a maintained
1084
+ direct scope: 56 tests/three suites, 180 statements, 34 branches, 25 functions and
1085
+ 148 lines, all-four 100%. Actual copied applications reject source mutation after
1086
+ passing tests; native filesystem failures and explicit unit faults verify terminal
1087
+ report handling and retained cleanup evidence. These two coordinators are removed
1088
+ from the remaining list below. See `STARTER_COORDINATOR_VERIFICATION.md` for exact
1089
+ source/report identities and boundaries. The subsequent full regression includes
1090
+ these cases and passes 1,388 tests/132 suites with the unchanged library scope.
1091
+
1092
+ The lifecycle coordinator now has a maintained direct scope: 26 tests/two suites,
1093
+ 42 statements, six branches, four functions and 39 lines, all-four 100%. A real
1094
+ empty-map false-green was corrected; the source-free emitted-JavaScript gate now
1095
+ requires a nonempty exact module and complete metrics. Only its temporary trailing
1096
+ source-map comment changes, with original/measured bytes retained. The CLI passes
1097
+ 13 real tests and all-four 100% over 57 emitted statements/lines, 20 branches and
1098
+ four functions. See `STARTER_LIFECYCLE_VERIFICATION.md`; these later tests are not
1099
+ part of the preceding 1,388-test full inventory.
1100
+
1101
+ The packed-browser verifier and shared `BrowserPages` owner now have a maintained
1102
+ exact scope: 42 tests/four suites, 131 statements, 26 branches, 20 functions and
1103
+ 103 lines, all-four 100%. Targeted browser-coordinator units and complete native
1104
+ runtime/refresh gates also pass, but do not close that entire coordinator's direct
1105
+ coverage gap. No frozen helper was changed. See `BROWSER_OWNER_VERIFICATION.md`
1106
+ for unit/native boundaries, retained identities and isolated-package distinctions.
1107
+
1108
+ The previously identified active verification/build coverage gaps were addressed
1109
+ incrementally below and in the newer established-scope entries above:
1110
+
1111
+ The client source coordinator is now measured separately by
1112
+ `npm run verify:client:coordinator:coverage`: 35 explicit dependency-boundary
1113
+ units plus three real preflight subprocess tests, covering 107 statements,
1114
+ 19 branches, 14 functions and 95 lines at 100%. Its CI job retains that map.
1115
+ Two separate native Vitest fixtures reproduce worker-command/invalid-coverage
1116
+ failures and verify raw files survive confirmed temporary-workspace cleanup.
1117
+ They run in the full linked-client source command, not registry-only CI.
1118
+ The recorder/configuration strings still require real execution; this map does
1119
+ not claim coverage inside those generated programs or other browser drivers.
1120
+ See `CLIENT_DEVELOPMENT.md` for the maintained commands and retention boundary.
1121
+
1122
+ Verification on Windows/Node 22.21.0: the 38-test coordinator/preflight command
1123
+ passed in 4.006 seconds, map SHA-256
1124
+ `ad6e0c653993e37a9ac06c793a3550b5e9ff5b1e93658f88ef896bbc6845c55f`.
1125
+ The full source command also passed its 26 collector/preflight/report tests,
1126
+ both native failure fixtures (4.487 seconds), and all 77 client tests in each
1127
+ plain/instrumented mode plus actual HTTP/WebSocket/browser acceptance.
1128
+ Run `cb17c8ec-6c2c-4948-9c32-771571d35a19` retains five raw worker files;
1129
+ `coverage/client-source/<run-id>/summary.json` has SHA-256
1130
+ `aa3d0b371ec6f6885f8b3fcce87973cb136f007e599aabb944a071d39088fba5`.
1131
+ The authored-client scope remains 791 statements/521 branches/125 functions/659
1132
+ lines at 100%, with source-built plain bundles matching the published 0.2.0
1133
+ runtime identities. These results are not a new library regression/performance
1134
+ measurement or publication approval. The original throughput failure remains open.
1135
+
1136
+ The runtime-frame and page-ownership helper scopes are now covered by
1137
+ `npm run verify:browser:supplements`, which is part of the existing browser gate.
1138
+ Four explicitly isolated boundary units reject failed browser calls/assertions
1139
+ and missing sessions; one integration test invokes the unchanged canonical
1140
+ plain/instrumented runtime cases with real Redweb HTTP/WebSockets and Chromium.
1141
+ The two helper files are unchanged. Authored instrumentation measures all
1142
+ 90 statements, two branches, ten functions and 84 lines at 100%, including five
1143
+ anonymous callbacks omitted by the initial native-converter function inventory.
1144
+ The native report's five-function denominator is retained as diagnostic only;
1145
+ it is not the acceptance map. Browser-expression strings are constructed here,
1146
+ not internally instrumented by this Node report; actual browser execution and
1147
+ the separate frontend map remain required.
1148
+
1149
+ On Windows/Node 22.21.0, the full browser coverage command passed 27 collector
1150
+ tests, the five supplement tests (7.369 seconds), and the separate refresh gate.
1151
+ Evidence is preserved under
1152
+ `coverage/browser-supplements-evidence/3ff15611-18b6-44a9-af71-3de942420521/`,
1153
+ including source identities and all three reports. Authored map SHA-256:
1154
+ `cb9029313165322379f9a0eb3d4057e2fccff7a11cd9ff37889b5e7342da22b6`.
1155
+ The canonical browser run `3ff15611-18b6-44a9-af71-3de942420521` passed seven
1156
+ ownership and thirteen runtime assertions per mode, plus the existing feedback,
1157
+ morph and native selection checks. Its separate frontend scope remains
1158
+ 426 statements/262 branches/64 functions/351 lines at 100%. The refresh run
1159
+ `3b4be9fd-8406-4be6-81ca-742d89331341` retained all-four 100% and observed actual
1160
+ back-forward-cache restoration. CI retains the
1161
+ authored helper map with the existing browser evidence. Within that command,
1162
+ this replaces the runtime invocation rather than adding a second one; the
1163
+ full regression suite also discovers the new integration test. No new timing
1164
+ claim or performance-policy change is introduced.
1165
+
1166
+ The development-refresh coordinator's earlier fifteen-unit partial measurement
1167
+ is superseded only for its direct coverage claim by the complete authored map
1168
+ above. Earlier failure records remain historical evidence.
1169
+
1170
+ The frozen evaluation process, preparation, sealing, trial runner, control
1171
+ validator and browser evaluator now have the separate direct maps recorded above.
1172
+ The final enumerated frozen Live HTML browser tool now has its direct map above.
1173
+
1174
+ Keep frozen source/evidence unchanged. The evaluation fixture, recipe tests,
1175
+ shared test networking, repository tests/helpers and fixtures are test
1176
+ infrastructure, not silently part of the library denominator. The client’s
1177
+ standalone Node-only V8 diagnostic remains a separate known failure; original
1178
+ authored-source and browser coverage do not relabel it passing. Coverage work
1179
+ does not require restarting the deferred scientific runtime investigation.
1180
+
1181
+ Load policy, reply accounting and the enumerated helper/tool coverage are now
1182
+ recorded above. Final scope reconciliation and release gates remain required;
1183
+ valid historical workload results are not replaced by smaller coverage fixtures.