clearotron 0.2.0 → 0.2.2

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 (629) hide show
  1. package/.env.example +105 -0
  2. package/CONTRIBUTING.md +3 -3
  3. package/INSTALL.md +57 -52
  4. package/README.md +2 -1
  5. package/bin/brandowner.mjs +1 -1
  6. package/bin/clearotron.mjs +4 -4
  7. package/bin/connect.mjs +2 -2
  8. package/bin/example.mjs +114 -37
  9. package/bin/grant.mjs +3 -3
  10. package/bin/key.mjs +1 -1
  11. package/bin/onboard.mjs +97 -119
  12. package/bin/start.mjs +29 -25
  13. package/bin/stop.mjs +65 -3
  14. package/bin/update.mjs +7 -7
  15. package/bin/uspto-sync.mjs +1 -1
  16. package/build-info.json +2 -2
  17. package/docs/DELIVERY.md +6 -2
  18. package/docs/RELEASES.md +6 -4
  19. package/docs/architecture/01-product-overview.md +2 -2
  20. package/docs/architecture/02-architecture.md +2 -2
  21. package/docs/architecture/04-configuration-reference.md +7 -4
  22. package/docs/architecture/05-config-governance.md +38 -5
  23. package/docs/architecture/06-operations-runbook.md +13 -1
  24. package/docs/architecture/09-security-and-data.md +1 -1
  25. package/docs/decisions/0004-documentation-structure.md +1 -1
  26. package/driver/CHANGELOG.md +95 -1
  27. package/driver/README.md +2 -2
  28. package/driver/ask-ledger.mjs +72 -4
  29. package/driver/authority-trees.mjs +1 -1
  30. package/driver/call-capture.mjs +1 -1
  31. package/driver/card-frame.mjs +1 -1
  32. package/driver/case-law-ledger.mjs +1 -1
  33. package/driver/claim-liveness.mjs +1 -1
  34. package/driver/common-law-receipts.mjs +1 -1
  35. package/driver/commonlaw-carry.mjs +1 -1
  36. package/driver/config-inventory.mjs +1 -1
  37. package/driver/connotation-search.mjs +12 -12
  38. package/driver/contract-audit.mjs +5 -5
  39. package/driver/contract-dictation-registry.mjs +4 -4
  40. package/driver/contract-dictation.mjs +2 -2
  41. package/driver/contract-e3-backlog.mjs +6 -6
  42. package/driver/contract-vocabulary.mjs +3 -3
  43. package/driver/corrections-feedforward.mjs +1 -1
  44. package/driver/coverage-form-io.mjs +2 -2
  45. package/driver/coverage-form.mjs +4 -4
  46. package/driver/coverage-ledger.mjs +3 -3
  47. package/driver/coverage-union.mjs +1 -1
  48. package/driver/declination-call.mjs +35 -3
  49. package/driver/declination-duty.mjs +1 -1
  50. package/driver/deliver-trigger.sh +3 -3
  51. package/driver/deploy-live-run-guard.mjs +6 -2
  52. package/driver/dev-portal.mjs +1 -1
  53. package/driver/disposition-call.mjs +4 -4
  54. package/driver/disposition-tool.mjs +4 -4
  55. package/driver/disposition-union.mjs +2 -2
  56. package/driver/doc-constants.mjs +1 -1
  57. package/driver/door-gates.mjs +2 -2
  58. package/driver/doubt-selection.mjs +2 -2
  59. package/driver/drainer-identity.mjs +1 -1
  60. package/driver/driver.config.mjs +63 -11
  61. package/driver/e2e-rounds.mjs +2 -2
  62. package/driver/effort-model.mjs +2 -2
  63. package/driver/engine/anthropic-agent.mjs +24 -24
  64. package/driver/engine/auth.mjs +1 -1
  65. package/driver/engine/common.mjs +1 -1
  66. package/driver/engine/deny-authority-write.mjs +1 -1
  67. package/driver/engine/jx-turn.mjs +1 -1
  68. package/driver/engine/mcp/clarivate-server.mjs +1 -1
  69. package/driver/engine/mcp/corsearch-server.mjs +1 -1
  70. package/driver/engine/mcp/declination-server.mjs +1 -1
  71. package/driver/engine/mcp/dispositions-server.mjs +1 -1
  72. package/driver/engine/mcp/euipo-server.mjs +1 -1
  73. package/driver/engine/mcp/fetch-server.mjs +1 -1
  74. package/driver/engine/mcp/free-tier-server.mjs +2 -2
  75. package/driver/engine/mcp/gather-config.mjs +11 -11
  76. package/driver/engine/mcp/perplexity-server.mjs +1 -1
  77. package/driver/engine/mcp/recording-server.mjs +8 -4
  78. package/driver/engine/mcp/signa-server.mjs +1 -1
  79. package/driver/engine/mcp/uspto-local-server.mjs +1 -1
  80. package/driver/engine/openai-agent.mjs +2 -2
  81. package/driver/engine-build.mjs +2 -2
  82. package/driver/enqueue-schema.mjs +2 -2
  83. package/driver/enqueue.mjs +1 -1
  84. package/driver/envelope-settle.mjs +1 -1
  85. package/driver/evidence-claim-invariant.mjs +2 -2
  86. package/driver/findings-model.mjs +8 -8
  87. package/driver/floor-duty.mjs +1 -1
  88. package/driver/form-neighbourhood.mjs +1 -1
  89. package/driver/framework.mjs +1 -1
  90. package/driver/gateway.mjs +28 -23
  91. package/driver/grounds-grammar.mjs +1 -1
  92. package/driver/hit-list.mjs +1 -1
  93. package/driver/jurisdiction-systems.mjs +1 -1
  94. package/driver/jx-lanes.mjs +1 -1
  95. package/driver/jx-units.mjs +1 -1
  96. package/driver/jx.mjs +3 -3
  97. package/driver/knockout-assess-record.mjs +5 -1
  98. package/driver/narrative-refutation-record.mjs +3 -3
  99. package/driver/numeric-setting.mjs +1 -1
  100. package/driver/owner-use-check.mjs +184 -0
  101. package/driver/package.json +2 -2
  102. package/driver/phase0.mjs +1 -1
  103. package/driver/pipeline-knockout.mjs +52 -4
  104. package/driver/pipeline.mjs +215 -63
  105. package/driver/placement-diff.mjs +2 -2
  106. package/driver/placement-form.mjs +4 -4
  107. package/driver/placement-union.mjs +1 -1
  108. package/driver/portal-acks.mjs +1 -1
  109. package/driver/portal-config-view.mjs +2 -2
  110. package/driver/portal-local-auth.mjs +1 -1
  111. package/driver/portal-report.mjs +6 -6
  112. package/driver/portal-service.mjs +15 -15
  113. package/driver/predelivery-lint.mjs +29 -11
  114. package/driver/prelim-variants-record.mjs +2 -2
  115. package/driver/profile-page.html +1 -1
  116. package/driver/profile-selection.mjs +1 -1
  117. package/driver/profile-service.mjs +2 -2
  118. package/driver/profiles.mjs +1 -1
  119. package/driver/progress.mjs +6 -6
  120. package/driver/provider-usage.mjs +1 -1
  121. package/driver/publish/demo-marking.mjs +1 -1
  122. package/driver/publish/index.mjs +47 -6
  123. package/driver/publish/knockout.mjs +36 -14
  124. package/driver/publish/parse.mjs +4 -4
  125. package/driver/publish/publish-inputs.mjs +2 -2
  126. package/driver/publish/register-presence.mjs +1 -1
  127. package/driver/publish/render-knockout.mjs +198 -31
  128. package/driver/publish/report-data.mjs +13 -3
  129. package/driver/publish/seed-pool.mjs +24 -9
  130. package/driver/queue-watch-probe.mjs +1 -1
  131. package/driver/queue-watch-verdict.mjs +1 -1
  132. package/driver/recall-reconciliation.mjs +1 -1
  133. package/driver/recipe-service.mjs +1 -1
  134. package/driver/record-carry.mjs +141 -2
  135. package/driver/recording-agreement.mjs +3 -3
  136. package/driver/reference-score.mjs +59 -9
  137. package/driver/reference-strip-signatures.mjs +68 -0
  138. package/driver/refusal-bound.mjs +3 -3
  139. package/driver/register-availability.mjs +2 -2
  140. package/driver/register-count.mjs +1 -1
  141. package/driver/register-digest-record.mjs +31 -1
  142. package/driver/register-grant-vocabulary.mjs +2 -2
  143. package/driver/register-plan.mjs +8 -8
  144. package/driver/register-records.mjs +2 -2
  145. package/driver/registry-fidelity.mjs +3 -3
  146. package/driver/remedy-accounting.mjs +1 -1
  147. package/driver/repair-composers.mjs +2 -2
  148. package/driver/repair-digest.mjs +3 -3
  149. package/driver/repairs.mjs +7 -7
  150. package/driver/replay-archive.mjs +2 -0
  151. package/driver/report-card-record.mjs +2 -2
  152. package/driver/result-noun-fields.mjs +10 -3
  153. package/driver/run-economics.mjs +2 -2
  154. package/driver/run-integrity.mjs +1 -1
  155. package/driver/runner.mjs +22 -22
  156. package/driver/scope-rules.mjs +1 -1
  157. package/driver/search-policy.mjs +3 -3
  158. package/driver/skeptic-search.mjs +1 -1
  159. package/driver/skills/blind-frame/SKILL.md +1 -1
  160. package/driver/skills/case-law-citation/SKILL.md +2 -2
  161. package/driver/skills/knockout-assess/SKILL.md +10 -4
  162. package/driver/skills/prelim-search/SKILL.md +2 -2
  163. package/driver/skills/prelim-search/template-formatting.md +1 -1
  164. package/driver/skills/prelim-search/templates/email/generic.md +1 -1
  165. package/driver/skills/prelim-search/worked-examples.md +1 -1
  166. package/driver/skills/prelim-variants/SKILL.md +2 -2
  167. package/driver/stage-context.mjs +1 -1
  168. package/driver/stages-knockout.mjs +55 -4
  169. package/driver/stages.mjs +97 -40
  170. package/driver/stray-artifacts.mjs +2 -2
  171. package/driver/suite-census.json +188 -44
  172. package/driver/synthesis-record.mjs +1 -1
  173. package/driver/systemd/clearotron-client-mcp.service +1 -1
  174. package/driver/systemd/clearotron-portal.service +1 -1
  175. package/driver/systemd/render-units.mjs +1 -1
  176. package/driver/tokens.mjs +1 -1
  177. package/driver/tool-calls.mjs +1 -1
  178. package/driver/turnaround-bands.mjs +1 -1
  179. package/driver/unit-file-drift.mjs +1 -1
  180. package/driver/unit-inventory.mjs +121 -61
  181. package/driver/unit-state-verdict.mjs +20 -12
  182. package/driver/verify-knockout.mjs +10 -2
  183. package/driver/verify.mjs +14 -14
  184. package/driver/whatif-memo-run.mjs +46 -5
  185. package/driver/whatif-queue.mjs +1 -1
  186. package/driver/whatif-worker.mjs +1 -1
  187. package/mcp-server/CHANGELOG.md +12 -0
  188. package/mcp-server/README.md +3 -3
  189. package/mcp-server/http-server.mjs +44 -1
  190. package/mcp-server/key-socket.mjs +184 -0
  191. package/mcp-server/lib/audit-view.mjs +69 -2
  192. package/mcp-server/lib/brief.mjs +15 -0
  193. package/mcp-server/lib/driver.mjs +7 -1
  194. package/mcp-server/lib/events.mjs +1 -1
  195. package/mcp-server/lib/http-handler.mjs +1 -1
  196. package/mcp-server/lib/knockout.mjs +435 -0
  197. package/mcp-server/lib/ops.mjs +4 -4
  198. package/mcp-server/lib/options.mjs +1 -1
  199. package/mcp-server/lib/plan.mjs +1 -1
  200. package/mcp-server/lib/runs.mjs +1 -1
  201. package/mcp-server/lib/scrub.mjs +1 -1
  202. package/mcp-server/lib/whatif.mjs +12 -3
  203. package/mcp-server/mint-token.mjs +1 -1
  204. package/mcp-server/package.json +2 -2
  205. package/mcp-server/server.mjs +76 -11
  206. package/package.json +3 -3
  207. package/portal-ui/package.json +1 -1
  208. package/providers/_shared/enumerate.mjs +1 -1
  209. package/providers/_shared/ledger-path.mjs +3 -3
  210. package/providers/_shared/ledger.mjs +1 -1
  211. package/providers/_shared/result-shape.mjs +3 -3
  212. package/providers/_shared/term-shape.mjs +1 -1
  213. package/providers/corsearch/src/core.js +1 -1
  214. package/providers/jx-subclass/BUILDING.md +1 -1
  215. package/providers/oauth-mcp-bridge/CHANGELOG.md +12 -0
  216. package/providers/oauth-mcp-bridge/package.json +1 -1
  217. package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
  218. package/scripts/README.md +1 -1
  219. package/scripts/added-reference-check.mjs +29 -1
  220. package/scripts/ai-page-render-check.mjs +2 -1
  221. package/scripts/authority-boundary-probe.mjs +1 -1
  222. package/scripts/backfill-started-at.mjs +1 -1
  223. package/scripts/citation-line-check.mjs +3 -3
  224. package/scripts/clearances-render-check.mjs +4 -3
  225. package/scripts/compare.mjs +2 -2
  226. package/scripts/composer-render-check.mjs +6 -6
  227. package/scripts/contract-dictation-scan.mjs +2 -2
  228. package/scripts/dead-names.mjs +1 -1
  229. package/scripts/drain-preflight.mjs +5 -5
  230. package/scripts/e2e-unread-terminals.mjs +1 -1
  231. package/scripts/e2e.mjs +8 -8
  232. package/scripts/env-audit.mjs +27 -7
  233. package/scripts/env-classify.mjs +139 -15
  234. package/scripts/freeze-example-run.mjs +3 -3
  235. package/scripts/head-arrived-gated.mjs +1 -1
  236. package/scripts/headless-page.mjs +274 -0
  237. package/scripts/home-render-check.mjs +3 -2
  238. package/scripts/live-surface-check.mjs +92 -19
  239. package/scripts/main-health.mjs +1 -1
  240. package/scripts/merge-presence-check.mjs +3 -3
  241. package/scripts/mint-reference-strip-backlog.mjs +41 -0
  242. package/scripts/mint-suite-census.mjs +6 -6
  243. package/scripts/nightly-notice.mjs +1 -1
  244. package/scripts/portal-lifecycle-check.mjs +3 -3
  245. package/scripts/reconcile-runs.mjs +1 -1
  246. package/scripts/release-await-cut.mjs +101 -11
  247. package/scripts/release-version-pr-checks.mjs +26 -2
  248. package/scripts/release-version.mjs +2 -2
  249. package/scripts/render-check.mjs +66 -7
  250. package/scripts/report-frame-check.mjs +12 -0
  251. package/scripts/report-screenshot.mjs +62 -2
  252. package/scripts/revisit-render-check.mjs +3 -2
  253. package/scripts/score.mjs +18 -4
  254. package/scripts/strip-tracker-citations.mjs +116 -0
  255. package/scripts/test-run.mjs +3 -3
  256. package/scripts/third-party-notices.mjs +3 -3
  257. package/scripts/travelling-predicates.mjs +3 -3
  258. package/scripts/unexecuted-asserts.mjs +2 -2
  259. package/scripts/verify-publishable.mjs +2 -2
  260. package/scripts/write-up-form-census.mjs +1 -1
  261. package/shared/access-audience.mjs +215 -0
  262. package/shared/brand.mjs +13 -13
  263. package/shared/citation-scan.mjs +1 -1
  264. package/shared/client-door.mjs +7 -7
  265. package/shared/driver-dir.mjs +1 -1
  266. package/shared/env-aliases.mjs +0 -48
  267. package/shared/env-local.mjs +1 -1
  268. package/shared/identifier-scan.mjs +3 -3
  269. package/shared/invocation.mjs +1 -1
  270. package/shared/names-in-force.mjs +2 -0
  271. package/shared/product-owned-names.mjs +1 -1
  272. package/shared/register-selection.mjs +1 -1
  273. package/shared/scope.mjs +5 -5
  274. package/shared/server-units.mjs +4 -4
  275. package/shared/store-in-repo.mjs +2 -2
  276. package/shared/suite-census.mjs +4 -4
  277. package/shared/tracked-files.mjs +31 -0
  278. package/shared/tty-style.mjs +1 -1
  279. package/shared/uspto-index-size.mjs +1 -1
  280. package/shared/vacuous-pass.mjs +1 -1
  281. package/skills/clearotron-account/SKILL.md +42 -13
  282. package/driver/systemd/prelim-driver.path +0 -69
  283. package/driver/systemd/prelim-driver.service +0 -86
  284. package/driver/systemd/prelim-driver.timer +0 -14
  285. package/driver/systemd/prelim-outbox.path +0 -27
  286. package/driver/systemd/prelim-outbox.service +0 -37
  287. package/driver/systemd/prelim-outbox.timer +0 -21
  288. package/node_modules/exceljs/README_zh.md +0 -2878
  289. package/node_modules/exceljs/dist/LICENSE +0 -22
  290. package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
  291. package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
  292. package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
  293. package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
  294. package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
  295. package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
  296. package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
  297. package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
  298. package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
  299. package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
  300. package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
  301. package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
  302. package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
  303. package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
  304. package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
  305. package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
  306. package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
  307. package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
  308. package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
  309. package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
  310. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
  311. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
  312. package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
  313. package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
  314. package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
  315. package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
  316. package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
  317. package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
  318. package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
  319. package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
  320. package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
  321. package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
  322. package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
  323. package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
  324. package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
  325. package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
  326. package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
  327. package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
  328. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
  329. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
  330. package/node_modules/exceljs/dist/es5/index.js +0 -15
  331. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
  332. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
  333. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
  334. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
  335. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
  336. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
  337. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
  338. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
  339. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
  340. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
  341. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
  342. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
  343. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
  344. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
  345. package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
  346. package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
  347. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
  348. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
  349. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
  350. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
  351. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
  352. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
  353. package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
  354. package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
  355. package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
  356. package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
  357. package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
  358. package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
  359. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
  360. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
  361. package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
  362. package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
  363. package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
  364. package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
  365. package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
  366. package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
  367. package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
  368. package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
  369. package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
  370. package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
  371. package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
  372. package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
  373. package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
  374. package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
  375. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
  376. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
  377. package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
  378. package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
  379. package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
  380. package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
  381. package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
  382. package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
  383. package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
  384. package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
  385. package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
  386. package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
  387. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
  388. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
  389. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
  390. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
  391. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
  392. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
  393. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
  394. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
  395. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
  396. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
  397. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
  398. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
  399. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
  400. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
  401. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
  402. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
  403. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
  404. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
  405. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
  406. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
  407. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
  408. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
  409. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
  410. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
  411. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
  412. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
  413. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
  414. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
  415. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
  416. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
  417. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
  418. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
  419. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
  420. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
  421. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
  422. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
  423. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
  424. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
  425. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
  426. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
  427. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
  428. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
  429. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
  430. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
  431. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
  432. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
  433. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
  434. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
  435. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
  436. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
  437. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
  438. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
  439. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
  440. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
  441. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
  442. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
  443. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
  444. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
  445. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
  446. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
  447. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
  448. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
  449. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
  450. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
  451. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
  452. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
  453. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
  454. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
  455. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
  456. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
  457. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
  458. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
  459. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
  460. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
  461. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
  462. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
  463. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
  464. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
  465. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
  466. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
  467. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
  468. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
  469. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
  470. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
  471. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
  472. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
  473. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
  474. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
  475. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
  476. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
  477. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
  478. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
  479. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
  480. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
  481. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
  482. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
  483. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
  484. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
  485. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
  486. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
  487. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
  488. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
  489. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
  490. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
  491. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
  492. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
  493. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
  494. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
  495. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
  496. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
  497. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
  498. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
  499. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
  500. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
  501. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
  502. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
  503. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
  504. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
  505. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
  506. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
  507. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
  508. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
  509. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
  510. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
  511. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
  512. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
  513. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
  514. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
  515. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
  516. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
  517. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
  518. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
  519. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
  520. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
  521. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
  522. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
  523. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
  524. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
  525. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
  526. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
  527. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
  528. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
  529. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
  530. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
  531. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
  532. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
  533. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
  534. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
  535. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
  536. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
  537. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
  538. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
  539. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
  540. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
  541. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
  542. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
  543. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
  544. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
  545. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
  546. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
  547. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
  548. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
  549. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
  550. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
  551. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
  552. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
  553. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
  554. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
  555. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
  556. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
  557. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
  558. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
  559. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
  560. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
  561. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
  562. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
  563. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
  564. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
  565. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
  566. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
  567. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
  568. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
  569. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
  570. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
  571. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
  572. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
  573. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
  574. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
  575. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
  576. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
  577. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
  578. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
  579. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
  580. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
  581. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
  582. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
  583. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
  584. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
  585. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
  586. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
  587. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
  588. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
  589. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
  590. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
  591. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
  592. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
  593. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
  594. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
  595. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
  596. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
  597. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
  598. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
  599. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
  600. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
  601. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
  602. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
  603. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
  604. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
  605. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
  606. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
  607. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
  608. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
  609. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
  610. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
  611. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
  612. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
  613. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
  614. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
  615. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
  616. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
  617. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
  618. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
  619. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
  620. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
  621. package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
  622. package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
  623. package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
  624. package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
  625. package/node_modules/exceljs/dist/exceljs.js +0 -59900
  626. package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
  627. package/node_modules/exceljs/dist/exceljs.min.js +0 -45
  628. package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
  629. package/scripts/deploy-test.sh +0 -309
@@ -74,7 +74,7 @@ export const PLAN_PREDICATES = ["exact", "default", "wildcard", "phonetic", "own
74
74
  // ratified mark or its dominant element, i.e. run input. Until now the only marking was a `+form` suffix
75
75
  // inside a qid string, and the wildcard fringe carried none at all — so nothing downstream could tell a
76
76
  // generated term from an imagined one without re-deriving the band. OPTIONAL on the entry: a frozen
77
- // pre- plan carries none and resumes byte-identical, and replay verdicts over archived runs never flip.
77
+ // pre-change plan carries none and resumes byte-identical, and replay verdicts over archived runs never flip.
78
78
  /**
79
79
  * THE ROMANISATION THE PLAN ALREADY HOLDS FOR A TERM — (cause 2).
80
80
  *
@@ -470,7 +470,7 @@ const slug = (s) => latinFold(s) || "q";
470
470
  // So a non-Latin term's identity carried nothing about WHICH TERM IT IS. It was its position in the
471
471
  // compile order — and the counter is per-plan, not per-script, so adding a Devanagari term renumbers
472
472
  // the Cyrillic ones. Fourth site of a Latin normaliser standing where an identity should be, after
473
- // 's fold key, 's script-exact arm and 's term-substance check.
473
+ // That fold key, the script-exact arm and the term-substance check.
474
474
  //
475
475
  // ── WHAT IT COSTS, MEASURED ON THE SHIPPED extendRegisterPlan RATHER THAN REASONED ────────────
476
476
  //
@@ -1277,7 +1277,7 @@ export function entryQuestionKey(entry, plan) {
1277
1277
  * straight out of model-authored common-law markdown, and it is where R2b's two heading
1278
1278
  * rows entered a plan that had already been declared clean.
1279
1279
  *
1280
- * — AND IT SCREENS FOR THE QUESTION, not just the qid. Same argument as 's term screen and
1280
+ * — AND IT SCREENS FOR THE QUESTION, not just the qid. Same argument as the term screen and
1281
1281
  * the same funnel: an entry whose resolved question is already in the plan is refused here, because
1282
1282
  * this is the one place that holds both the plan and the incoming row. See entryQuestionKey above
1283
1283
  * for what "the same question" means and why `regions` is the field that hides it.
@@ -1498,7 +1498,7 @@ export function parseRegisterPlan(raw) {
1498
1498
  // owner is a defect, never a silent no-op filter.
1499
1499
  if (e.owner != null && (typeof e.owner !== "string" || !e.owner.trim()))
1500
1500
  throw new Error(`register_plan_owner_invalid:${short(e.qid)} (owner must be a non-empty string when present)`);
1501
- //: optional (a frozen pre- plan has none), closed when present — an off-enum value would
1501
+ //: optional (a frozen pre-change plan has none), closed when present — an off-enum value would
1502
1502
  // make the floor/model marking unreadable exactly where it is load-bearing.
1503
1503
  //: optional (a frozen pre-2050 plan has none), and closed to the single value `true` when
1504
1504
  // present — a falsy or string-shaped stamp would make the depth fold's designation unreadable
@@ -1532,7 +1532,7 @@ export function parseRegisterPlan(raw) {
1532
1532
  * { executed: [{qid, state, records, total_hits}], missing: [qid], skipped: [{qid, guard}],
1533
1533
  * unplanned: [{qid|query}] }
1534
1534
  * `records` and `total_hits` are each a number or null, and BOTH KEYS ARE ALWAYS WRITTEN.
1535
- * That is load-bearing, not tidiness: `planJoinFrom` tells a pre- receipt from a count the
1535
+ * That is load-bearing, not tidiness: `planJoinFrom` tells a pre-change receipt from a count the
1536
1536
  * provider could not take by whether the keys are PRESENT, because `null` and absent are the same
1537
1537
  * value once read. Omit a key here and every new receipt silently reads as legacy — the arm named
1538
1538
  * "the discriminator's PREMISE" fails if this stops holding.
@@ -1628,7 +1628,7 @@ export function joinPlanToBands(plan, bandBlocksByAxis) {
1628
1628
  //
1629
1629
  // 1. THE PROVIDER MUST HAVE ANSWERED. Deferral is earned by a band block stamped `error:true` with the
1630
1630
  // provider's own reason on it. A qid with NO block ran nothing and recorded nothing — an absence,
1631
- // not a finding — and still throws. That is 's condition, untouched: a genuinely-unrun,
1631
+ // not a finding — and still throws. That is the condition, untouched: a genuinely-unrun,
1632
1632
  // undisclosed slice fails the run.
1633
1633
  // 2. THE LADDER MUST BE SPENT, WHERE THE LADDER CAN DO ANYTHING. Only a qid the run has ALREADY
1634
1634
  // recorded as missing (or already deferred this way) converts. On its first fan-in a hard-errored
@@ -1847,7 +1847,7 @@ export function deriveCoverageSkeleton(plan, join) {
1847
1847
  * predicate, no clean-claim precondition — had already fired and returned first. Main's own doc block
1848
1848
  * called that pair a deliberate superset/subset. So the fold removes a token the validator could not
1849
1849
  * reach, not a check. THE FOLD IS PROVED BY THE REPLAY CORPUS, not by that argument: the corpus flips
1850
- * only where the SUPERSET stops firing, and it comes back to 's 9 with the superset alone restored.
1850
+ * only where the SUPERSET stops firing, and it comes back to the 9 with the superset alone restored.
1851
1851
  * (The argument alone has a hole — this function keys its skeleton map on raw `s.axis` and the superset
1852
1852
  * trims, so an untrimmed skeleton axis would separate them. Degenerate, and no preserved run carries it.)
1853
1853
  *
@@ -2066,7 +2066,7 @@ function undisclosedDeferredQids(skeletonAxis, text) {
2066
2066
  * WHY THIS AND NOT A LOUDER HINT. The doctrine already reached the stage as advice on the first dispatch
2067
2067
  * (deferredSlicesRequiredRows, formerly the A8 "hint") and the stage claimed clean anyway, then complied
2068
2068
  * the moment the identical fact came back as a validator failure — R1 681s→202s, R2 515s→77s, every
2069
- * prelim run that reaches the digest. A fact that is obeyed as a failure and ignored as an input is not
2069
+ * clearotron run that reaches the digest. A fact that is obeyed as a failure and ignored as an input is not
2070
2070
  * being said too quietly; it is being offered rather than required. So it is required here.
2071
2071
  *
2072
2072
  * DELIBERATELY A SUPERSET of the deferred branch below, and the older gate is kept rather than folded
@@ -330,7 +330,7 @@ export function recordsForMark(doc, name) {
330
330
  * WHAT REPLACES A FOREIGN URL, and why it is not an origin swap: `null`, so the surfaces fall through to
331
331
  * `recordId` — the `/mark/<cc>/<number>` path that IS the canonical record identity this system stores.
332
332
  * The reader gets the record number in plain text beside the office label, which is word for word the
333
- * remedy 's refusal message prescribes. Composing the run provider's origin onto the path instead
333
+ * remedy the refusal message prescribes. Composing the run provider's origin onto the path instead
334
334
  * would invent a URL nobody fetched, and on `free-tier` there are two offices and no single origin to
335
335
  * swap to.
336
336
  *
@@ -394,7 +394,7 @@ export function recordsLine(entry) {
394
394
  + `appears here.`
395
395
  : "";
396
396
  // — the ordered territories this register never covered. Appended to whichever sentence comes
397
- // back, and needed most in the EMPTY-LIST branch below for the same reason 's note is: "the
397
+ // back, and needed most in the EMPTY-LIST branch below for the same reason the note is: "the
398
398
  // register returned none under the name or any close variation of it" is a clean negative, and over a
399
399
  // matter that ordered Japan on a register with no Japanese coverage it is a false one.
400
400
  const outside = entry.deferredScope ?? [];
@@ -328,7 +328,7 @@ export function assembleRunRecords(runDir, runPrefix,
328
328
  writeFileSync(driverDir(runDir, "receipts.json"), JSON.stringify({ schema_version: 1, receipts: rows }, null, 2) + "\n");
329
329
  }
330
330
  } catch { /* best-effort — the records map above remains the gate substrate */ }
331
- // 's legacy-name notice is REPLACED, not deleted. That one told an operator which of four
331
+ // That legacy-name notice is REPLACED, not deleted. That one told an operator which of four
332
332
  // global candidates was being read; nothing reads any of them for a new run any more, so the sentence
333
333
  // had become false. What an operator still needs is the fact underneath it: a box upgraded across this
334
334
  // change is carrying a large global record log that is now written by nothing and read by nothing —
@@ -338,7 +338,7 @@ export function assembleRunRecords(runDir, runPrefix,
338
338
  //
339
339
  // AND THE CALL LEDGER'S OWN NOTICE MOVES HERE RATHER THAN DYING WITH IT. `ledgerDeprecationNotice` had
340
340
  // exactly one product caller — the record line above — so deleting that line would have left NOTHING
341
- // announcing the ledger that is still global, still live and still on production's pre- filename.
341
+ // announcing the ledger that is still global, still live and still on production's pre-change filename.
342
342
  // Gated on the path ACTUALLY WALKED: the notice re-resolves from the environment, so on a call that
343
343
  // passed an explicit `callLogPath` it would describe a file this assembly never opened, and a
344
344
  // diagnostic that names something other than what happened is worse than no diagnostic.
@@ -951,7 +951,7 @@ const recClasses = (rec) => {
951
951
  * WHICH owner name a delivery artifact SHOWS. ONE definition, deliberately, because the renderer
952
952
  * and bindFindingsToRecords each resolve the owner independently — publish/render.mjs does its own
953
953
  * record lookup and preferred the record outright, so binding the finding alone changed no heading and
954
- * no lint surface. A second copy of the same decision is how 's provider default survived two fixes.
954
+ * no lint surface. A second copy of the same decision is how the provider default survived two fixes.
955
955
  *
956
956
  * The record decides, not a guess about what "looks romanised": a record carrying BOTH a Latin name and
957
957
  * a native-script one is itself saying the Latin field is a transliteration, and only then does a
@@ -227,7 +227,7 @@ export function accountRemedyTerms({ terms = [], blocksByQid = new Map(), execut
227
227
  }
228
228
 
229
229
  /**
230
- * THE CLOSURE READ ('s second criterion). `domClosed` may be true only over the ACCOUNTED set: a
230
+ * THE CLOSURE READ (the second criterion). `domClosed` may be true only over the ACCOUNTED set: a
231
231
  * dominant-element directive must be verified-closed AND every remedy term that directive restated must
232
232
  * be `found` or `searched-empty`. One unaccounted term and the dominant-element gap is not closed —
233
233
  * because it demonstrably is not: something the remedy named either never ran or ran into a shape the
@@ -199,7 +199,7 @@ export const REPAIR_COMPOSERS = [
199
199
  // before/after run-pairs read identically, because a clearance narrative's job IS to state what
200
200
  // was searched and what came back — the legitimate sentence and the defective one have the same
201
201
  // shape and differ only in truth. The typed half of this class IS enforced structurally, on the
202
- // corrective pair, by `evidenceClaimViolations` (, pipeline.mjs ~10973) — but it reads
202
+ // corrective pair, by `evidenceClaimViolations` (pipeline.mjs ~10973) — but it reads
203
203
  // `findings.json` meters, and a narrative sentence with no findings-side counterpart is invisible
204
204
  // to it. That prose gap is conversion-era work, not an instruction. This is the instruction.
205
205
  `A REPAIR MAY NARROW A CLAIM AND MAY NEVER BROADEN ONE. If a flagged statement is wrong because it claims too much, the correction states LESS: strike the claim, or replace it with the smaller claim the evidence actually carries. Never restate the same claim in different words, and never replace a specific sentence with a general one. NARROWING IS NOT HEDGING and the rule above still holds — claiming less is a correction; keeping the claim and wrapping it in "may", "appears to" or "broadly" is the hedge that is forbidden.`,
@@ -233,7 +233,7 @@ export const REPAIR_COMPOSERS = [
233
233
  review,
234
234
  );
235
235
  },
236
- // TWO SAMPLES BECAUSE THE COMPOSER HAS TWO SHAPES, and 's saving is the whole point of the
236
+ // TWO SAMPLES BECAUSE THE COMPOSER HAS TWO SHAPES, and the saving is the whole point of the
237
237
  // second: a declared scope narrows the pass, an undeclared one leaves it byte-identical to what it
238
238
  // was before that existed. A guard walking only one of them walks half the surface.
239
239
  samples: [
@@ -139,7 +139,7 @@ export function aggregateFailureRecurrence({ enumerate = enumerateRuns, now = Da
139
139
  // different orders), so it never enters bySig — but a count that nobody prints is a diagnostic
140
140
  // computed and dropped, which is the class this issue belongs to.
141
141
  const refusals = { count: 0, runIds: [], stages: [] };
142
- // — counted and NAMED, never dropped: 's shape immediately above, for the same reason. A park
142
+ // — counted and NAMED, never dropped: the shape immediately above, for the same reason. A park
143
143
  // whose class was "unknown" over a reason a validator had already structured is a gap in the
144
144
  // classifier, not an unknowable failure, and the digest is where an operator would ever see it. It is
145
145
  // reported BESIDE the groups rather than inside them: it is a fact about how a failure was classified,
@@ -219,7 +219,7 @@ export function renderFailureRecurrence(agg) {
219
219
  ].filter(Boolean).join("\n")
220
220
  : null;
221
221
  if (!agg.groups.length) {
222
- return `No prelim failures or auto-recovery parks in the last ${agg.days} days.${refusalLine ? `\n${refusalLine}` : ""}${gapLine ? `\n${gapLine}` : ""}`;
222
+ return `No clearotron failures or auto-recovery parks in the last ${agg.days} days.${refusalLine ? `\n${refusalLine}` : ""}${gapLine ? `\n${gapLine}` : ""}`;
223
223
  }
224
224
  const head = (g) =>
225
225
  `${n(g.runIds.length, "run")} ${g.sig} [${g.failClass ?? "?"}] ` +
@@ -247,7 +247,7 @@ export function renderFailureRecurrence(agg) {
247
247
  }
248
248
 
249
249
  // CLI: `node repair-digest.mjs [--days N]` — the ops-digest generator (scripts/ops-digest-daily.sh)
250
- // invokes this and pastes the output into its "Prelim Failure Recurrence" section.
250
+ // invokes this and pastes the output into its "Clearotron Failure Recurrence" section.
251
251
  if (isEntrypoint(import.meta.url)) {
252
252
  const ix = process.argv.indexOf("--days");
253
253
  const days = ix >= 0 ? Math.max(1, Number(process.argv[ix + 1]) || 7) : 7;
@@ -59,7 +59,7 @@ export const REFUSAL_TERMINAL_KIND = "designed-refusal";
59
59
  // rejection carried one, and the errno tokens below matched it; but undici reports a codeless fault as
60
60
  // a bare `TypeError: fetch failed` (no cause.code), and that line — transport noise by construction —
61
61
  // carried no token either regex knew, so it classified DETERMINISTIC at fan-in: loud-terminal, but it
62
- // defeated 's weather lane for exactly the unreachable-provider case the lane exists for.
62
+ // defeated the weather lane for exactly the unreachable-provider case the lane exists for.
63
63
  export const TRANSIENT_RE = /\btimeout\b|\blane_wedge\b|\bembedded_fallback\b|\bnonzero_exit|\bunparseable_json\b|\bstatus_(timeout|overloaded|error|aborted|rate_limited)\b|\brate_limited\b|\boverloaded\b|\beconnreset\b|\betimedout\b|\benotfound\b|\beai_again\b|socket hang\s?up|\bhttp\s?5\d\d\b|\btransport failure\b/i;
64
64
 
65
65
  // STRUCTURAL REFUSAL: the provider ANSWERED, and its answer is a verdict on the REQUEST. The remedy is
@@ -140,7 +140,7 @@ export const DETERMINISTIC_RE = /\bhttp\s?4(0[0349]|1[04])\b|uri too long|own no
140
140
  //
141
141
  // The axis outcome survives as evidence in exactly one case: THE AXIS LANDED NOTHING. Zero qid-stamped
142
142
  // blocks means the executor never wrote, so its transport failure really is this slice's story and
143
- // 's weather lane keeps working for the dead-provider case it exists for. Once the axis HAS landed
143
+ // That weather lane keeps working for the dead-provider case it exists for. Once the axis HAS landed
144
144
  // qid-stamped blocks the executor demonstrably ran and wrote, and this qid's absence is an identity or
145
145
  // coverage hole that no repair outcome from its axis speaks to.
146
146
  //
@@ -309,7 +309,7 @@ const overflowOf = (tail) => { const m = OVERFLOW_RE.exec(tail.trim()); return m
309
309
  // The leading CAUSE CENSUS is the exact count stamped at the throw site, so the total is the sum of its
310
310
  // numbers — no comma-splitting, and therefore immune to the over-count a query containing a comma used to
311
311
  // cause. LEGACY SHAPES still parse and must: this text path exists for the run-level catch, which sees
312
- // prose only, and a resumed or archived run can still carry a pre- token
312
+ // prose only, and a resumed or archived run can still carry a pre-change token
313
313
  // (`connotation_undisposed:<census>;…`, `<q1,q2,…>[ (+N more)]`). A stale token that stopped counting
314
314
  // would read as a MISSING quantity, which is what a converged run looks like.
315
315
  // The validator's exact count still rides as `quantity` at the throw site and always wins.
@@ -329,7 +329,7 @@ function undisposedCount(tail) {
329
329
  // was cut short of its payload — ABSENT, not converged.
330
330
  return named ? named + overflow : null;
331
331
  }
332
- // A pre- archived token: `connotation_recurrent_uncited:<one result, ≤80 chars>[ (+N more)]` — ONE
332
+ // A pre-change archived token: `connotation_recurrent_uncited:<one result, ≤80 chars>[ (+N more)]` — ONE
333
333
  // named result plus the overflow. Never split on commas: that payload is a copied result title, not a
334
334
  // joined list. Nothing emits this shape any more; it is kept so a resumed run's own history still counts.
335
335
  function recurrentCount(tail) {
@@ -555,7 +555,7 @@ export function countRecoveryLanes(history, { total = 0 } = {}) {
555
555
 
556
556
  // ── CAP PARKS: A PROVIDER SAYING "NOT YET" IS NOT A STAGE FAILING (tracker issue 103) ──────────────
557
557
  //
558
- // Owner, watching indigo-falcon spend 4 of its 6 recovery parks against one subscription cap:
558
+ // Owner, watching a run spend 4 of its 6 recovery parks against one subscription cap:
559
559
  //
560
560
  // "surely it can work out when the cap expires and try after that time and not just keep trying
561
561
  // and then die."
@@ -621,7 +621,7 @@ export function capParkSchedule({ resetsAt = null, attempts = 0, now = Date.now(
621
621
  /**
622
622
  * capWaitFrom — what a run actually spent WAITING on a provider's cap, read off the park history.
623
623
  *
624
- * tracker issue 103's fourth ask: a run that still dies on a cap has to SAY it was a cap, and say how
624
+ * The ask: a run that still dies on a cap has to SAY it was a cap, and say how
625
625
  * long it held out. The park history is the only record that survives a park/resume cycle, so it is the
626
626
  * only place that answer can come from at the terminal.
627
627
  *
@@ -695,7 +695,7 @@ export function humanWait(min) {
695
695
  // failure's `quantity` and the last recorded quantity for the SAME signature in the park history. It
696
696
  // changes no branch below and no caller reads it as an input: the point of the issue is that the
697
697
  // comparison can SEE 25 → 9 → 9 as different from 29 → 11 → 0, where today both hash identically.
698
- // What the machinery DOES with that difference is 's decision, not this function's.
698
+ // What the machinery DOES with that difference is the decision, not this function's.
699
699
  export function decideRecovery({ failClass, sig, reason = "", history = [], priorAttempts = 0, recoveryMax = 3, nonRecoverable = false, hasRunDir = true, runCeiling = null, weatherAttempts = 0, defectAttempts = null, weatherCeiling = null, quantity = null }) {
700
700
  const hist = Array.isArray(history) ? history : [];
701
701
  const sigAttempts = hist.filter((h) => h?.sig === sig).length;
@@ -217,6 +217,8 @@ export function diffSnapshots(prev, curr) {
217
217
 
218
218
  function main() {
219
219
  const args = new Set(process.argv.slice(2));
220
+ // ON-DISK NAME, NOT A PRODUCT NAME: an install that never set the variable already has this file, so
221
+ // renaming the default points the reader at one that does not exist. Owner ruling, tracker issue 308.
220
222
  const snapshotPath = process.env.CLEAROTRON_REPLAY_SNAPSHOT || join(homedir(), ".prelim-replay-snapshot.json");
221
223
  const roots = process.env.CLEAROTRON_REPLAY_ROOTS
222
224
  ? process.env.CLEAROTRON_REPLAY_ROOTS.split(":").filter(Boolean)
@@ -64,7 +64,7 @@ const BODY_FLOOR_CHARS = 60;
64
64
  * READ FROM THE RUN, not from the payload. The card's `- Source:` bullet is declared
65
65
  * `mechanical:code-rendered` and the record already carries `source.resolved_link`, so the seat is not
66
66
  * asked for a URL it would have to compose from a host table it is not even given — the transcription
67
- * class in its purest form, and 's link-to-nowhere in a document a client reads.
67
+ * class in its purest form, and the link-to-nowhere in a document a client reads.
68
68
  */
69
69
  export function findingForOrdinal(runDir, ordinal) {
70
70
  return findingsDocFor(runDir, ordinal).finding;
@@ -187,7 +187,7 @@ export function renderReportCard(model, finding, { registerLabel = "" } = {}) {
187
187
  // ── THE RISK READ IS A STRUCTURE, NOT A DICTATED HABIT ( D3) ─────────────────────────────────
188
188
  //
189
189
  // render.mjs suppresses the typed `legal_position` / `practical_position` pair on any card whose prose
190
- // already carries a "Risk assessment"-led bullet (, ONE ACCOUNT PER FACT). That gate reads a lead
190
+ // already carries a "Risk assessment"-led bullet (ONE ACCOUNT PER FACT). That gate reads a lead
191
191
  // this stage's dispatch calls OPTIONAL and this acceptance never checked — the card contract's §L
192
192
  // requirement was a HABIT, in exactly the sense the card index was one before the driver bound it.
193
193
  //
@@ -12,7 +12,7 @@
12
12
  // property of the WRITING SITE, not of the name — a field called `outcome` carrying an outcome is fine,
13
13
  // and a field called `settled` carrying a dispatch return is the defect. Only reading the writer tells
14
14
  // them apart, so the population is SPLIT and classified rather than filtered down to the offenders.
15
- // Both halves are kept, for 's reason: a filtered population produces no number, and nobody can see
15
+ // Both halves are kept, for the reason: a filtered population produces no number, and nobody can see
16
16
  // what was hidden.
17
17
  //
18
18
  // ── THE TWO HALVES ──────────────────────────────────────────────────────────────────────────────────
@@ -48,7 +48,7 @@
48
48
  // `outcome` for existing readers beside `dispatch` and `verdict`).
49
49
  // "out-of-scope" — never reaches `_driver/*.json` or `run.jsonl`; `atWriteSite` is 0.
50
50
 
51
- /** The result nouns this sweep is about — 's list, verbatim. */
51
+ /** The result nouns this sweep is about — the list, verbatim. */
52
52
  export const RESULT_NOUNS = Object.freeze(["outcome", "executed", "permanent", "settled", "closed", "recovered", "verified"]);
53
53
 
54
54
  export const RESULT_NOUN_FIELDS = Object.freeze([
@@ -66,7 +66,7 @@ export const RESULT_NOUN_FIELDS = Object.freeze([
66
66
  { file: "driver/pipeline.mjs", noun: "executed", sites: 4, atWriteSite: 3, verdict: "result",
67
67
  why: "lengths of the executed set as the join computed it" },
68
68
  { file: "driver/pipeline.mjs", noun: "outcome", sites: 11, atWriteSite: 6, verdict: "result",
69
- why: "the one member that reported an invocation — taint-rerun's `r.ok ? \"ok\" : …`, which travels on a StageFailure packet — now carries a `cleared` sibling read from the taint, #1529's remedy 10/5 -> 11/6 at tracker issue 1886: the profile-store receipt's `outcome: pr.outcome`. Classified by READING ITS WRITING SITE, which is profiles.mjs and not this file: the value is one of three literals chosen by a situation the resolver decided (`overlay` and `bundled-fallback` are `pass`, `env-arrived-late` is `blocked`), never a call's return read as a verdict. `bundled-fallback` being `pass` is the point of the whole receipt — a legitimate install that nobody was told about is what this row says out loud." },
69
+ why: "the one member that reported an invocation — taint-rerun's `r.ok ? \"ok\" : …`, which travels on a StageFailure packet — now carries a `cleared` sibling read from the taint, the remedy 10/5 -> 11/6 at the profile-store receipt's `outcome: pr.outcome`. Classified by READING ITS WRITING SITE, which is profiles.mjs and not this file: the value is one of three literals chosen by a situation the resolver decided (`overlay` and `bundled-fallback` are `pass`, `env-arrived-late` is `blocked`), never a call's return read as a verdict. `bundled-fallback` being `pass` is the point of the whole receipt — a legitimate install that nobody was told about is what this row says out loud." },
70
70
  { file: "driver/pipeline.mjs", noun: "permanent", sites: 1, atWriteSite: 1, verdict: "result",
71
71
  why: "`permanent.length` — a count of the classified set" },
72
72
  { file: "driver/pipeline.mjs", noun: "recovered", sites: 3, atWriteSite: 3, verdict: "result",
@@ -95,6 +95,13 @@ export const RESULT_NOUN_FIELDS = Object.freeze([
95
95
  { file: "driver/skills-store-provenance.mjs", noun: "outcome", sites: 6, atWriteSite: 0, verdict: "out-of-scope" },
96
96
  { file: "driver/status-snapshot.mjs", noun: "outcome", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
97
97
  { file: "mcp-server/lib/events.mjs", noun: "recovered", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
98
+ // Read at the writing site, as this table requires. All three sites are in `knockoutSearches`, a
99
+ // READ-ONLY projection that composes the rows `list_searches` answers with: it opens no artifact and
100
+ // writes nothing, so nothing here can reach `_driver/*.json` or `run.jsonl`. Each value is a literal
101
+ // chosen from the run's own stored record — "found" or "no-hit" from whether the mark has findings,
102
+ // and "recorded" for a register term whose stored row says it did NOT answer. None is a call's return
103
+ // read back as a verdict, which is the defect this table exists to find.
104
+ { file: "mcp-server/lib/knockout.mjs", noun: "outcome", sites: 3, atWriteSite: 0, verdict: "out-of-scope" },
98
105
  { file: "mcp-server/lib/ops.mjs", noun: "settled", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
99
106
  { file: "mcp-server/server.mjs", noun: "outcome", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
100
107
  { file: "scripts/backfill-started-at.mjs", noun: "outcome", sites: 5, atWriteSite: 0, verdict: "out-of-scope" },
@@ -87,7 +87,7 @@
87
87
  // `modelUsed`. So the rows can now answer "what ran", per record, wherever the wire reported.
88
88
  //
89
89
  // What has NOT changed is this module: `byBilling` / `byStage` / `dispatches` still key on `modelUsed`,
90
- // i.e. on what was asked for. Switching them to prefer `modelActual` is 's call, not a side effect
90
+ // i.e. on what was asked for. Switching them to prefer `modelActual` is the call, not a side effect
91
91
  //, and it cannot be a blanket flip — codex reports no model, and a killed turn may have none,
92
92
  // so a per-record basis is the only honest shape. `tokens.mjs` keys its rollup on the requested alias
93
93
  // for the same reason and is likewise untouched.
@@ -241,7 +241,7 @@ export const vendorOf = (engine) => ENGINE_VENDORS[String(engine ?? "")] ?? null
241
241
  //
242
242
  // CODE-SIDE IS NOT A VENDOR. `code:execute-plan` rides nearly every run (the driver executes the frozen
243
243
  // plan itself), stamps `authMode: "not-provider-billed"`, and costs no provider tokens. Counting it would
244
- // make every run in the product read as multi-vendor — the same defect as 's `web` channel, where a
244
+ // make every run in the product read as multi-vendor — the same defect as the `web` channel, where a
245
245
  // member the driver always adds made every run look unplanned. Provider-billed rows only, and the count
246
246
  // of what was set aside is reported so the exclusion is visible rather than assumed.
247
247
  //
@@ -42,7 +42,7 @@ import { DISPATCH_SUFFIX } from "./dispatch-record.mjs"; // — the dispa
42
42
  *
43
43
  * ONE PREDICATE, so the snapshot and any future arming decision cannot disagree about the set. Named
44
44
  * files are the driver-derived joins and receipts judgment reads; the dispatch records are what was
45
- * actually asked, including 's `.prev-<sha>` supersede chain.
45
+ * actually asked, including the `.prev-<sha>` supersede chain.
46
46
  *
47
47
  * ──: EVERY `.jsonl` IS OUT, BY PATTERN, AND A NEW SINK IS OUT THE MOMENT IT IS CREATED ────────
48
48
  *
package/driver/runner.mjs CHANGED
@@ -23,13 +23,13 @@ import "./engine/mcp/http-dispatcher.mjs"; // side effect: raise undici header
23
23
  import { readdirSync, renameSync, existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync, rmSync, statSync } from "node:fs";
24
24
  import { join, dirname, basename } from "node:path";
25
25
  import { driverDir, ensureDriverDir } from "../shared/driver-dir.mjs"; // — one definition of where `_driver/` is
26
- // The queue's filename vocabulary, in ONE place — 's rule, extended by to the prose-sidecar and
26
+ // The queue's filename vocabulary, in ONE place — the rule, extended by to the prose-sidecar and
27
27
  // claim-sidecar names, because a harness check retyped four of them from memory and false-alarmed on the
28
28
  // other nine. Behaviour here is unchanged: the same object and the same three suffixes, sourced.
29
29
  import { isLiveQueueMarker, PROSE_PARTS, CLAIM_SIDECAR_SUFFIXES, TERMINAL_QUEUE_SUFFIXES } from "./queue-markers.mjs";
30
30
  import { matterLedgerPath } from "./usage-ledger.mjs"; // ONE ledger-path calculation, shared with the portal pre-check
31
- import { orderTimeRefusal } from "./run-requirements.mjs"; // tracker issue 216 — one authority for what a run needs, and when it is asked for
32
- import { unitEnvPath } from "../shared/env-local.mjs"; // tracker issue 216 — the file the units read, named by its one author
31
+ import { orderTimeRefusal } from "./run-requirements.mjs"; // one authority for what a run needs, and when it is asked for
32
+ import { unitEnvPath } from "../shared/env-local.mjs"; // the file the units read, named by its one author
33
33
  import { fileURLToPath } from "node:url";
34
34
  import { config, preflightDeploymentUrls } from "./driver.config.mjs";
35
35
  import { deriveSlug, todayISO, mintFreshCodename } from "./phase0.mjs";
@@ -136,7 +136,7 @@ function matterSignature(job, { product = null } = {}) {
136
136
  const base = `${forwarder}|${mark}|${classes}|${customer}|${ref}`;
137
137
  // Product dimension. ONE product adds nothing to the string, and it has to be one or every legacy
138
138
  // ledger row would stop colliding with its own re-send: the pre-spine signature had no suffix at all,
139
- // and the level that ran then was `prelim`. That level's SUCCESSOR is the Global preliminary search —
139
+ // and the level that ran then was `clearotron`. That level's SUCCESSOR is the Global preliminary search —
140
140
  // the clearance a request with nothing named resolves to — so it is the one that stays silent, and
141
141
  // `sigLevel`'s default reads a suffixless row as it. The key name stays `level:` for the same reason:
142
142
  // it is a string already written into every ledger on disk.
@@ -342,7 +342,7 @@ async function intakeNotify(agentId, base, job, v) {
342
342
  const what = v?.classify === "clarify"
343
343
  ? `needs clarification before it can run: ${v.errors.join("; ")}`
344
344
  : `was rejected at intake: ${(v?.errors ?? ["unparseable job file"]).join("; ")}`;
345
- const text = `⚠️ Prelim request "${mark}" ${what}. Nothing has been searched or delivered. ` +
345
+ const text = `⚠️ Clearotron request "${mark}" ${what}. Nothing has been searched or delivered. ` +
346
346
  `Job parked as ${base}.failed in the ${agentId} queue.`;
347
347
  const p = writeOutboxPacket(`intake-${base}.failed`, {
348
348
  kind: "intake-rejected", classify: v?.classify ?? "reject", base, agent: agentId,
@@ -381,7 +381,7 @@ function cleanupClaimSidecars(procPath) {
381
381
  * Returns true when this call moved the marker, false when it was already gone. Any other error still
382
382
  * throws: a permissions failure or a full disk is not a sibling.
383
383
  */
384
- export function retireMarker(procPath, destPath, what = "") { // exported for 's honesty test
384
+ export function retireMarker(procPath, destPath, what = "") { // exported for the honesty test
385
385
  try { renameSync(procPath, destPath); return true; }
386
386
  catch (e) {
387
387
  if (e?.code !== "ENOENT") throw e;
@@ -389,7 +389,7 @@ export function retireMarker(procPath, destPath, what = "") { // exported for
389
389
  // <dest> is on disk. On this branch the rename did NOT happen, so <dest> was never created by this
390
390
  // call, and the parenthetical named the outcome the caller intended rather than the one an operator
391
391
  // would find. It is the single line an operator reads to discover where a job went, and it was
392
- // pointing at a file that is not there. The reproduction (, PR) ends with the queue dir
392
+ // pointing at a file that is not there. The reproduction (PR) ends with the queue dir
393
393
  // holding `job-race.processing` and `job-race.processing.pid` and NO `.json` at all, under a log
394
394
  // line that said the orphan had been returned to the queue.
395
395
  note(`[runner] ${basename(procPath)} was already retired by another runner — this call did NOT create ${basename(destPath)} (it wanted: ${what || "retire the marker"}); the marker is in whatever state that runner left it`);
@@ -433,13 +433,13 @@ export function retireMarker(procPath, destPath, what = "") { // exported for
433
433
  * marker; the argument holds only because no `<base>.json` exists while we hold the lock (both enqueue
434
434
  * doors refuse an id whose `.json` or `.processing` is already present, and this call is the one about
435
435
  * to create it). The residual — a fresh enqueue of the SAME id landing between the two renames — is the
436
- * window 's claim lock and `takeoverClaim` already carry, unchanged here. At a call site where a
436
+ * window the claim lock and `takeoverClaim` already carry, unchanged here. At a call site where a
437
437
  * `<base>.json` CAN coexist with the marker, that argument does not transfer.
438
438
  *
439
439
  * Returns true when this call moved the marker to `destPath`. False means the claim was not ours to
440
440
  * retire — and that nothing on disk was touched.
441
441
  */
442
- export function retireClaimAndSweep(procPath, destPath, what = "", { token = claimToken() } = {}) { // exported for 's race test
442
+ export function retireClaimAndSweep(procPath, destPath, what = "", { token = claimToken() } = {}) { // exported for the race test
443
443
  const lockPath = `${procPath}.claimed-${token}`;
444
444
  try { renameSync(procPath, lockPath); }
445
445
  catch (e) {
@@ -482,7 +482,7 @@ export function retireClaimAndSweep(procPath, destPath, what = "", { token = cla
482
482
  * RE-ASSEMBLED from. It is the one deletion that outlives every marker state: the winner's job — a
483
483
  * resume, or a hand-back to `.json` — then cannot be assembled at all.
484
484
  * - `<base>.done.result` / `<base>.failed.result` asserts a terminal that is not on disk. That is
485
- * 's defect exactly (a line naming the outcome the caller WANTED, not the one an operator would
485
+ * That defect exactly (a line naming the outcome the caller WANTED, not the one an operator would
486
486
  * find), one call below the fix for it.
487
487
  * - `dropMatter` marks the matter ledger row `failed`, and `findDuplicateMatter` skips failed rows —
488
488
  * so it re-opens the dedup gate for a matter the winner may be mid-resume, and the ~$40 duplicate
@@ -578,7 +578,7 @@ async function failAtIntake(procPath, qdir, base, agentId, job, v, reasons) {
578
578
  // outcome string for the .reason file.
579
579
  async function duplicateNotify(agentId, base, job, prior = null, sig = null) {
580
580
  const mark = job?.markName ?? job?.name ?? job?.marks?.[0]?.name ?? base;
581
- // ── tracker issue 136 — A REFUSAL DELIVERED AS SILENCE IS INDISTINGUISHABLE FROM A LOST JOB ────────
581
+ // ── A REFUSAL DELIVERED AS SILENCE IS INDISTINGUISHABLE FROM A LOST JOB ────────
582
582
  //
583
583
  // The observable outcome of a dedup park was an empty queue and no run, which is exactly what an
584
584
  // enqueue that vanished looks like — and the two want completely different next actions. That got
@@ -598,7 +598,7 @@ async function duplicateNotify(agentId, base, job, prior = null, sig = null) {
598
598
  const which = prior?.msgId
599
599
  ? ` The run already under way was submitted as ${prior.msgId}${when ? ` at ${when}` : ""} — that is the one that will deliver.`
600
600
  : " The earlier run will deliver.";
601
- const text = `⚠️ Prelim request "${mark}" matches a matter already in progress or just delivered, so it was `
601
+ const text = `⚠️ Clearotron request "${mark}" matches a matter already in progress or just delivered, so it was `
602
602
  + `NOT run — a second search would spend twice for one answer.${which}`
603
603
  + ` If you genuinely need a fresh run of the same matter, re-submit it with dupOverride (\`--dup-override\` on the`
604
604
  + ` command line) and it will go through.`;
@@ -631,7 +631,7 @@ async function parkDuplicate(procPath, qdir, base, agentId, job, prior, sig) {
631
631
  const conv = String(job.conversationId ?? "").trim();
632
632
  const matchedBy = prior.conversationId && prior.conversationId === conv ? "thread (conversationId)" : "matter signature";
633
633
  const reason = [
634
- `duplicate prelim — not run (a second search for the same matter)`,
634
+ `duplicate clearotron — not run (a second search for the same matter)`,
635
635
  `matched by: ${matchedBy}`,
636
636
  `matter: ${sig}`,
637
637
  `conversationId: ${conv || "-"}`,
@@ -666,7 +666,7 @@ function preRunFailNotify(agentId, base, job, reason) {
666
666
  // terminalReasonFields `reason`, so this cut is a no-op today — which is exactly why it survived: a
667
667
  // latent second cap, unmarked, waiting for the next caller to pass a raw reason. It collapses and
668
668
  // trims identically, so this is the same string with the cut made visible when there is one.
669
- const text = `❌ Prelim request "${mark}" FAILED before the run could start: ${terminalReasonFields(reason).reason} — ` +
669
+ const text = `❌ Clearotron request "${mark}" FAILED before the run could start: ${terminalReasonFields(reason).reason} — ` +
670
670
  `nothing has been searched or delivered. Job parked as ${base}.failed in the ${agentId} queue.`;
671
671
  // `intake-${base}.` PREFIX, not a third scheme: scripts/e2e.mjs's outboxPackets matches by runId
672
672
  // first and by that prefix second, so a name outside it is a notice the harness reports as
@@ -716,7 +716,7 @@ async function backstopFailureNotice({ res, job, agentId, base, codename, studio
716
716
  shortReason, reasonVerbatim: reason.slice(0, 1000), whatsappTo: AGENT_WHATSAPP[agentId] ?? null,
717
717
  });
718
718
  // same per-send invariant as the pipeline's failure path: a fresh notice supersedes an older .sent
719
- // and its per-channel receipts (B4 — stale receipts would make prelim-deliver skip this notice)
719
+ // and its per-channel receipts (B4 — stale receipts would make clearotron-deliver skip this notice)
720
720
  try { rmSync(join(owned.dir, ".sent"), { force: true }); } catch { /* none */ }
721
721
  try { rmSync(driverDir(owned.dir, "send-receipts.json"), { force: true }); } catch { /* none */ }
722
722
  ensureDriverDir(owned.dir);
@@ -740,7 +740,7 @@ async function backstopFailureNotice({ res, job, agentId, base, codename, studio
740
740
  // one-at-a-time so the dedup check+record stays race-free even while prior jobs' pipelines run concurrently
741
741
  // (Phase-4). Returns the prepared {procPath, base, job} to execute, or null when the job was terminally
742
742
  // parked/failed-at-intake, or the claim was lost.
743
- // ── tracker issue 216 — THE ORDER-TIME REFUSAL, AND WHY IT IS HERE ──────────────────────────────────
743
+ // ── THE ORDER-TIME REFUSAL, AND WHY IT IS HERE ──────────────────────────────────
744
744
  //
745
745
  // A hosted install now STARTS with no register configured (owner ruling 2026-09-06: "someone can install
746
746
  // and select key later so it should still start"). The protection that used to live in
@@ -849,7 +849,7 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
849
849
  await failAtIntake(procPath, qdir, base, agentId, job, v, v.errors);
850
850
  return null;
851
851
  }
852
- // ── tracker issue 216 — IS THIS BOX CONFIGURED TO SEARCH AT ALL? See the header above claimAndPrep.
852
+ // ── IS THIS BOX CONFIGURED TO SEARCH AT ALL? See the header above claimAndPrep.
853
853
  {
854
854
  const refusal = orderTimeRefusal(process.env, await runTables(), { envFile: unitEnvPath() });
855
855
  if (refusal) {
@@ -860,11 +860,11 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
860
860
  }
861
861
  }
862
862
  // Search-depth spine — resolve WHICH product shape this job selects (job selector → project/customer
863
- // default → house prelim), then gate on what this deployment can actually run. A selection that cannot
863
+ // default → house clearotron), then gate on what this deployment can actually run. A selection that cannot
864
864
  // run here CLARIFIES loudly (parked + requester notified) — it must never silently run as a different-
865
865
  // priced product, and never silently drop. Fail-open discipline (review 2026-07-17): infra trouble may
866
866
  // NO FAIL-OPEN LEFT ON THIS PATH, and its removal is the point. It used to fall back to the literal
867
- // level `prelim` when resolution errored and the job "provably" wanted a plain clearance — but `prelim`
867
+ // level `clearotron` when resolution errored and the job "provably" wanted a plain clearance — but `clearotron`
868
868
  // named THREE products depending on where it pointed, so the fallback was a guess wearing a level key:
869
869
  // an account whose defaults hold one country would have run a Full country search, case law and all,
870
870
  // off a config read that failed. Under the offering the product is a function of the scope, and a scope
@@ -1027,7 +1027,7 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
1027
1027
  // result the whole time and the marker threw it away.
1028
1028
  //
1029
1029
  // WHAT THIS DOES NOT DO: invent a cause. Neither branch classifies anything; each states which park
1030
- // fired and what its clock means. 's damage was a record that could not be contradicted from the
1030
+ // fired and what its clock means. That damage was a record that could not be contradicted from the
1031
1031
  // artifacts, so the fix is not a better guess — it is saying less, and saying which.
1032
1032
  export function parkCause(res = {}) {
1033
1033
  const RESOLVED_BY = "a live retry — the stored time is a hint about when to look, not the authority on "
@@ -1182,8 +1182,8 @@ async function runPrepared({ procPath, base, job }, qdir, agentId, resumeMeta =
1182
1182
  //
1183
1183
  // The pipeline already made this distinction where it writes its own sentinel — "only the recovery
1184
1184
  // sentinel carried a discriminator … the 2026-07-28 postmortem misread: a recovery park diagnosed
1185
- // as a rate-limit park". The queue-side marker never got it. Same shape as 's terminal fields
1186
- // reaching two writers and not four, and 's stamp reaching the audit path and not the rebuild.
1185
+ // as a rate-limit park". The queue-side marker never got it. Same shape as the terminal fields
1186
+ // reaching two writers and not four, and the stamp reaching the audit path and not the rebuild.
1187
1187
  ...parkCause(res),
1188
1188
  });
1189
1189
  note(`[runner] ${base} → POSTPONED (${parkCause(res).parkKind}; retries at the earlier of ${res.resetsAt ?? "its due time"} and its next probe — no hand-edit needed if it clears early)`);
@@ -113,7 +113,7 @@ export function checkClearanceScopeRules({ job = null, profile = null, resolved
113
113
  // request resolves to no territory" would be a claim about a scope nobody saw. But when the request —
114
114
  // or the saved search it names — DOES name territories, the profile is irrelevant to the count and the
115
115
  // rules still bite. Skipping them there is how a roster-blind deployment (profile_key_unknown → the
116
- // fail-open to prelim) would admit a three-country deep dive at the wall itself (review 2026-07-27).
116
+ // fail-open to clearotron) would admit a three-country deep dive at the wall itself (review 2026-07-27).
117
117
  if (!profileReadable && !scope.length) return { errors, warnings };
118
118
  // Quoted AS WRITTEN, worldwide tokens dropped (a mode is not a place — territory-tiers.mjs answers
119
119
  // which entries those are, so this module and the door cannot disagree about the spelling of
@@ -351,7 +351,7 @@ export function reportIdentityFor(levelOrPolicy) {
351
351
 
352
352
  /** The product's coverage note for the report masthead (charter ruling 1, 2026-07-30: what was bought
353
353
  * must be VISIBLY clear on the page — a reader must never confuse "the same section" in two different
354
- * searches). One plain sentence, NAME-LED per the ruling (match 's registry-name pills: the
354
+ * searches). One plain sentence, NAME-LED per the ruling (match the registry-name pills: the
355
355
  * product's name leads, never a rung on our ladder), stating what THIS search covers and the material
356
356
  * thing it does not. The name comes from the registry join (reportIdentityFor — today's name for what
357
357
  * ran, exactly the doctrine); the coverage clauses come from the run's own frozen COMPONENTS
@@ -678,7 +678,7 @@ export function productAvailability(policy, { built = BUILT, registerCanCount =
678
678
  */
679
679
  export const UNAVAILABLE_NOTE = {
680
680
  unbuilt: "Not part of the current release.",
681
- // `demo` IS DELETED FROM THIS MAP (, owner ruling 2026-08-31 14:47), and
681
+ // `demo` IS DELETED FROM THIS MAP (owner ruling 2026-08-31 14:47), and
682
682
  // deleting it is what makes the reversal structural rather than a filter somebody can undo by
683
683
  // accident. Every client-facing surface renders a product's refusal as `UNAVAILABLE_NOTE[cause]`;
684
684
  // while a sentence sat here for a demo, the greyed control was one `return "demo"` away from coming
@@ -692,7 +692,7 @@ export const UNAVAILABLE_NOTE = {
692
692
  // a baked-in provider name, no CLEAROTRON_* string in scope here, and it says the one thing a reader can
693
693
  // act on — this is a coverage limit, so a newer version will not fix it.
694
694
  //
695
- // `register-not-worldwide` IS DELETED FROM THIS MAP (, owner ruling
695
+ // `register-not-worldwide` IS DELETED FROM THIS MAP (owner ruling
696
696
  // 2026-08-31), and deleting it is what makes the ruling structural rather than a filter somebody can
697
697
  // reverse by accident. Every client-facing surface renders a product's refusal as
698
698
  // `UNAVAILABLE_NOTE[cause]`; while a sentence sat here for that cause, the ruling held only as long as
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: AGPL-3.0-only
2
2
  // Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
3
3
  // skeptic-search.mjs — the skeptic's SANCTIONED READ SURFACE: literal substring search over the run's
4
- // own artifact tree. 's ratification hold, unlock path 1.
4
+ // own artifact tree. That ratification hold, unlock path 1.
5
5
  //
6
6
  // ── WHAT THIS REPLACES, measured and nothing more ───────────────────────────────────────────────────
7
7
  //
@@ -5,7 +5,7 @@ description: The frame-STARVED independent re-derivation for the v3 preliminary
5
5
 
6
6
  ## Purpose
7
7
 
8
- Every other stage in a prelim run reasons *inside* a frame that was set early (at `matter-frame` / `prelim-variants`): the variants to chase, the field that counts as on-field, the sources worth searching. Verification then runs *on* that frame — nothing tests the frame itself. When the frame is mis-scoped, the whole run inherits the miss and the skeptic, reasoning from the same frame, certifies it.
8
+ Every other stage in a clearotron run reasons *inside* a frame that was set early (at `matter-frame` / `prelim-variants`): the variants to chase, the field that counts as on-field, the sources worth searching. Verification then runs *on* that frame — nothing tests the frame itself. When the frame is mis-scoped, the whole run inherits the miss and the skeptic, reasoning from the same frame, certifies it.
9
9
 
10
10
  You are the antidote. You are **deliberately starved of the frame**: you receive only the raw instruction, exactly as the requester wrote it, and you re-derive the threat model **cold**. Because you never see the run's conclusions, you cannot anchor to them. Your output is later **diffed** against what the run actually scoped — the gaps in that diff are the omissions the frame missed.
11
11
 
@@ -17,7 +17,7 @@ cannot reach any other stage's context, because no stage shares one — and it i
17
17
  arranges or can lose. Nothing here spawns a session; sequencing, fan-in and retries are the driver's.
18
18
 
19
19
  The identical skill is also valid **inline** in ad-hoc chat when a conflict / confusability / enforcer
20
- question arises outside a prelim run.
20
+ question arises outside a clearotron run.
21
21
 
22
22
  **Reads** — from the dispatch message (plain markdown, not JSON), for each finding to ground:
23
23
  - the proposed mark and the conflicting mark / owner / entity,
@@ -46,7 +46,7 @@ Boards-of-Appeal decisions — no free API today). EUIPO *register* lookups are
46
46
 
47
47
  Called by `prelim-search` after synthesis flags the risk-relevant findings (Step 4.5). Also triggers in
48
48
  chat when the user raises a trademark conflict, likelihood-of-confusion, or enforcement-history question.
49
- Gated and optional: if this skill is absent, prelim skips Step 4.5 and delivers normally.
49
+ Gated and optional: if this skill is absent, clearotron skips Step 4.5 and delivers normally.
50
50
 
51
51
  ## Model
52
52