clearotron 0.2.1 → 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 (622) hide show
  1. package/.env.example +54 -1
  2. package/CONTRIBUTING.md +3 -3
  3. package/INSTALL.md +53 -49
  4. package/bin/brandowner.mjs +1 -1
  5. package/bin/clearotron.mjs +4 -4
  6. package/bin/connect.mjs +2 -2
  7. package/bin/example.mjs +27 -11
  8. package/bin/grant.mjs +3 -3
  9. package/bin/key.mjs +1 -1
  10. package/bin/onboard.mjs +58 -118
  11. package/bin/start.mjs +22 -25
  12. package/bin/stop.mjs +65 -3
  13. package/bin/update.mjs +7 -7
  14. package/bin/uspto-sync.mjs +1 -1
  15. package/build-info.json +2 -2
  16. package/docs/DELIVERY.md +6 -2
  17. package/docs/architecture/01-product-overview.md +2 -2
  18. package/docs/architecture/02-architecture.md +2 -2
  19. package/docs/architecture/04-configuration-reference.md +6 -3
  20. package/docs/architecture/05-config-governance.md +38 -5
  21. package/docs/architecture/06-operations-runbook.md +13 -1
  22. package/docs/architecture/09-security-and-data.md +1 -1
  23. package/docs/decisions/0004-documentation-structure.md +1 -1
  24. package/driver/CHANGELOG.md +65 -1
  25. package/driver/README.md +2 -2
  26. package/driver/ask-ledger.mjs +3 -3
  27. package/driver/authority-trees.mjs +1 -1
  28. package/driver/call-capture.mjs +1 -1
  29. package/driver/card-frame.mjs +1 -1
  30. package/driver/case-law-ledger.mjs +1 -1
  31. package/driver/claim-liveness.mjs +1 -1
  32. package/driver/common-law-receipts.mjs +1 -1
  33. package/driver/commonlaw-carry.mjs +1 -1
  34. package/driver/config-inventory.mjs +1 -1
  35. package/driver/connotation-search.mjs +12 -12
  36. package/driver/contract-audit.mjs +5 -5
  37. package/driver/contract-dictation-registry.mjs +4 -4
  38. package/driver/contract-dictation.mjs +2 -2
  39. package/driver/contract-e3-backlog.mjs +6 -6
  40. package/driver/contract-vocabulary.mjs +3 -3
  41. package/driver/corrections-feedforward.mjs +1 -1
  42. package/driver/coverage-form-io.mjs +2 -2
  43. package/driver/coverage-form.mjs +4 -4
  44. package/driver/coverage-ledger.mjs +3 -3
  45. package/driver/coverage-union.mjs +1 -1
  46. package/driver/declination-call.mjs +35 -3
  47. package/driver/declination-duty.mjs +1 -1
  48. package/driver/deliver-trigger.sh +3 -3
  49. package/driver/deploy-live-run-guard.mjs +6 -2
  50. package/driver/dev-portal.mjs +1 -1
  51. package/driver/disposition-call.mjs +4 -4
  52. package/driver/disposition-tool.mjs +4 -4
  53. package/driver/disposition-union.mjs +2 -2
  54. package/driver/doc-constants.mjs +1 -1
  55. package/driver/door-gates.mjs +2 -2
  56. package/driver/doubt-selection.mjs +2 -2
  57. package/driver/drainer-identity.mjs +1 -1
  58. package/driver/driver.config.mjs +63 -11
  59. package/driver/e2e-rounds.mjs +2 -2
  60. package/driver/effort-model.mjs +2 -2
  61. package/driver/engine/anthropic-agent.mjs +24 -24
  62. package/driver/engine/auth.mjs +1 -1
  63. package/driver/engine/common.mjs +1 -1
  64. package/driver/engine/deny-authority-write.mjs +1 -1
  65. package/driver/engine/jx-turn.mjs +1 -1
  66. package/driver/engine/mcp/clarivate-server.mjs +1 -1
  67. package/driver/engine/mcp/corsearch-server.mjs +1 -1
  68. package/driver/engine/mcp/declination-server.mjs +1 -1
  69. package/driver/engine/mcp/dispositions-server.mjs +1 -1
  70. package/driver/engine/mcp/euipo-server.mjs +1 -1
  71. package/driver/engine/mcp/fetch-server.mjs +1 -1
  72. package/driver/engine/mcp/free-tier-server.mjs +2 -2
  73. package/driver/engine/mcp/gather-config.mjs +11 -11
  74. package/driver/engine/mcp/perplexity-server.mjs +1 -1
  75. package/driver/engine/mcp/recording-server.mjs +8 -4
  76. package/driver/engine/mcp/signa-server.mjs +1 -1
  77. package/driver/engine/mcp/uspto-local-server.mjs +1 -1
  78. package/driver/engine/openai-agent.mjs +2 -2
  79. package/driver/engine-build.mjs +2 -2
  80. package/driver/enqueue-schema.mjs +2 -2
  81. package/driver/enqueue.mjs +1 -1
  82. package/driver/envelope-settle.mjs +1 -1
  83. package/driver/evidence-claim-invariant.mjs +2 -2
  84. package/driver/findings-model.mjs +8 -8
  85. package/driver/floor-duty.mjs +1 -1
  86. package/driver/form-neighbourhood.mjs +1 -1
  87. package/driver/framework.mjs +1 -1
  88. package/driver/gateway.mjs +28 -23
  89. package/driver/grounds-grammar.mjs +1 -1
  90. package/driver/hit-list.mjs +1 -1
  91. package/driver/jurisdiction-systems.mjs +1 -1
  92. package/driver/jx-lanes.mjs +1 -1
  93. package/driver/jx-units.mjs +1 -1
  94. package/driver/jx.mjs +3 -3
  95. package/driver/knockout-assess-record.mjs +5 -1
  96. package/driver/narrative-refutation-record.mjs +3 -3
  97. package/driver/numeric-setting.mjs +1 -1
  98. package/driver/owner-use-check.mjs +184 -0
  99. package/driver/package.json +2 -2
  100. package/driver/phase0.mjs +1 -1
  101. package/driver/pipeline-knockout.mjs +52 -4
  102. package/driver/pipeline.mjs +175 -62
  103. package/driver/placement-diff.mjs +2 -2
  104. package/driver/placement-form.mjs +4 -4
  105. package/driver/placement-union.mjs +1 -1
  106. package/driver/portal-acks.mjs +1 -1
  107. package/driver/portal-config-view.mjs +2 -2
  108. package/driver/portal-local-auth.mjs +1 -1
  109. package/driver/portal-report.mjs +6 -6
  110. package/driver/portal-service.mjs +15 -15
  111. package/driver/predelivery-lint.mjs +28 -10
  112. package/driver/prelim-variants-record.mjs +2 -2
  113. package/driver/profile-page.html +1 -1
  114. package/driver/profile-selection.mjs +1 -1
  115. package/driver/profile-service.mjs +2 -2
  116. package/driver/profiles.mjs +1 -1
  117. package/driver/progress.mjs +6 -6
  118. package/driver/provider-usage.mjs +1 -1
  119. package/driver/publish/demo-marking.mjs +1 -1
  120. package/driver/publish/index.mjs +47 -6
  121. package/driver/publish/knockout.mjs +36 -14
  122. package/driver/publish/parse.mjs +4 -4
  123. package/driver/publish/publish-inputs.mjs +2 -2
  124. package/driver/publish/register-presence.mjs +1 -1
  125. package/driver/publish/render-knockout.mjs +198 -31
  126. package/driver/publish/report-data.mjs +13 -3
  127. package/driver/queue-watch-probe.mjs +1 -1
  128. package/driver/queue-watch-verdict.mjs +1 -1
  129. package/driver/recall-reconciliation.mjs +1 -1
  130. package/driver/recipe-service.mjs +1 -1
  131. package/driver/record-carry.mjs +5 -5
  132. package/driver/recording-agreement.mjs +3 -3
  133. package/driver/reference-score.mjs +7 -7
  134. package/driver/refusal-bound.mjs +3 -3
  135. package/driver/register-availability.mjs +2 -2
  136. package/driver/register-count.mjs +1 -1
  137. package/driver/register-grant-vocabulary.mjs +2 -2
  138. package/driver/register-plan.mjs +8 -8
  139. package/driver/register-records.mjs +2 -2
  140. package/driver/registry-fidelity.mjs +3 -3
  141. package/driver/remedy-accounting.mjs +1 -1
  142. package/driver/repair-composers.mjs +2 -2
  143. package/driver/repair-digest.mjs +3 -3
  144. package/driver/repairs.mjs +6 -6
  145. package/driver/replay-archive.mjs +2 -0
  146. package/driver/report-card-record.mjs +2 -2
  147. package/driver/result-noun-fields.mjs +10 -3
  148. package/driver/run-economics.mjs +2 -2
  149. package/driver/run-integrity.mjs +1 -1
  150. package/driver/runner.mjs +22 -22
  151. package/driver/scope-rules.mjs +1 -1
  152. package/driver/search-policy.mjs +3 -3
  153. package/driver/skeptic-search.mjs +1 -1
  154. package/driver/skills/blind-frame/SKILL.md +1 -1
  155. package/driver/skills/case-law-citation/SKILL.md +2 -2
  156. package/driver/skills/knockout-assess/SKILL.md +10 -4
  157. package/driver/skills/prelim-search/SKILL.md +2 -2
  158. package/driver/skills/prelim-search/template-formatting.md +1 -1
  159. package/driver/skills/prelim-search/templates/email/generic.md +1 -1
  160. package/driver/skills/prelim-search/worked-examples.md +1 -1
  161. package/driver/skills/prelim-variants/SKILL.md +2 -2
  162. package/driver/stage-context.mjs +1 -1
  163. package/driver/stages-knockout.mjs +55 -4
  164. package/driver/stages.mjs +97 -40
  165. package/driver/stray-artifacts.mjs +2 -2
  166. package/driver/suite-census.json +146 -32
  167. package/driver/synthesis-record.mjs +1 -1
  168. package/driver/systemd/clearotron-client-mcp.service +1 -1
  169. package/driver/systemd/clearotron-portal.service +1 -1
  170. package/driver/systemd/render-units.mjs +1 -1
  171. package/driver/tokens.mjs +1 -1
  172. package/driver/tool-calls.mjs +1 -1
  173. package/driver/turnaround-bands.mjs +1 -1
  174. package/driver/unit-file-drift.mjs +1 -1
  175. package/driver/unit-inventory.mjs +121 -61
  176. package/driver/unit-state-verdict.mjs +20 -12
  177. package/driver/verify-knockout.mjs +10 -2
  178. package/driver/verify.mjs +12 -12
  179. package/driver/whatif-memo-run.mjs +46 -5
  180. package/driver/whatif-queue.mjs +1 -1
  181. package/driver/whatif-worker.mjs +1 -1
  182. package/mcp-server/CHANGELOG.md +4 -0
  183. package/mcp-server/README.md +3 -3
  184. package/mcp-server/http-server.mjs +44 -1
  185. package/mcp-server/key-socket.mjs +184 -0
  186. package/mcp-server/lib/audit-view.mjs +69 -2
  187. package/mcp-server/lib/brief.mjs +15 -0
  188. package/mcp-server/lib/driver.mjs +7 -1
  189. package/mcp-server/lib/events.mjs +1 -1
  190. package/mcp-server/lib/http-handler.mjs +1 -1
  191. package/mcp-server/lib/knockout.mjs +435 -0
  192. package/mcp-server/lib/ops.mjs +4 -4
  193. package/mcp-server/lib/options.mjs +1 -1
  194. package/mcp-server/lib/plan.mjs +1 -1
  195. package/mcp-server/lib/runs.mjs +1 -1
  196. package/mcp-server/lib/scrub.mjs +1 -1
  197. package/mcp-server/lib/whatif.mjs +3 -3
  198. package/mcp-server/mint-token.mjs +1 -1
  199. package/mcp-server/package.json +2 -2
  200. package/mcp-server/server.mjs +76 -11
  201. package/package.json +3 -3
  202. package/portal-ui/package.json +1 -1
  203. package/providers/_shared/enumerate.mjs +1 -1
  204. package/providers/_shared/ledger-path.mjs +3 -3
  205. package/providers/_shared/ledger.mjs +1 -1
  206. package/providers/_shared/result-shape.mjs +3 -3
  207. package/providers/_shared/term-shape.mjs +1 -1
  208. package/providers/corsearch/src/core.js +1 -1
  209. package/providers/jx-subclass/BUILDING.md +1 -1
  210. package/providers/oauth-mcp-bridge/CHANGELOG.md +4 -0
  211. package/providers/oauth-mcp-bridge/package.json +1 -1
  212. package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
  213. package/scripts/README.md +1 -1
  214. package/scripts/added-reference-check.mjs +29 -1
  215. package/scripts/ai-page-render-check.mjs +1 -1
  216. package/scripts/authority-boundary-probe.mjs +1 -1
  217. package/scripts/backfill-started-at.mjs +1 -1
  218. package/scripts/citation-line-check.mjs +3 -3
  219. package/scripts/clearances-render-check.mjs +3 -3
  220. package/scripts/compare.mjs +2 -2
  221. package/scripts/composer-render-check.mjs +6 -6
  222. package/scripts/contract-dictation-scan.mjs +2 -2
  223. package/scripts/dead-names.mjs +1 -1
  224. package/scripts/drain-preflight.mjs +5 -5
  225. package/scripts/e2e-unread-terminals.mjs +1 -1
  226. package/scripts/e2e.mjs +8 -8
  227. package/scripts/env-audit.mjs +7 -7
  228. package/scripts/env-classify.mjs +139 -15
  229. package/scripts/freeze-example-run.mjs +3 -3
  230. package/scripts/head-arrived-gated.mjs +1 -1
  231. package/scripts/headless-page.mjs +51 -2
  232. package/scripts/home-render-check.mjs +2 -2
  233. package/scripts/live-surface-check.mjs +92 -19
  234. package/scripts/main-health.mjs +1 -1
  235. package/scripts/merge-presence-check.mjs +3 -3
  236. package/scripts/mint-suite-census.mjs +6 -6
  237. package/scripts/nightly-notice.mjs +1 -1
  238. package/scripts/portal-lifecycle-check.mjs +3 -3
  239. package/scripts/reconcile-runs.mjs +1 -1
  240. package/scripts/release-await-cut.mjs +6 -4
  241. package/scripts/release-version-pr-checks.mjs +1 -1
  242. package/scripts/release-version.mjs +2 -2
  243. package/scripts/render-check.mjs +66 -7
  244. package/scripts/report-frame-check.mjs +1 -1
  245. package/scripts/report-screenshot.mjs +1 -1
  246. package/scripts/revisit-render-check.mjs +1 -1
  247. package/scripts/score.mjs +4 -4
  248. package/scripts/strip-tracker-citations.mjs +116 -0
  249. package/scripts/test-run.mjs +3 -3
  250. package/scripts/third-party-notices.mjs +3 -3
  251. package/scripts/travelling-predicates.mjs +3 -3
  252. package/scripts/unexecuted-asserts.mjs +2 -2
  253. package/scripts/verify-publishable.mjs +2 -2
  254. package/scripts/write-up-form-census.mjs +1 -1
  255. package/shared/access-audience.mjs +1 -1
  256. package/shared/brand.mjs +13 -13
  257. package/shared/citation-scan.mjs +1 -1
  258. package/shared/client-door.mjs +7 -7
  259. package/shared/driver-dir.mjs +1 -1
  260. package/shared/env-aliases.mjs +0 -48
  261. package/shared/env-local.mjs +1 -1
  262. package/shared/identifier-scan.mjs +3 -3
  263. package/shared/invocation.mjs +1 -1
  264. package/shared/names-in-force.mjs +2 -0
  265. package/shared/product-owned-names.mjs +1 -1
  266. package/shared/register-selection.mjs +1 -1
  267. package/shared/scope.mjs +5 -5
  268. package/shared/server-units.mjs +4 -4
  269. package/shared/store-in-repo.mjs +2 -2
  270. package/shared/suite-census.mjs +4 -4
  271. package/shared/tty-style.mjs +1 -1
  272. package/shared/uspto-index-size.mjs +1 -1
  273. package/shared/vacuous-pass.mjs +1 -1
  274. package/skills/clearotron-account/SKILL.md +42 -13
  275. package/driver/systemd/prelim-driver.path +0 -69
  276. package/driver/systemd/prelim-driver.service +0 -86
  277. package/driver/systemd/prelim-driver.timer +0 -14
  278. package/driver/systemd/prelim-outbox.path +0 -27
  279. package/driver/systemd/prelim-outbox.service +0 -37
  280. package/driver/systemd/prelim-outbox.timer +0 -21
  281. package/node_modules/exceljs/README_zh.md +0 -2878
  282. package/node_modules/exceljs/dist/LICENSE +0 -22
  283. package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
  284. package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
  285. package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
  286. package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
  287. package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
  288. package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
  289. package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
  290. package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
  291. package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
  292. package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
  293. package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
  294. package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
  295. package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
  296. package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
  297. package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
  298. package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
  299. package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
  300. package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
  301. package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
  302. package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
  303. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
  304. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
  305. package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
  306. package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
  307. package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
  308. package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
  309. package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
  310. package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
  311. package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
  312. package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
  313. package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
  314. package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
  315. package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
  316. package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
  317. package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
  318. package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
  319. package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
  320. package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
  321. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
  322. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
  323. package/node_modules/exceljs/dist/es5/index.js +0 -15
  324. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
  325. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
  326. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
  327. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
  328. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
  329. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
  330. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
  331. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
  332. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
  333. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
  334. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
  335. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
  336. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
  337. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
  338. package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
  339. package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
  340. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
  341. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
  342. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
  343. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
  344. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
  345. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
  346. package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
  347. package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
  348. package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
  349. package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
  350. package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
  351. package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
  352. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
  353. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
  354. package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
  355. package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
  356. package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
  357. package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
  358. package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
  359. package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
  360. package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
  361. package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
  362. package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
  363. package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
  364. package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
  365. package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
  366. package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
  367. package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
  368. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
  369. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
  370. package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
  371. package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
  372. package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
  373. package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
  374. package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
  375. package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
  376. package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
  377. package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
  378. package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
  379. package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
  380. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
  381. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
  382. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
  383. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
  384. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
  385. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
  386. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
  387. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
  388. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
  389. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
  390. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
  391. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
  392. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
  393. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
  394. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
  395. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
  396. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
  397. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
  398. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
  399. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
  400. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
  401. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
  402. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
  403. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
  404. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
  405. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
  406. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
  407. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
  408. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
  409. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
  410. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
  411. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
  412. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
  413. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
  414. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
  415. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
  416. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
  417. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
  418. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
  419. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
  420. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
  421. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
  422. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
  423. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
  424. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
  425. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
  426. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
  427. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
  428. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
  429. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
  430. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
  431. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
  432. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
  433. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
  434. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
  435. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
  436. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
  437. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
  438. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
  439. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
  440. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
  441. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
  442. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
  443. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
  444. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
  445. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
  446. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
  447. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
  448. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
  449. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
  450. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
  451. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
  452. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
  453. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
  454. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
  455. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
  456. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
  457. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
  458. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
  459. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
  460. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
  461. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
  462. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
  463. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
  464. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
  465. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
  466. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
  467. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
  468. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
  469. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
  470. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
  471. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
  472. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
  473. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
  474. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
  475. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
  476. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
  477. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
  478. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
  479. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
  480. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
  481. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
  482. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
  483. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
  484. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
  485. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
  486. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
  487. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
  488. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
  489. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
  490. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
  491. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
  492. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
  493. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
  494. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
  495. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
  496. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
  497. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
  498. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
  499. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
  500. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
  501. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
  502. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
  503. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
  504. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
  505. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
  506. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
  507. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
  508. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
  509. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
  510. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
  511. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
  512. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
  513. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
  514. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
  515. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
  516. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
  517. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
  518. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
  519. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
  520. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
  521. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
  522. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
  523. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
  524. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
  525. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
  526. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
  527. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
  528. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
  529. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
  530. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
  531. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
  532. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
  533. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
  534. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
  535. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
  536. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
  537. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
  538. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
  539. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
  540. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
  541. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
  542. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
  543. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
  544. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
  545. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
  546. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
  547. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
  548. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
  549. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
  550. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
  551. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
  552. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
  553. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
  554. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
  555. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
  556. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
  557. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
  558. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
  559. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
  560. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
  561. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
  562. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
  563. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
  564. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
  565. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
  566. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
  567. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
  568. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
  569. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
  570. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
  571. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
  572. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
  573. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
  574. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
  575. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
  576. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
  577. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
  578. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
  579. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
  580. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
  581. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
  582. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
  583. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
  584. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
  585. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
  586. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
  587. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
  588. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
  589. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
  590. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
  591. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
  592. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
  593. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
  594. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
  595. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
  596. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
  597. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
  598. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
  599. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
  600. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
  601. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
  602. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
  603. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
  604. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
  605. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
  606. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
  607. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
  608. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
  609. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
  610. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
  611. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
  612. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
  613. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
  614. package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
  615. package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
  616. package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
  617. package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
  618. package/node_modules/exceljs/dist/exceljs.js +0 -59900
  619. package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
  620. package/node_modules/exceljs/dist/exceljs.min.js +0 -45
  621. package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
  622. package/scripts/deploy-test.sh +0 -309
@@ -2,7 +2,7 @@
2
2
  // Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
3
3
  // declination-call.mjs — a record that reached the findings surface leaves it BY A STATED DECISION.
4
4
  //
5
- // ── THE DEFECT THIS CLOSES (, and 's half of the same seam) ────────────────────────────────
5
+ // ── THE DEFECT THIS CLOSES (and the half of the same seam) ────────────────────────────────
6
6
  //
7
7
  // `record-carry.json` on R2 round `e48f7056` read `unreasoned: 0` and was telling the truth in the weak
8
8
  // sense only: every drop had a LABEL, and on 102 of them the label was inferred from where the record
@@ -70,7 +70,7 @@
70
70
  // that a note describing the material instead of stating a ground is the defect one artifact over.
71
71
  // Measured against seven realistic declinations before anything was built on it, that classifier refused
72
72
  // ALL SEVEN as `unclear` — including "already delivered as finding 4 under the EUIPO record for the same
73
- // proprietor". It is not a bug in the classifier. It answers a different question: 's notes must say
73
+ // proprietor". It is not a bug in the classifier. It answers a different question: the notes must say
74
74
  // what could NOT BE ESTABLISHED about a charged rating, and a declination says why a record does not earn
75
75
  // a line. Two different speech acts, and a grammar built for one rejects the other on sight.
76
76
  //
@@ -210,6 +210,38 @@ export function contradictionFor(reason, row, scope) {
210
210
  + `own-right or duplicate-of-delivered.`;
211
211
  }
212
212
 
213
+ // ── ECONOMY IS NOT A REASON ABOUT A LIVE IN-CLASS MARK (owner ruling 2026-09-07) ─────────────────
214
+ //
215
+ // `not-worth-the-line` means "it fits none of the four manageable categories and is not relevant
216
+ // enough to drive the read". That is a statement about the REPORT'S BUDGET, not about the record. On a
217
+ // live registration inside one of the matter's own instructed classes it is the one thing the seat may
218
+ // not say: the reader is paying for a judgment about that mark, and "there was no room" is not one.
219
+ //
220
+ // Measured on the run that prompted the ruling: 26 of 49 declinations at this seam were this token,
221
+ // and two of the lawyer's own reference marks were among them — one carried on every earlier run.
222
+ //
223
+ // ✕ WHY THIS IS NOT THE REFUSAL THAT WAS REMOVED BELOW, and the difference is the whole reason it can
224
+ // stand. That one refused `unrelated-goods` and `off-field-not-major` on class overlap, fired on 170
225
+ // of 170 records, and made the ENGINE decide relatedness — the lawyer's call. This one refuses ONE
226
+ // token and leaves every substantive reason available. The seat may still decline this record: it may
227
+ // say the goods are unrelated, that it is off-field and not a major brand, that it is the applicant's
228
+ // own right, or that it is already delivered. What it may no longer do is decline it for taking up
229
+ // space. The refusal is about the SHAPE of the reason, not about whether the record is relevant, so
230
+ // the relatedness judgment stays exactly where it was.
231
+ //
232
+ // It does effectively retire this token for live in-class records, because the sweep is already scoped
233
+ // to the instructed classes. That was put to the owner as the consequence and ruled anyway.
234
+ if (reason === "not-worth-the-line" && isLive(row?.status) && shared.length) {
235
+ return `this record is ${String(row?.status ?? "").trim() || "live"} and sits in class `
236
+ + `${shared.join(", ")} — one of the matter's own instructed classes. "not worth the line" is a `
237
+ + `statement about the report's budget, not about this mark, and a live registration in an `
238
+ + `instructed class is never omitted for want of room. Either carry it, or decline it on something `
239
+ + `true of THIS MARK: unrelated-goods if its goods do not meet the matter's, off-field-not-major `
240
+ + `if it is off-field and not a major brand, an active dispute or a well-known enforcer, `
241
+ + `own-right if it belongs to the applicant, duplicate-of-delivered if the same right is already `
242
+ + `reported. Say what makes this mark distant, or give it its line.`;
243
+ }
244
+
213
245
  // THERE IS NO CLASS-OVERLAP REFUSAL, AND THE FIRST DRAFT HAD ONE. It refused `unrelated-goods` and
214
246
  // `off-field-not-major` over any record sharing one of the matter's filed classes, on the reasoning
215
247
  // that the driver holds both class lists and they disagree with the stated reason.
@@ -231,7 +263,7 @@ export function contradictionFor(reason, row, scope) {
231
263
  }
232
264
 
233
265
  /**
234
- * THE SEAM'S DECISION, AS A PURE FUNCTION — 's guarantee, in the one place it can be asserted.
266
+ * THE SEAM'S DECISION, AS A PURE FUNCTION — the guarantee, in the one place it can be asserted.
235
267
  *
236
268
  * `recordSynthesisSeam` is module-private in pipeline.mjs and always will be; it does file I/O and takes
237
269
  * a run context. The JUDGMENT it makes about each discarded record is this, and it is extracted so a test
@@ -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
  // declination-duty.mjs — every record handed to synthesis left by a NAMED EXIT, or the run says which
4
- // ones did not. ('s missing half; the R2 round on is the incident.)
4
+ // ones did not. (the missing half; the R2 round on is the incident.)
5
5
  //
6
6
  // THE RULE IS ALREADY DICTATED, AND IT WAS NEVER CHECKED. synthesis's own contract states it in one
7
7
  // line — "a record that reached your findings surface leaves this stage as a finding in findings.json
@@ -4,7 +4,7 @@
4
4
  # v2 (pure-MCP courier, docs/DELIVERY.md): the outbox carries EVERY requester-facing event — delivered
5
5
  # markers (body = the forwarding agent id) AND self-contained JSON packets (run-failed / intake-rejected /
6
6
  # duplicate-skipped / late-bind-ack, each with an "agent" field). For each DISTINCT agent named across
7
- # pending events, wake it ONCE to run the prelim-deliver skill, which routes everything over the ops MCP
7
+ # pending events, wake it ONCE to run the clearotron-deliver skill, which routes everything over the ops MCP
8
8
  # (list_outbox_events → get_delivery_packet → send → mark_sent/ack_event).
9
9
  #
10
10
  # THE TRIGGER NEVER DELETES EVENTS: consumption belongs to mark_sent (delivered) and ack_event (the rest),
@@ -35,7 +35,7 @@ DRAIN_WAIT="${CLEAROTRON_OUTBOX_DRAIN_WAIT:-180}"
35
35
  # (openclaw models); set CLEAROTRON_OUTBOX_WAKE_MODEL="" to fall back to the agent default. `-` (not `:-`) so
36
36
  # an explicit empty value disables the override, while unset keeps the Haiku default.
37
37
  WAKE_MODEL="${CLEAROTRON_OUTBOX_WAKE_MODEL-anthropic/claude-haiku-4-5}"
38
- MSG="The trademark engine's outbox has pending events. Run the prelim-deliver skill now: list_outbox_events, route each event (delivered → get_delivery_packet + send VERBATIM + mark_sent; every other kind → relay its text + ack_event)."
38
+ MSG="The trademark engine's outbox has pending events. Run the clearotron-deliver skill now: list_outbox_events, route each event (delivered → get_delivery_packet + send VERBATIM + mark_sent; every other kind → relay its text + ack_event)."
39
39
 
40
40
  # THE WALL, RESOLVED ONCE AND NAMED WHEN IT IS ABSENT (tracker issue 820).
41
41
  #
@@ -112,7 +112,7 @@ for agent in "${!by_agent[@]}"; do
112
112
  continue
113
113
  fi
114
114
 
115
- echo "prelim-outbox: waking $agent to run prelim-deliver"
115
+ echo "prelim-outbox: waking $agent to run clearotron-deliver"
116
116
  # timeout(1) is the enforced wall: the 2026-07-04 incident proved the CLI's own --timeout does not
117
117
  # guarantee process EXIT (the agent turn finished; the process idled 19h and wedged the lane).
118
118
  # SIGTERM at 840s (inside the unit's TimeoutStartSec budget so the failure is OURS and logged),
@@ -37,7 +37,7 @@ function listDir(dir) {
37
37
  * Everything holding this deployment open, named.
38
38
  *
39
39
  * @param {object} a
40
- * @param {string} a.queueDirs EVERY queue tree, not the one this box thinks it uses. 's lesson:
40
+ * @param {string} a.queueDirs EVERY queue tree, not the one this box thinks it uses. That lesson:
41
41
  * a headless CLEAROTRON_QUEUE_DIR and the agent workspace queues are both
42
42
  * real, and a guard that reads one of them passes over work sitting in
43
43
  * the other.
@@ -66,7 +66,11 @@ export function liveRunHolds({ queueDirs = [], lockDir = null, isAlive = claimer
66
66
  const { names, error } = listDir(lockDir);
67
67
  if (error) unreadable.push({ path: lockDir, error });
68
68
  for (const n of names) {
69
- if (!n.startsWith("slot-") || !n.endsWith(".lock")) continue;
69
+ // `draw-` alongside `slot-`: a direct --experiment invocation is work on this box and the guard's
70
+ // question is whether the box is busy, so a draw has to answer yes. It holds its own prefix rather
71
+ // than a run slot, because a run slot is admission-controlled and taking one would make a draw wait
72
+ // behind clearances — changing what a draw IS in order to fix what this can see.
73
+ if (!/^(slot|draw)-/.test(n) || !n.endsWith(".lock")) continue;
70
74
  let raw = null;
71
75
  try { raw = readFileSync(join(lockDir, n), "utf8"); } catch { continue; } // released mid-scan
72
76
  const pid = Number(String(raw).split(":")[0]);
@@ -373,7 +373,7 @@ export function startPortal({ poolRoot = null, port = 18899, host = "127.0.0.1",
373
373
  if (url.pathname === "/dev/enqueue" && req.method === "POST") {
374
374
  let body;
375
375
  try { body = await readJsonBody(req); } catch (e) { return sendJson(res, 400, { ok: false, error: e.message }); }
376
- // `searchLevel` IS REFUSED, NOT DROPPED. This form offered a "Search level" menu (prelim · Depth 4
376
+ // `searchLevel` IS REFUSED, NOT DROPPED. This form offered a "Search level" menu (clearotron · Depth 4
377
377
  // / knockout · Depth 1) and posted the field to an assembler that stopped reading it, so picking
378
378
  // "knockout" enqueued a job naming no product at all and ran whatever the account default or the
379
379
  // request's own territories named — a silent product substitution at a live door, from a control
@@ -145,7 +145,7 @@ export const CALL_REFUSALS = Object.freeze([
145
145
  "obstacle_absent", // an obstacle was claimed with nothing said about what blocks the proof
146
146
  ]);
147
147
 
148
- // The proof-of-reading arms, and ONLY those. 's obstacle waives this duty and no other, so this set
148
+ // The proof-of-reading arms, and ONLY those. That obstacle waives this duty and no other, so this set
149
149
  // is the exact boundary between "you have not proved you read it" and "you have not judged it" — derived
150
150
  // by prefix from the vocabulary above rather than retyped, so a new evidence arm joins it automatically
151
151
  // and a new judgment arm cannot wander in.
@@ -183,7 +183,7 @@ export const RETIRED_CALL_REFUSALS = Object.freeze([
183
183
  // and it must never appear in the same bucket, because the two demand opposite responses — one says
184
184
  // "change your answer", the other says "stop asking, it is ours".
185
185
  //
186
- // 's leading unproven hypothesis lives here. The accumulator's rows and candidates are REGENERATED
186
+ // That leading unproven hypothesis lives here. The accumulator's rows and candidates are REGENERATED
187
187
  // on every pass, and `seatFields` re-resolves an already-resolved row against whatever the current pass
188
188
  // holds (`disposition-union.mjs:98`, which discards `resolveCandidate`'s `state`). If that second
189
189
  // resolution misses, a row the tool accepted lands with an empty receipt and reads as unruled. This
@@ -442,7 +442,7 @@ export function detectRulingDrift(ledger) {
442
442
  *
443
443
  * ── WHY THE TOTAL IS RETURNED TOO ───────────────────────────────────────────────────────────────────
444
444
  *
445
- * 's warning sits in this exact number: filtering it after a split reported
445
+ * That warning sits in this exact number: filtering it after a split reported
446
446
  * `obligationsNeverAddressed: 0` on the run that died owing 75. So the total comes back as its own field
447
447
  * and the two parts must sum to it. Nothing can go to zero without a companion number rising to meet it.
448
448
  *
@@ -822,7 +822,7 @@ export function validateDispositionCall(rows, recorded, { told = null } = {}) {
822
822
  /**
823
823
  * CAN THIS ROW'S EVIDENCE DEMAND EVER BE SATISFIED?
824
824
  *
825
- * — the agreement guard for the `evidence_owed` seam, and it is 's shape one module over. The
825
+ * — the agreement guard for the `evidence_owed` seam, and it is the shape one module over. The
826
826
  * demand (`quote_required`) is SET at form-build against candidates that carried text; the satisfaction is
827
827
  * enforced by `segmentBinding` against the candidate's snippet AS IT IS NOW. Between the two, candidates
828
828
  * regenerate. When they come back without quotable passages the flag survives and its justification does
@@ -19,7 +19,7 @@
19
19
  // decided, which is the thing already in the record, rather than what we were given.
20
20
  //
21
21
  // THE INDEX IS WRITTEN BY THE RECEIVER, NEVER BY THE CONSUMER. This handler writes both the payload and
22
- // the line naming it, in that order, before it validates anything. 's three snapshot sites all
22
+ // the line naming it, in that order, before it validates anything. That three snapshot sites all
23
23
  // discard their return, so no attempt row names its snapshot and correlation is by mtime — which is
24
24
  // precisely how the union discard had to be diagnosed. A consumer-written index can only ever name the
25
25
  // payloads the consumer got to; a call that dies mid-flight writes no index line, and its absence is
@@ -46,7 +46,7 @@ const CALLS_DIR = "disposition-calls";
46
46
  /**
47
47
  * The obligations sidecar — what the seat was TOLD it owed, written when the block was rendered.
48
48
  *
49
- * 's rule, applied to this filename: the path is derived ONCE and imported, never re-derived at the
49
+ * That rule, applied to this filename: the path is derived ONCE and imported, never re-derived at the
50
50
  * other end. perplexity-server.mjs writes this file and this module reads it; two spellings of one name
51
51
  * is the drift cost weeks, and the reader would fail OPEN — it would simply find no file, fall back
52
52
  * to the live derivation, and renumber the seat's page without anyone being told.
@@ -338,7 +338,7 @@ export function outstandingWithAnchors(canonicalRows, formRows) {
338
338
  * Record one typed call. The tool handler's core.
339
339
  *
340
340
  * `spec` is the DRIVER-WRITTEN grid spec — the same file the grid tool was given. The seat names no path
341
- * of its own: 's rule is that the path is the driver's, taken from the spec it wrote, because two
341
+ * of its own: the rule is that the path is the driver's, taken from the spec it wrote, because two
342
342
  * derivations of one filename is the drift that cost weeks.
343
343
  */
344
344
  export function recordDispositions(spec, received, { now = () => new Date().toISOString() } = {}) {
@@ -415,7 +415,7 @@ export function recordDispositions(spec, received, { now = () => new Date().toIS
415
415
  // accumulator" are two different facts and nothing compared them.
416
416
  //
417
417
  // This compares them, per call, and records any disagreement as OURS. It is deliberately not a throw:
418
- // 's silent-drop hypothesis is unproven, and an instrument that crashes the run it is measuring
418
+ // That silent-drop hypothesis is unproven, and an instrument that crashes the run it is measuring
419
419
  // cannot measure it. If the count is always zero the hypothesis is dead and we will be able to say so
420
420
  // from the artifact — which is the point of building it before the cure.
421
421
  const landed = new Map((Array.isArray(u.form?.rows) ? u.form.rows : [])
@@ -21,7 +21,7 @@
21
21
  // definition of "ruled" and — since the review of this build — no row LOOKUP either. `obligationRows`,
22
22
  // `formRowFinder` and `isRuled` all come from connotation-search.mjs, the same code the GATE
23
23
  // judges with. A union that preserved a ruling the gate would refuse, or dropped one it would accept,
24
- // would make the outstanding count mean two different things in two places, which is 's defect
24
+ // would make the outstanding count mean two different things in two places, which is the defect
25
25
  // exactly: one calculation running twice, silently disagreeing, both copies looking correct. The lookup
26
26
  // had been written out twice — here and in the gate — and both copies carried the same punctuation defect.
27
27
 
@@ -160,7 +160,7 @@ export function unionDispositionForm(prior, submitted, ob, { half = null, genera
160
160
  const findSubmitted = formRowFinder(submitted, form.rows);
161
161
  // — a park is STICKY, for the same reason a ruling is. This module exists because the outstanding
162
162
  // count churned instead of shrinking (see the header): a park that could lift would let the count rise
163
- // again, which is 's defect in new clothes. So the prior form's park is authority, and `parkedIds`
163
+ // again, which is the defect in new clothes. So the prior form's park is authority, and `parkedIds`
164
164
  // only ever ADDS.
165
165
  const newlyParked = new Set((parkedIds ?? []).map((x) => String(x ?? "").trim()).filter(Boolean));
166
166
  let ruled = 0, carried = 0, parked = 0;
@@ -350,7 +350,7 @@ export const DOC_CONSTANTS = [
350
350
  doc: "providers/uspto-local/README.md",
351
351
  pattern: /last successful sync goes past (\d+) hours/,
352
352
  },
353
- // The same figure, twice in the same file — 's shape, and the reason each occurrence is a row.
353
+ // The same figure, twice in the same file — the shape, and the reason each occurrence is a row.
354
354
  {
355
355
  constant: "FRESHNESS_HOURS.sync",
356
356
  source: { file: "providers/uspto-local/src/index-store.js", symbol: "FRESHNESS_HOURS.sync" },
@@ -97,7 +97,7 @@ export function gateResolvedRequest({ job = null, profile = null, resolved = nul
97
97
  // A resolution that could not be taken is not a refusal — see the fail-open note in the header.
98
98
  if (!resolved) return out;
99
99
  // A CLARIFY IS RELAYED VERBATIM. It is already an actionable sentence naming the selector that could
100
- // not be honoured ("product \"prelim\" names no search we offer — one of: … (or omit it for the
100
+ // not be honoured ("product \"clearotron\" names no search we offer — one of: … (or omit it for the
101
101
  // account's default)"), and flattening it into a cause would lose the remedy clause.
102
102
  if (resolved.clarify) { out.errors.push(resolved.clarify); return out; }
103
103
  // deliveryRoute "portal" — DECLARED but not BUILT. It validates shape-wise, has no consumer (the
@@ -133,7 +133,7 @@ export function doorGates(job, opts = {}) {
133
133
  return { ...r, ...gateResolvedRequest({ job, ...r }, opts) };
134
134
  }
135
135
 
136
- // ── WHY tracker issue 216'S REFUSAL IS NOT ALSO A DOOR GATE ─────────────────────────────────────────
136
+ // ── WHY THE CONFIGURED-TO-SEARCH REFUSAL IS NOT ALSO A DOOR GATE ─────────────────────────────────────────
137
137
  //
138
138
  // It was, briefly, and it was removed with a measurement rather than an opinion. Adding "is this box
139
139
  // configured to search at all" here reddened `driver/test/doors-agree.test.mjs` — nineteen arms green
@@ -2,7 +2,7 @@
2
2
  // Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
3
3
  // doubt-selection.mjs — which OPEN doubts the closure seat is asked about, chosen by the DRIVER.
4
4
  //
5
- // 's architecture, one lane over from profile-selection.mjs: "prefer driver selection wherever the
5
+ // That architecture, one lane over from profile-selection.mjs: "prefer driver selection wherever the
6
6
  // key precedes the dispatch." The key is on the doubt before doubt-closure is dispatched, so there is
7
7
  // nothing here for a directive to ask a seat to judge — the driver lists the ids, and a doubt it does
8
8
  // not list is never mentioned.
@@ -68,7 +68,7 @@ export function keptTiersFor(doubtClosure) {
68
68
  * WHICH OF THE THREE SILENCES THIS IS. `keptTiersFor` returns null for `every-doubt` AND for a word it
69
69
  * does not know, deliberately — a typo must not silently drop every keyed doubt. But that makes the two
70
70
  * indistinguishable in the run's event: a misspelt cut records exactly what the shipped cut records, and
71
- * the product row looks graded while the dispatch is not. 's arm catches a bad word on the ROW; this
71
+ * the product row looks graded while the dispatch is not. That arm catches a bad word on the ROW; this
72
72
  * is the runtime face of the same question, on the run that actually happened.
73
73
  *
74
74
  * `hasOwnProperty` rather than a truthiness test on the lookup, because `TIER_CUTS[w]` reaches the
@@ -34,7 +34,7 @@
34
34
  import { readFileSync, writeFileSync, mkdirSync, renameSync } from "node:fs";
35
35
  import { execFileSync } from "node:child_process";
36
36
  import { join, dirname } from "node:path";
37
- import { drainPosture, absentDrainerIsNormal } from "./drain-posture.mjs"; // tracker issue 206 — one rule about the box
37
+ import { drainPosture, absentDrainerIsNormal } from "./drain-posture.mjs"; // one rule about the box
38
38
 
39
39
  export const STAMP_BASENAME = "_drainer-identity.json";
40
40
 
@@ -115,7 +115,7 @@ export const config = {
115
115
  // configured, because a whitespace-only string is TRUTHY in JavaScript — so a variable set to spaces
116
116
  // did not fall through to the default, it BECAME the path. `poolRoot` alone trimmed, so "blank" meant
117
117
  // two different things depending on which accessor you asked, and `queueDirs` resolved a RELATIVE
118
- // queue directory under the process cwd, which is 's own incident shape.
118
+ // queue directory under the process cwd, which is its own incident shape.
119
119
  //
120
120
  // Owner ruling 2026-08-19: a whitespace-only value counts as UNSET, everywhere. `X=` already meant
121
121
  // "not configured" and this is that rule finishing its sentence — not a reversal of it, which
@@ -229,7 +229,7 @@ export const config = {
229
229
  /**
230
230
  * Every skills root handed to the engine's file tools (overlay + base, deduped).
231
231
  *
232
- * NAMED FOR WHAT IT IS, not what we want it to be (, 2026-08-14): it was `skillsReadRoots`, and the
232
+ * NAMED FOR WHAT IT IS, not what we want it to be (2026-08-14): it was `skillsReadRoots`, and the
233
233
  * engine passes it to `--add-dir`, which has no read-only form. The read-only INTENT is real and is
234
234
  * enforced by the deny-hook at driver/engine/deny-authority-write.mjs — not by this name.
235
235
  */
@@ -252,7 +252,7 @@ export const config = {
252
252
  get skillsRoot() { return dirname(this.skillsDir); },
253
253
 
254
254
  // ── Per-agent paths ───────────────────────────────────────────────────────
255
- // A prelim job is enqueued into the FORWARDING agent's OWN workspace queue (that agent's `write` tool
255
+ // A clearotron job is enqueued into the FORWARDING agent's OWN workspace queue (that agent's `write` tool
256
256
  // is sandboxed there), and we run the whole pipeline as that same agent so the reply tool
257
257
  // (`clawdi_send_<user>`), the run-dir, and the agent's memory all line up. The queue LOCATION therefore
258
258
  // encodes the agent identity — the driver derives {agentId, studioRoot} from where it claimed the job,
@@ -269,6 +269,13 @@ export const config = {
269
269
  },
270
270
  // Escaped prefix for the reverse regexes below (a custom prefix may carry regex metachars).
271
271
  get workspacePrefixRe() { return this.workspacePrefix.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); },
272
+ // `prelim-search` IS NOT A PRODUCT NAME HERE and does not follow the product rename. It is a
273
+ // directory segment on disk, and every archived run — its slug dirs, its `archive/`, its matter
274
+ // ledger — was written under it. Renaming the segment does not move those runs; it points the
275
+ // reader somewhere empty, and an empty directory reads as "no runs" rather than as an error.
276
+ // The rule the tree already enforces elsewhere: a token that is read back out of an archive keeps
277
+ // its old spelling, or the code refuses its own archive. Thirteen sites compute this segment and
278
+ // all thirteen stay.
272
279
  studioRootForAgent(agentId) {
273
280
  return join(this.workspaceRoot, this.workspaceDirName(agentId), "studio", "prelim-search");
274
281
  },
@@ -283,7 +290,7 @@ export const config = {
283
290
  const m = new RegExp(`(?:^|/)${this.workspacePrefixRe}([^/]+)/studio/prelim-search/queue/?$`).exec(qdir);
284
291
  return m ? m[1] : null;
285
292
  },
286
- // Every agent workspace's prelim queue. The systemd `.path` watches these and the runner drains ALL of
293
+ // Every agent workspace's clearotron queue. The systemd `.path` watches these and the runner drains ALL of
287
294
  // them on each trigger (+ a timer fallback), so a request from ANY forwarder runs. (Pre-fix the watcher
288
295
  // and runner only looked at workspace-clawdi, silently orphaning every Alex/Sam job — the bug this fixes.)
289
296
  //
@@ -485,7 +492,7 @@ export const config = {
485
492
  // jobs AND manual pipeline.mjs invocations alike. WS-C raised the V4-7 stopgap's 1 → 3 (one per agent).
486
493
  // Phase-4: 3 → 6 + per-agent admission LIFTED (pipeline.acquireRunSlot no longer tags by agent). The
487
494
  // 2026-06-12 starvation that forced one-run-at-a-time (parallel runs → every gateway lane busy → 75s
488
- // heartbeat timeouts → a lost mid-run reply) was a GATEWAY phenomenon; prelim COMPUTE now runs off the
495
+ // heartbeat timeouts → a lost mid-run reply) was a GATEWAY phenomenon; clearotron COMPUTE now runs off the
489
496
  // gateway on the standalone claude -p engine, so concurrent runs no longer starve the heartbeat. The TURN
490
497
  // cap below still bounds the (now light) intake/delivery gateway demand. The runner serializes only the
491
498
  // cheap claim+dedup per queue and runs pipelines concurrently up to this cap (same-matter dedup stays
@@ -493,14 +500,22 @@ export const config = {
493
500
  // if the env is unset — keep the two in sync). Set to 2 on 2026-06-18 (was 6): 2 parallel is enough for now,
494
501
  // and bounds Max-5x rate-limit thrash. To change the live cap, set the env on the VM (no code deploy needed).
495
502
  get maxConcurrentRuns() { return Math.max(1, numericSetting("CLEAROTRON_MAX_CONCURRENT_RUNS")); },
503
+ // ON-DISK NAME, NOT A PRODUCT NAME: an install that never set the variable is already using this
504
+ // directory, so renaming the default moves the install to an empty one and nothing migrates. Here
505
+ // the orphaned files are run-slot locks, so a live run's slot goes unseen and the global cap is
506
+ // silently exceeded rather than enforced. Owner ruling, tracker issue 308.
496
507
  get runLockDir() { return this.envValue("CLEAROTRON_RUN_LOCK_DIR") || join(this.workspaceRoot, "prelim-run-locks"); },
497
508
 
498
509
  // Delivery outbox (Workstream B). On a handoff-mode finish the driver drops <runId>.pending here (naming
499
- // the forwarder agent); the systemd-user prelim-outbox.path unit fires an INSTANT prelim-deliver wake off
510
+ // the forwarder agent); the systemd-user prelim-outbox.path unit fires an INSTANT clearotron-deliver wake off
500
511
  // it, so a finished run sends in seconds instead of waiting ≤55m for the HEARTBEAT completion-watch (which
501
512
  // stays as the backstop). Mirrors runLockDir's derivation; env-overridable for dev/prod parity.
502
513
  // Phase 2: the outbox is ALSO the event seam for every other requester-facing event (run-failed,
503
514
  // intake-rejected, duplicate-skipped, late-bind-ack) — self-contained JSON packets via outbox.mjs.
515
+ // ON-DISK NAME, NOT A PRODUCT NAME: an install that never set the variable is already using this
516
+ // directory, so renaming the default moves the install to an empty one and nothing migrates. Here
517
+ // the orphaned files are requester-facing events — delivered, run-failed, intake-rejected — so the
518
+ // visible failure is a requester never told their run finished. Owner ruling, tracker issue 308.
504
519
  get outboxDir() { return this.envValue("CLEAROTRON_OUTBOX_DIR") || join(this.workspaceRoot, "prelim-outbox"); },
505
520
 
506
521
  // ── Delivery/comms (Phase 2, standalone product) ─────────────────────────────────────────────────
@@ -516,8 +531,25 @@ export const config = {
516
531
 
517
532
  // Fallback execution agent when a job's origin agent can't be derived from its queue dir (shouldn't
518
533
  // happen in normal operation). The real per-run agent is the forwarding agent, derived from the queue
519
- // LOCATION (see studioRootForAgent / agentIdFromQueueDir above). `clawdi` carries all the prelim tools.
520
- get defaultAgent() { return process.env.CLEAROTRON_DEFAULT_AGENT || "clawdi"; },
534
+ // LOCATION (see studioRootForAgent / agentIdFromQueueDir above).
535
+ //
536
+ // THE DEFAULT IS PART OF A PATH, so changing it moves where an install looks for its own runs:
537
+ // every run dir is `<workspaceRoot>/workspace-<agent>/studio/prelim-search/…`. An install created
538
+ // before this default changed keeps its runs under the old id and must pin it — both spellings,
539
+ // because the gather servers read their own variable:
540
+ //
541
+ // CLEAROTRON_DEFAULT_AGENT=clawdi
542
+ // CLEAROTRON_GATHER_AGENT=clawdi
543
+ //
544
+ // Unpinned, such an install starts a fresh empty workspace and its existing runs read as absent
545
+ // rather than as an error. Said again where upgrades are described (INSTALL.md, ops runbook).
546
+ //
547
+ // THE ID IS ALSO A KEY, not only a path segment. `AGENT_WHATSAPP` in stages.mjs is keyed by agent
548
+ // id, so the demo roster has to carry this value or the reference deployment resolves no operator
549
+ // number and the hole reads as "no copy configured" rather than as a miss. Both ids are in that
550
+ // roster for the same reason the pin above exists. (The roster stays one line: 32 backlog rows
551
+ // cite line numbers in stages.mjs, so a comment added there repoints all of them.)
552
+ get defaultAgent() { return process.env.CLEAROTRON_DEFAULT_AGENT || "localagent"; },
521
553
 
522
554
  // Per-stage retry budget (fresh session key per retry).
523
555
  get maxRetries() { return numericSetting("CLEAROTRON_MAX_RETRIES"); },
@@ -612,6 +644,26 @@ const MODEL_FAMILY_RE = /(?:^|\/)(?:claude-)?(opus|sonnet|haiku)(?:[-.]|$)/i;
612
644
  // mini one would then read as agreement, which is exactly the corruption this gauge exists to catch.
613
645
  const OPENAI_ID_RE = /^(?:openai\/)?(gpt-[\w.-]+|o\d[\w.-]*)$/i;
614
646
  const DATE_SUFFIX_RE = /-(?:\d{8}|\d{4}-\d{2}-\d{2})$/;
647
+
648
+ /**
649
+ * Is this model id a DATED SNAPSHOT, or an undated alias that a provider may repoint?
650
+ *
651
+ * `modelBasis: "actual"` says the provider answered rather than that we guessed — it does not say the
652
+ * answer names a fixed build. Measured across three archived runs: haiku came back
653
+ * `claude-haiku-4-5-20251001`, opus and sonnet came back `claude-opus-5` and `claude-sonnet-5`. All
654
+ * three were recorded identically as observed, and two of them name something the provider can move
655
+ * underneath us. A snapshot rotation behind either alias between two runs leaves EXACTLY that record and
656
+ * is invisible, which is how an A/B across time ends up eliminating the seat on evidence that could not
657
+ * have shown it either way.
658
+ *
659
+ * Returns "snapshot", "alias", or null when there is no id to judge — null is a could-not-look and is
660
+ * never collapsed into "alias". PURE.
661
+ */
662
+ export function modelSnapshotKind(model) {
663
+ const id = String(model ?? "").trim();
664
+ if (!id) return null;
665
+ return DATE_SUFFIX_RE.test(id) ? "snapshot" : "alias";
666
+ }
615
667
  export function modelFamily(model) {
616
668
  if (!model) return null;
617
669
  const resolved = resolveModel(String(model));
@@ -714,7 +766,7 @@ export const REGISTER_PROVIDER = (() => {
714
766
  // created this constant, so neither branch's tests covered it — it surfaced from reading the two diffs
715
767
  // side by side, not from a red run.
716
768
  //
717
- // SIX values now: 's `free-tier` composes the two free sources into ONE register, so an EU+US
769
+ // SIX values now: the `free-tier` composes the two free sources into ONE register, so an EU+US
718
770
  // clearance needs no paid vendor. It is a TIER, not a fourth free source — precedence runs between
719
771
  // tiers, never within one: a paid vendor configured IS the register alone, and the free sources are not
720
772
  // run beside it (corsearch and clarivate already aggregate both offices, so the second call buys
@@ -1314,7 +1366,7 @@ export const PROVIDERS = {
1314
1366
  // It also gated the wrong thing in practice. The US index is the one piece of this tier an operator
1315
1367
  // cannot get in a minute — it is a 41.5 GB build over two bulk products, behind an account with ID.me
1316
1368
  // identity verification, and it takes hours — so requiring it made the free tier unusable for exactly
1317
- // the person it exists for. 's CODE was merged; the INDEX is what no box had, and that was enough
1369
+ // the person it exists for. That CODE was merged; the INDEX is what no box had, and that was enough
1318
1370
  // to keep and from ever being exercised.
1319
1371
  //
1320
1372
  // The EU pair stays REQUIRED: a free tier with no configured member at all is not degraded, it is
@@ -1419,7 +1471,7 @@ export function providerIdFrom(env) {
1419
1471
  // the CURRENT spelling, through `currentName`, on purpose. Reading only the legacy name answered
1420
1472
  // `null` for a file that names the provider on the one line an operator can see, and `activeProvider`
1421
1473
  // reads that null as "this environment said nothing" and falls back to the ambient value. That is
1422
- // 's defect exactly, wearing the new name.
1474
+ // That defect exactly, wearing the new name.
1423
1475
  for (const name of ["CLEAROTRON_DATABASE"]) {
1424
1476
  const v = String(env?.[name] ?? "").trim().toLowerCase();
1425
1477
  if (v) return v;
@@ -4,7 +4,7 @@
4
4
  //
5
5
  // ── the defect this exists to remove ──────────────────────────────────────────────────────────
6
6
  //
7
- // 's noise floor needs the SAME scenario run twice on one commit. Until this module, `run` wrote
7
+ // That noise floor needs the SAME scenario run twice on one commit. Until this module, `run` wrote
8
8
  // `_e2e-doors-<ID>.json` holding exactly one token and `report` scoped itself to whatever token it found
9
9
  // there — so the second run of a pair OVERWROTE the only record of the first round's token, and the
10
10
  // first half became unreportable. Silently: `report` then described the second run, thirty seconds into
@@ -305,7 +305,7 @@ function runStart(hit) {
305
305
  /**
306
306
  * The rounds visible ON DISK, grouped by round token.
307
307
  *
308
- * `untokened` counts runs whose ref carries no round token — a pre- round, or one submitted by
308
+ * `untokened` counts runs whose ref carries no round token — a pre-change round, or one submitted by
309
309
  * hand. They belong to no nameable round, and saying how many there are is the difference between
310
310
  * "these are all the rounds" and "these are the rounds I could name".
311
311
  */
@@ -223,7 +223,7 @@ export const costBand = (i) => Math.max(1, Math.min(5, Math.ceil(effortUnits(i)
223
223
  * WHAT THIS REPLACED, and why a constant beat a model. The old quote was a base plus one adder per lane:
224
224
  * 1.5h, +0.5 for case law, +0.5 for a native-language lane, +0.5 for a single territory. It missed the
225
225
  * actual wall by +66%, +82% and −22% on three consecutive delivered runs, in BOTH directions, on one
226
- * engine build in one night ('s table). Every wall I could find from either source, eight runs:
226
+ * engine build in one night (the table). Every wall I could find from either source, eight runs:
227
227
  *
228
228
  * quoted 1.5h ×6 → actual 2.23 2.28 2.38 2.40 2.49 2.49
229
229
  * quoted 3.0h ×1 → actual 2.33 (the run with the MOST lanes came in SHORTER than five others)
@@ -246,7 +246,7 @@ export const TURNAROUND_QUOTE = Object.freeze({
246
246
  clearance: Object.freeze({ lowHours: 1.5, highHours: 2.5 }),
247
247
  // — OWNER RULING: a knockout quotes 5-10 MINUTES, a range, not a flat figure.
248
248
  //
249
- // The flat 0.25 came from 's "no compute, just say it, keep it simple", and that ruling is
249
+ // The flat 0.25 came from the "no compute, just say it, keep it simple", and that ruling is
250
250
  // untouched here: this is still one stated figure per pipeline with nothing computed from levers. What
251
251
  // changed is the figure, and the shape of it.
252
252
  //