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
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
 
@@ -162,9 +162,14 @@ your job. These two fields are how what you concluded reaches the reader instead
162
162
  every id against that store and refuses one it does not hold — so the report can state a filing's
163
163
  source as a fact rather than as a word you typed about your own sourcing.
164
164
 
165
- - **`registerReads`** — on the MARK. Rows of `{recordId, read}` for a filing you weighed that did **not**
166
- become a `findings[]` record. `read` is what you concluded about *that* filing: whether it bears on the
167
- rating, and why. It prints on that filing's card.
165
+ - **`registerReads`** — on the MARK. Rows of `{recordId, read, band?}` for a filing you weighed that did
166
+ **not** become a `findings[]` record. `read` is what you concluded about *that* filing: whether it bears
167
+ on the rating, and why. It prints on that filing's card. `band` is **optional** and is how you rate that
168
+ filing on its own — in the framework's band words, the same vocabulary as the mark's rating. Send it
169
+ whenever you formed a view on the filing itself: a registered right is often the one hard legal fact on
170
+ the page, and with no band its card is the only one carrying no rating while softer uses around it carry
171
+ one, which reads as though the registration mattered least. Omit it and the read still prints, claiming
172
+ no rating.
168
173
  - **`weighedFilings`** — on a FINDING. The `recordId`s whose evidence your reasoning for that conflict
169
174
  actually used. The report derives the finding's source labelling from this, so list one only if you
170
175
  reasoned from it.
@@ -205,7 +210,8 @@ line, which describes the card and claims nothing about the rating. So:
205
210
  "classesDriving": [8], "bullets": ["..."], "purpleNotes": ["..."],
206
211
  "registerEstimate": "...", "parodyNote": null, "crowdedField": false,
207
212
  "registerReads": [ { "recordId": "<verbatim from the filings you were given>",
208
- "read": "<what you concluded about THAT filing>" } ],
213
+ "read": "<what you concluded about THAT filing>",
214
+ "band": "<OPTIONAL — your rating of THAT filing, in the ladder's words>" } ],
209
215
  "basis": "<ONE sentence: why this band, for this name, in these classes>",
210
216
  "factors": ["<2-4 load-bearing observations, one line each>"],
211
217
  "counterFactors": ["<1-3: what holds it at this band rather than the next>"],
@@ -26,7 +26,7 @@ description: Orchestrator for preliminary trademark search requests with registe
26
26
 
27
27
  ## Spawned session
28
28
 
29
- This file is the **driver's compute orchestration spec** — it lives in `driver/skills/` (co-located with the driver) and is read by the pipeline stages, NOT by the integrator agent. The integrator's prelim role is only **intake** (recognise the request, resolve the client, submit the job — `../../docs/INTAKE.md`) and **delivery** (courier the outbox packets — `../../docs/DELIVERY.md`); everything between is the driver's.
29
+ This file is the **driver's compute orchestration spec** — it lives in `driver/skills/` (co-located with the driver) and is read by the pipeline stages, NOT by the integrator agent. The integrator's clearotron role is only **intake** (recognise the request, resolve the client, submit the job — `../../docs/INTAKE.md`) and **delivery** (courier the outbox packets — `../../docs/DELIVERY.md`); everything between is the driver's.
30
30
 
31
31
  This workflow is run by the **deterministic driver** (`driver/`): an intake path (the `enqueue` CLI or the ops-MCP `start_run` tool) enqueues a job and the driver invokes each stage as a standalone compute turn (the `anthropic-agent` engine — a headless `claude -p` process off the gateway; sequencing, fan-in, gating, retries all in code). The judgment content + companion files below are what the stages read; the driver passes each stage its run-dir paths + the job context (email message id, forwarder, instructions, mark names).
32
32
 
@@ -58,7 +58,7 @@ reads only their compact findings files. This is the workflow's primary cost con
58
58
 
59
59
  ## Trigger
60
60
 
61
- The requesting or reviewing lawyer forwards an email containing a **Trademark Search Request Form** to the intake mailbox. The forwarded email is typically structured as a request form ("Worldwide preliminary trademark search — TMP<n>", "Please run this through a preliminary search", or similar). When the request is recognisable as a prelim search ask, this skill invokes.
61
+ The requesting or reviewing lawyer forwards an email containing a **Trademark Search Request Form** to the intake mailbox. The forwarded email is typically structured as a request form ("Worldwide preliminary trademark search — TMP<n>", "Please run this through a preliminary search", or similar). When the request is recognisable as a clearotron search ask, this skill invokes.
62
62
 
63
63
  ## Register sources — the vendor is the source of truth; EUIPO is a free EU cross-check
64
64
 
@@ -1,4 +1,4 @@
1
- # Prelim Template — HTML Formatting Spec
1
+ # Clearotron Template — HTML Formatting Spec
2
2
 
3
3
  > **THIS FILE IS HALF LIVE, AND THE HALVES HAVE DIFFERENT READERS. Check which half you are in before
4
4
  > you trust a line.**
@@ -20,7 +20,7 @@ The email body has these blocks, in this order:
20
20
 
21
21
  > "Hi [first name from request],
22
22
  >
23
- > Prelim for [mark name] complete — findings below; full audit Excel attached."
23
+ > Clearotron for [mark name] complete — findings below; full audit Excel attached."
24
24
 
25
25
  (For internal test runs, use "Hi [forwarder first name]" and add a one-line context note: "v[N] test run — replied to you only, not forwarded to [client].")
26
26
 
@@ -5,7 +5,7 @@
5
5
  synthesis-rules.md.
6
6
  -->
7
7
 
8
- # Prelim synthesis — gold-standard worked examples
8
+ # Clearotron synthesis — gold-standard worked examples
9
9
 
10
10
  ## Contents
11
11
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: prelim-variants
3
- description: Shared strategy + variant generation for the v3 preliminary trademark search workflow. **Invoked exclusively by the `prelim-search` orchestrator** as the first stage of any v3 prelim run — do not call directly. Classifies the proposed mark into one of six analytical archetypes, derives a risk theory from that classification, then generates the variant set whose axes are shaped by the archetype. Emits a markdown variant manifest consumed by both common-law (`prelim-common-law`) and register (`prelim-register`) execution skills.
3
+ description: Shared strategy + variant generation for the v3 preliminary trademark search workflow. **Invoked exclusively by the `prelim-search` orchestrator** as the first stage of any v3 clearotron run — do not call directly. Classifies the proposed mark into one of six analytical archetypes, derives a risk theory from that classification, then generates the variant set whose axes are shaped by the archetype. Emits a markdown variant manifest consumed by both common-law (`prelim-common-law`) and register (`prelim-register`) execution skills.
4
4
  ---
5
5
 
6
6
  ## Contents
@@ -27,7 +27,7 @@ Companion files:
27
27
 
28
28
  ## Trigger
29
29
 
30
- Called by `prelim-search` at the start of any prelim run. Not invoked directly.
30
+ Called by `prelim-search` at the start of any clearotron run. Not invoked directly.
31
31
 
32
32
  ## Model
33
33
 
@@ -92,7 +92,7 @@ const DECLARED_KIND = {
92
92
  // — the placement form is CONTEXT, and deliberately NOT a freshness input. The driver writes it
93
93
  // before dispatch and rewrites it after every judgement (the union runs on each one), so it is always
94
94
  // newer than the md the seat just wrote — and adding it to stageInputs would make the largest stage in
95
- // the run read stale on every resume and re-dispatch itself. 's ruling exactly: the fix is a
95
+ // the run read stale on every resume and re-dispatch itself. That ruling exactly: the fix is a
96
96
  // second view, not a wider freshness list.
97
97
  placementForm: ["driver-side",
98
98
  "written by the driver before dispatch and re-unioned on every judgement; the prompt names the path because the seat writes its selections there"],
@@ -5,7 +5,7 @@
5
5
  // kept in its OWN table: the knockout lane is a different product shape (a 5–15 mark triage batch), and
6
6
  // its stages must never leak into the clearance STAGE_ORDER. New-named stages get [] MCP tool groups
7
7
  // automatically (gather-config prefix map — the matter-frame precedent), so frame/assess run lean.
8
- import { existsSync } from "node:fs";
8
+ import { existsSync, readFileSync } from "node:fs";
9
9
  import { join } from "node:path";
10
10
  import { driverDir } from "../shared/driver-dir.mjs"; //
11
11
  import { validators as koValidators } from "./verify-knockout.mjs";
@@ -19,6 +19,30 @@ export { kebab }; // one definition (search-policy) — re-exported for the la
19
19
  const lines = (...xs) => xs.filter(Boolean).join("\n");
20
20
  const reads = (skillReads) => `First, read and follow exactly: ${skillReads.join(", ")}.`;
21
21
 
22
+ /**
23
+ * One line per owner the driver looked up, for the assess dispatch (tracker issue 276).
24
+ *
25
+ * BOTH OUTCOMES ARE NAMED, and that is the point. A row whose search answered gets its payload path; a
26
+ * row whose search did NOT answer says so in the dispatch itself. Listing only the answered ones would
27
+ * leave the seat unable to tell "nobody searched this owner" from "the search found nothing", and those
28
+ * two license completely different reads — the second is a fact about the owner's visibility, the first
29
+ * is a gap the seat would fill by inferring from the name, which is the defect this whole issue is about.
30
+ *
31
+ * Returns [] when the lane did not run or the store is unreadable, so the dispatch simply omits the block
32
+ * rather than naming a path that is not there.
33
+ */
34
+ export function ownerCheckLines(K) {
35
+ let doc = null;
36
+ try { doc = existsSync(K.ownerChecks) ? JSON.parse(readFileSync(K.ownerChecks, "utf8")) : null; } catch { doc = null; }
37
+ const checks = Array.isArray(doc?.checks) ? doc.checks : [];
38
+ return checks.map((c) => {
39
+ const who = `${c.owner} (proprietor of a filing for ${c.mark})`;
40
+ return c.ok && c.payloadFile
41
+ ? `- ${who}: ${join(K.runDir, "research", c.payloadFile)}`
42
+ : `- ${who}: THE SEARCH RETURNED NOTHING. Say so in the read; do not infer the trade from the name.`;
43
+ });
44
+ }
45
+
22
46
  // ── Paths (knockout-own; beside the standard _driver sidecars) ───────────────────────────────────────
23
47
  export function koPaths(runDir) {
24
48
  return {
@@ -39,10 +63,15 @@ export function koPaths(runDir) {
39
63
  // rows were left exactly as they were rather than gaining a matching marker: their shape is pinned
40
64
  // byte-for-byte by register-count.test.mjs, and a discriminator only one side needs is enough.
41
65
  registerRecords: driverDir(runDir, "register-records.json"),
66
+ // The scoped owner lookups this run owes its promoted filings, and their receipts (tracker issue
67
+ // 276). Both under `_driver/` because both are the DRIVER's own measurement of a call it made — the
68
+ // rule stated fourteen lines above. The seat reads the payloads under research/, never these.
69
+ ownerChecks: driverDir(runDir, "owner-checks.json"),
70
+ ownerCheckLedger: driverDir(runDir, "owner-check.jsonl"),
42
71
  researchDir: join(runDir, "research"),
43
72
  research: (markKebab) => join(runDir, "research", `${markKebab}.md`),
44
73
  sweepLedger: driverDir(runDir, "knockout-sweep.jsonl"),
45
- // 's SHAPE, APPLIED: the WORK MOVES OUT OF THE GUARDED TREE — the hook is never weakened.
74
+ // That SHAPE, APPLIED: the WORK MOVES OUT OF THE GUARDED TREE — the hook is never weakened.
46
75
  //
47
76
  // This chunk is a MODEL OUTPUT, and it sat under `_driver/` in flat contradiction of the rule stated
48
77
  // fourteen lines above: those files "are the driver's own measurements, NEVER a model's output". So
@@ -289,6 +318,28 @@ export const KO_STAGES = {
289
318
  existsSync(K.registerRecords)
290
319
  ? `THE REGISTER FILINGS THIS RUN ALREADY FETCHED — ${K.registerRecords}. Real records, retrieved before you started: owner, jurisdiction, status, classes, dates. Read them and WEIGH them for the marks you are rating. A registration on this list is evidence about the name it names — treat its owner, its scope and its vulnerability the way the firm-wide reasoning tells you to (revocability above the lowest band; an enforcer's portfolio profile; a crowd as a mitigant under its gating precondition). What you may NOT do is describe the lane that fetched them — see the coverage rule below.`
291
320
  : "",
321
+ // ── WHAT THE OWNER ACTUALLY SELLS, ALREADY SEARCHED (tracker issue 276) ────────────────────────
322
+ //
323
+ // The defect this closes is not that the seat lacked an instruction — it is that the seat had no
324
+ // way to know. It was handed an owner's NAME and its class numbers and nothing else, so a read
325
+ // about what that owner sells could only ever be an inference from the string. The driver now runs
326
+ // the scoped query before this stage and hands the answer over.
327
+ //
328
+ // ORDERED, NOT OFFERED. Naming a payload the seat may read is what produces "read and not applied,
329
+ // no refusal" — a rule that names a downstream effect rather than the field the seat writes. This
330
+ // names the field: the read on that filing's registerReads row.
331
+ //
332
+ // AND THE NEGATIVE CASE IS ORDERED TOO, because it is the one that produced the original defect:
333
+ // where the lookup did not answer, the honest sentence is that it did not, NOT a fresh inference
334
+ // from the owner's name dressed as a finding.
335
+ ownerCheckLines(K).length
336
+ ? [
337
+ `WHAT THESE OWNERS ACTUALLY SELL — the driver ran ONE scoped web search per promoted filing's proprietor BEFORE this stage, so you are not guessing from the company name. Payloads:`,
338
+ ...ownerCheckLines(K),
339
+ `USE THEM. When you write a registerReads row for one of these filings, your "read" must state what the owner actually sells ACCORDING TO THAT PAYLOAD, not what the company's name suggests and not what its class numbers imply. An owner's name is not evidence of its trade. A company name that reads as a line of business is a guess that happens to land sometimes, and the run where it lands is indistinguishable from the run where it does not — which is the reasoning this rule exists to stop.`,
340
+ `WHERE A PAYLOAD SAYS THE SEARCH FOUND NOTHING, say that plainly in the read — "a search for the proprietor's trade returned nothing" — and reason from the register record alone. Do NOT substitute an inference from the owner's name for the answer the search did not give. The report prints the source line itself, from the driver's own record of the call, so you never type a URL and never need to.`,
341
+ ].join("\n")
342
+ : "",
292
343
  // ── THE READ REACHES THE PAGE ────────────────────────────────────────────
293
344
  //
294
345
  // Until now nothing this seat concluded about an INDIVIDUAL filing could reach a reader. A filing
@@ -301,7 +352,7 @@ export const KO_STAGES = {
301
352
  // a finding with no register evidence. Omitting either field is always safe: the card keeps its
302
353
  // neutral line, which describes the card and is true.
303
354
  existsSync(K.registerRecords)
304
- ? `WHEN YOU WEIGH ONE OF THOSE FILINGS, SAY SO BY ITS OWN ID — copy "recordId" verbatim from the file above. "registerReads" on the MARK: rows of {recordId, read} for a filing you weighed that did NOT become a findings[] record; "read" is what you concluded about THAT filing — whether it bears on the rating and why — and it prints on that filing's card in the reader's own report. "weighedFilings" on a FINDING: the recordIds whose evidence your reasoning for that conflict actually used, because the report derives that finding's source labelling from it. Both are optional and both are joined against the filings you were given, so an id we do not hold is refused by name. A filing you did not weigh simply gets no row: do not invent a read to fill one, and never write "not weighed" as a read.`
355
+ ? `WHEN YOU WEIGH ONE OF THOSE FILINGS, SAY SO BY ITS OWN ID — copy "recordId" verbatim from the file above. "registerReads" on the MARK: rows of {recordId, read, band?} for a filing you weighed that did NOT become a findings[] record; "read" is what you concluded about THAT filing — whether it bears on the rating and why — and it prints on that filing's card in the reader's own report. "band" is OPTIONAL and is your rating of THAT filing on its own, in the framework's band words: send it whenever you formed a view on the filing itself, because a registered right left unbanded is the only card on the page with no rating while softer uses beside it carry one, which reads as though the registration mattered least. Omit it and your read still prints, claiming no rating. "weighedFilings" on a FINDING: the recordIds whose evidence your reasoning for that conflict actually used, because the report derives that finding's source labelling from it. Both are optional and both are joined against the filings you were given, so an id we do not hold is refused by name. A filing you did not weigh simply gets no row: do not invent a read to fill one, and never write "not weighed" as a read.`
305
356
  : "",
306
357
  `A DEGRADED mark's row must carry degraded:true and the purple "Manual verification recommended"`,
307
358
  `note; a mark WITH a payload must never claim degraded (the validator joins both against the disk).`,
@@ -414,7 +465,7 @@ export const KO_STAGES = {
414
465
  `IT IS THE SHORTER DIGEST ABOVE THE PER-MARK ASSESSMENTS, not a rival to them. A reader opens this`,
415
466
  `to decide which name to read about; the mark's own page is where the full read lives. Keep it`,
416
467
  `tighter than any one mark's assessment.`,
417
- // ── THE RETURN IS A CALL, NOT A FILE (, item B) ────────────────────────────
468
+ // ── THE RETURN IS A CALL, NOT A FILE (item B) ────────────────────────────
418
469
  //
419
470
  // THE DISPATCH NAMES NO PATH, and on this stage that is not merely the house pattern. This seat
420
471
  // spent 2026-08 writing its chunk through a Bash redirect because the Write tool was already