clearotron 0.3.0-beta.0 → 0.3.0-beta.10

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 (791) hide show
  1. package/.env.example +149 -37
  2. package/.nvmrc +1 -1
  3. package/CONTRIBUTING.md +10 -6
  4. package/INSTALL.md +260 -105
  5. package/README.md +45 -38
  6. package/THIRD-PARTY-NOTICES.md +1 -1
  7. package/bin/brandowner.mjs +113 -171
  8. package/bin/clearotron.mjs +29 -5
  9. package/bin/connect.mjs +101 -47
  10. package/bin/disconnect.mjs +19 -14
  11. package/bin/example.mjs +49 -20
  12. package/bin/framework-preflight.mjs +49 -0
  13. package/bin/grant.mjs +153 -95
  14. package/bin/key.mjs +24 -6
  15. package/bin/onboard.mjs +849 -237
  16. package/bin/passphrase.mjs +23 -4
  17. package/bin/start.mjs +636 -119
  18. package/bin/status.mjs +23 -3
  19. package/bin/stop.mjs +27 -12
  20. package/bin/update.mjs +46 -14
  21. package/bin/uspto-sync.mjs +1 -1
  22. package/build-info.json +2 -2
  23. package/demo/README.md +1 -1
  24. package/demo/full-country-search/run/_driver/framework.json +1 -1
  25. package/demo/full-country-search/run/status.json +1 -1
  26. package/demo/global-preliminary-search/run/_driver/framework.json +1 -1
  27. package/demo/global-preliminary-search/run/status.json +1 -1
  28. package/demo/knockout-search/run/_driver/framework.json +1 -1
  29. package/demo/knockout-search/run/email-body.md +1 -1
  30. package/demo/knockout-search/run/status.json +2 -2
  31. package/demo/multi-country-focus-search/run/_driver/framework.json +1 -1
  32. package/demo/multi-country-focus-search/run/status.json +1 -1
  33. package/docs/CLIENT-MCP.md +2 -2
  34. package/docs/DELIVERY.md +6 -2
  35. package/docs/E2E.md +17 -7
  36. package/docs/GLOSSARY.md +85 -0
  37. package/docs/ONBOARDING.md +1 -1
  38. package/docs/PORTAL.md +16 -15
  39. package/docs/README.md +6 -4
  40. package/docs/SECURITY.md +23 -7
  41. package/docs/architecture/01-product-overview.md +22 -10
  42. package/docs/architecture/02-architecture.md +2 -2
  43. package/docs/architecture/04-configuration-reference.md +24 -8
  44. package/docs/architecture/05-config-governance.md +67 -14
  45. package/docs/architecture/05-customer-profiles.md +2 -2
  46. package/docs/architecture/06-operations-runbook.md +13 -1
  47. package/docs/architecture/07-quality-and-audit.md +1 -1
  48. package/docs/architecture/08-development-guide.md +5 -0
  49. package/docs/architecture/09-security-and-data.md +1 -1
  50. package/docs/configuration.md +122 -3
  51. package/docs/decisions/0004-documentation-structure.md +3 -3
  52. package/docs/decisions/0006-what-the-public-repository-carries.md +31 -6
  53. package/driver/CHANGELOG.md +398 -1
  54. package/driver/README.md +26 -7
  55. package/driver/ask-ledger.mjs +5 -5
  56. package/driver/authority-trees.mjs +1 -1
  57. package/driver/call-capture.mjs +1 -1
  58. package/driver/cancel.mjs +27 -0
  59. package/driver/card-frame.mjs +1 -1
  60. package/driver/case-law-ledger.mjs +1 -1
  61. package/driver/case-law-sources.mjs +3 -3
  62. package/driver/claim-liveness.mjs +1 -1
  63. package/driver/common-law-receipts.mjs +2 -2
  64. package/driver/commonlaw-carry.mjs +1 -1
  65. package/driver/company-bundle.mjs +261 -0
  66. package/driver/compare.mjs +1 -1
  67. package/driver/compose-read.mjs +23 -4
  68. package/driver/config-inventory.mjs +3 -3
  69. package/driver/config-staleness.mjs +1 -1
  70. package/driver/connotation-search.mjs +13 -13
  71. package/driver/contract-audit.mjs +11 -7
  72. package/driver/contract-dictation-registry.mjs +4 -4
  73. package/driver/contract-dictation.mjs +2 -2
  74. package/driver/contract-e3-backlog.mjs +8 -8
  75. package/driver/contract-e3-baseline.json +11 -11
  76. package/driver/contract-vocabulary.mjs +4 -4
  77. package/driver/corrections-feedforward.mjs +1 -1
  78. package/driver/coverage-form-io.mjs +2 -2
  79. package/driver/coverage-form.mjs +4 -4
  80. package/driver/coverage-ledger.mjs +3 -3
  81. package/driver/coverage-union.mjs +1 -1
  82. package/driver/declination-call.mjs +4 -4
  83. package/driver/declination-duty.mjs +1 -1
  84. package/driver/deliver-trigger.sh +6 -6
  85. package/driver/demo-container.mjs +65 -2
  86. package/driver/demo-posture.mjs +59 -8
  87. package/driver/deploy-live-run-guard.mjs +6 -2
  88. package/driver/dev-portal.mjs +6 -4
  89. package/driver/digest-queue.mjs +1 -1
  90. package/driver/disposition-call.mjs +4 -4
  91. package/driver/disposition-tool.mjs +5 -5
  92. package/driver/disposition-union.mjs +2 -2
  93. package/driver/doc-constants.mjs +2 -2
  94. package/driver/door-gates.mjs +2 -2
  95. package/driver/doubt-selection.mjs +3 -3
  96. package/driver/drain-posture.mjs +2 -2
  97. package/driver/drainer-identity.mjs +3 -3
  98. package/driver/driver.config.mjs +126 -25
  99. package/driver/e2e-rounds.mjs +2 -2
  100. package/driver/effective-scope.mjs +30 -1
  101. package/driver/effort-model.mjs +8 -8
  102. package/driver/engine/CONTRACT.md +2 -2
  103. package/driver/engine/anthropic-agent.mjs +68 -51
  104. package/driver/engine/auth.mjs +1 -1
  105. package/driver/engine/child-record.mjs +93 -0
  106. package/driver/engine/cli-version.mjs +103 -0
  107. package/driver/engine/common.mjs +1 -1
  108. package/driver/engine/deny-authority-write.mjs +1 -1
  109. package/driver/engine/jx-turn.mjs +6 -3
  110. package/driver/engine/mcp/clarivate-server.mjs +1 -1
  111. package/driver/engine/mcp/corsearch-server.mjs +1 -1
  112. package/driver/engine/mcp/declination-server.mjs +1 -1
  113. package/driver/engine/mcp/dispositions-server.mjs +1 -1
  114. package/driver/engine/mcp/euipo-server.mjs +1 -1
  115. package/driver/engine/mcp/fetch-server.mjs +1 -1
  116. package/driver/engine/mcp/free-tier-server.mjs +2 -2
  117. package/driver/engine/mcp/gather-config.mjs +40 -15
  118. package/driver/engine/mcp/perplexity-server.mjs +1 -1
  119. package/driver/engine/mcp/recording-server.mjs +77 -5
  120. package/driver/engine/mcp/signa-server.mjs +1 -1
  121. package/driver/engine/mcp/uspto-local-server.mjs +1 -1
  122. package/driver/engine/openai-agent.mjs +63 -5
  123. package/driver/engine/probe.mjs +70 -6
  124. package/driver/engine-build.mjs +2 -2
  125. package/driver/enqueue-schema.mjs +36 -14
  126. package/driver/enqueue.mjs +1 -1
  127. package/driver/envelope-settle.mjs +1 -1
  128. package/driver/evidence-claim-invariant.mjs +2 -2
  129. package/driver/feedback-store.mjs +1 -1
  130. package/driver/findings-model.mjs +66 -11
  131. package/driver/flag-snapshot.mjs +22 -2
  132. package/driver/floor-duty.mjs +3 -3
  133. package/driver/form-neighbourhood.mjs +1 -1
  134. package/driver/frame-diff-model.mjs +1 -1
  135. package/driver/framework-preflight.mjs +143 -0
  136. package/driver/framework.mjs +2 -2
  137. package/driver/gateway.mjs +137 -39
  138. package/driver/grounds-grammar.mjs +1 -1
  139. package/driver/hit-list.mjs +2 -2
  140. package/driver/jurisdiction-systems.mjs +1 -1
  141. package/driver/jx-lanes.mjs +2 -2
  142. package/driver/jx-units.mjs +1 -1
  143. package/driver/jx.mjs +4 -4
  144. package/driver/knockout-assess-record.mjs +7 -4
  145. package/driver/knockout-review-record.mjs +435 -0
  146. package/driver/narrative-refutation-record.mjs +3 -3
  147. package/driver/numeric-setting.mjs +1 -1
  148. package/driver/order-probe.mjs +1 -1
  149. package/driver/outbox-backoff.mjs +3 -3
  150. package/driver/owner-use-check.mjs +184 -0
  151. package/driver/package.json +4 -4
  152. package/driver/party-facts.mjs +2 -2
  153. package/driver/phase0.mjs +2 -2
  154. package/driver/pipeline-knockout.mjs +153 -8
  155. package/driver/pipeline.mjs +376 -188
  156. package/driver/placement-diff.mjs +2 -2
  157. package/driver/placement-form.mjs +4 -4
  158. package/driver/placement-union.mjs +1 -1
  159. package/driver/plain-register.mjs +208 -0
  160. package/driver/portal-access.mjs +141 -74
  161. package/driver/portal-acks.mjs +1 -1
  162. package/driver/portal-config-view.mjs +92 -35
  163. package/driver/portal-families.mjs +1 -1
  164. package/driver/portal-local-auth.mjs +137 -6
  165. package/driver/portal-report.mjs +11 -11
  166. package/driver/portal-service.mjs +579 -197
  167. package/driver/portal-upstream.mjs +126 -19
  168. package/driver/predelivery-lint.mjs +184 -10
  169. package/driver/prelim-variants-record.mjs +2 -2
  170. package/driver/product-rows.mjs +1 -1
  171. package/driver/products.mjs +1 -1
  172. package/driver/profile-page.html +41 -8
  173. package/driver/profile-selection.mjs +1 -1
  174. package/driver/profile-service.mjs +231 -32
  175. package/driver/profiles/README.md +3 -3
  176. package/driver/profiles.mjs +192 -13
  177. package/driver/progress.mjs +6 -6
  178. package/driver/provider-usage.mjs +1 -1
  179. package/driver/publish/demo-marking.mjs +1 -1
  180. package/driver/publish/index.mjs +83 -21
  181. package/driver/publish/knockout.mjs +50 -11
  182. package/driver/publish/office-record-links.mjs +275 -0
  183. package/driver/publish/parse.mjs +7 -7
  184. package/driver/publish/publish-inputs.mjs +28 -2
  185. package/driver/publish/register-presence.mjs +1 -1
  186. package/driver/publish/render-knockout.mjs +566 -154
  187. package/driver/publish/render.mjs +139 -19
  188. package/driver/publish/report-data.mjs +2 -2
  189. package/driver/publish/seed-pool.mjs +1 -1
  190. package/driver/publish/templates/report.css +8 -8
  191. package/driver/publish/xlsx.mjs +82 -8
  192. package/driver/queue-watch-probe.mjs +1 -1
  193. package/driver/queue-watch-verdict.mjs +3 -3
  194. package/driver/recall-reconciliation.mjs +1 -1
  195. package/driver/recipe-service.mjs +16 -7
  196. package/driver/record-carry.mjs +4 -4
  197. package/driver/record-origins.mjs +14 -0
  198. package/driver/recording-agreement.mjs +3 -3
  199. package/driver/reference-score.mjs +7 -7
  200. package/driver/reference-strip-signatures.mjs +21 -1
  201. package/driver/refusal-bound.mjs +3 -3
  202. package/driver/register-availability.mjs +6 -5
  203. package/driver/register-count.mjs +4 -4
  204. package/driver/register-grant-vocabulary.mjs +2 -2
  205. package/driver/register-plan.mjs +8 -8
  206. package/driver/register-records.mjs +9 -3
  207. package/driver/registry-fidelity.mjs +3 -3
  208. package/driver/remedy-accounting.mjs +1 -1
  209. package/driver/repair-composers.mjs +3 -3
  210. package/driver/repair-digest.mjs +3 -3
  211. package/driver/repairs.mjs +9 -9
  212. package/driver/replay-archive.mjs +2 -0
  213. package/driver/report-card-record.mjs +3 -3
  214. package/driver/result-noun-fields.mjs +8 -3
  215. package/driver/roster-verdict.mjs +48 -5
  216. package/driver/run-activity.mjs +1 -1
  217. package/driver/run-economics.mjs +2 -2
  218. package/driver/run-integrity.mjs +1 -1
  219. package/driver/run-requirements.mjs +41 -5
  220. package/driver/runner.mjs +54 -40
  221. package/driver/scope-rules.mjs +1 -1
  222. package/driver/search-policy.mjs +19 -14
  223. package/driver/senior-rights.mjs +1 -1
  224. package/driver/skeptic-search.mjs +1 -1
  225. package/driver/skills/blind-frame/SKILL.md +2 -2
  226. package/driver/skills/case-law-citation/SKILL.md +2 -2
  227. package/driver/skills/knockout-assess/SKILL.md +85 -1
  228. package/driver/skills/matter-frame/SKILL.md +6 -6
  229. package/driver/skills/matter-frame/watchlist-reference.md +2 -2
  230. package/driver/skills/prelim-common-law/SKILL.md +1 -1
  231. package/driver/skills/prelim-search/SKILL.md +3 -3
  232. package/driver/skills/prelim-search/delivery-contract.md +1 -1
  233. package/driver/skills/prelim-search/report-prose.md +82 -0
  234. package/driver/skills/prelim-search/risk-framework-demo.manifest.json +1 -1
  235. package/driver/skills/prelim-search/risk-framework-triage.manifest.json +1 -1
  236. package/driver/skills/prelim-search/risk-framework-triage.md +10 -7
  237. package/driver/skills/prelim-search/risk-framework.manifest.json +1 -1
  238. package/driver/skills/prelim-search/synthesis-rules.md +1 -1
  239. package/driver/skills/prelim-search/template-formatting.md +1 -1
  240. package/driver/skills/prelim-search/templates/email/generic.md +1 -1
  241. package/driver/skills/prelim-search/worked-examples.md +1 -1
  242. package/driver/skills/prelim-variants/SKILL.md +5 -5
  243. package/driver/stage-context.mjs +14 -1
  244. package/driver/stages-knockout.mjs +122 -5
  245. package/driver/stages.mjs +157 -53
  246. package/driver/stray-artifacts.mjs +2 -2
  247. package/driver/suite-census.json +806 -158
  248. package/driver/synthesis-record.mjs +3 -3
  249. package/driver/systemd/clearotron-client-mcp.service +4 -4
  250. package/driver/systemd/clearotron-deploy.service +2 -2
  251. package/driver/systemd/clearotron-mcp-face.service +1 -1
  252. package/driver/systemd/clearotron-portal.service +4 -4
  253. package/driver/systemd/clearotron-worker.service +8 -8
  254. package/driver/systemd/install-census.mjs +1 -1
  255. package/driver/systemd/render-units.mjs +16 -22
  256. package/driver/terminal-clamp.mjs +1 -1
  257. package/driver/tokens.mjs +2 -2
  258. package/driver/tool-calls.mjs +1 -1
  259. package/driver/trigger-cap.mjs +18 -2
  260. package/driver/turnaround-bands.mjs +1 -1
  261. package/driver/unit-file-drift.mjs +1 -1
  262. package/driver/unit-inventory.mjs +395 -91
  263. package/driver/unit-state-verdict.mjs +12 -4
  264. package/driver/updater-identity.mjs +178 -0
  265. package/driver/usage-ledger.mjs +10 -8
  266. package/driver/verify-knockout.mjs +8 -8
  267. package/driver/verify.mjs +18 -18
  268. package/driver/whatif-memo-run.mjs +28 -6
  269. package/driver/whatif-memo.mjs +19 -1
  270. package/driver/whatif-queue.mjs +4 -4
  271. package/driver/whatif-worker.mjs +3 -3
  272. package/examples/README.md +3 -3
  273. package/examples/grants.example.json +26 -26
  274. package/mcp-server/CHANGELOG.md +56 -0
  275. package/mcp-server/CONNECT.md +3 -2
  276. package/mcp-server/README.md +3 -3
  277. package/mcp-server/http-server.mjs +60 -14
  278. package/mcp-server/key-socket.mjs +184 -0
  279. package/mcp-server/lib/audit-view.mjs +72 -5
  280. package/mcp-server/lib/brief.mjs +3 -3
  281. package/mcp-server/lib/driver.mjs +11 -2
  282. package/mcp-server/lib/events.mjs +2 -2
  283. package/mcp-server/lib/http-handler.mjs +3 -3
  284. package/mcp-server/lib/instructions.mjs +2 -2
  285. package/mcp-server/lib/knockout.mjs +15 -3
  286. package/mcp-server/lib/ops.mjs +48 -23
  287. package/mcp-server/lib/options.mjs +36 -10
  288. package/mcp-server/lib/plan.mjs +8 -7
  289. package/mcp-server/lib/runs.mjs +11 -1
  290. package/mcp-server/lib/scrub.mjs +1 -1
  291. package/mcp-server/lib/whatif.mjs +10 -10
  292. package/mcp-server/mint-token.mjs +1 -1
  293. package/mcp-server/package.json +3 -3
  294. package/mcp-server/packs/README.md +1 -1
  295. package/mcp-server/packs/ops/EXAMPLES.md +2 -2
  296. package/mcp-server/remote/client-mcp-apikey.service +1 -1
  297. package/mcp-server/remote/client-mcp.service +2 -2
  298. package/mcp-server/remote/trademark-artifacts-http.service +1 -1
  299. package/mcp-server/server.mjs +46 -32
  300. package/package.json +34 -22
  301. package/portal-ui/dist/assets/{index-Ct3iQtZ2.css → index-Cv-E_agg.css} +322 -110
  302. package/portal-ui/dist/assets/{index-BUGgiYtF.js → index-CwPAS0we.js} +3838 -1895
  303. package/portal-ui/dist/index.html +2 -2
  304. package/portal-ui/package.json +3 -3
  305. package/providers/_shared/enumerate.mjs +1 -1
  306. package/providers/_shared/lane-probe.mjs +9 -3
  307. package/providers/_shared/ledger-path.mjs +3 -3
  308. package/providers/_shared/ledger.mjs +1 -1
  309. package/providers/_shared/result-shape.mjs +3 -3
  310. package/providers/_shared/term-shape.mjs +2 -2
  311. package/providers/clarivate/src/core.js +5 -0
  312. package/providers/corsearch/src/core.js +1 -1
  313. package/providers/jx-subclass/BUILDING.md +1 -1
  314. package/providers/jx-subclass/lookup.mjs +1 -1
  315. package/providers/oauth-mcp-bridge/CHANGELOG.md +46 -0
  316. package/providers/oauth-mcp-bridge/package.json +2 -2
  317. package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
  318. package/providers/oauth-mcp-bridge/systemd/courtlistener-mcp.service +1 -1
  319. package/providers/uspto-local/src/index-store.js +2 -2
  320. package/scripts/README.md +1 -1
  321. package/scripts/added-reference-check.mjs +45 -61
  322. package/scripts/authority-boundary-probe.mjs +1 -1
  323. package/scripts/backfill-started-at.mjs +1 -1
  324. package/scripts/changelog-plain-language.mjs +7 -30
  325. package/scripts/citation-drift-report.mjs +1 -1
  326. package/scripts/citation-line-check.mjs +125 -6
  327. package/scripts/compare.mjs +2 -2
  328. package/scripts/contract-dictation-scan.mjs +2 -2
  329. package/scripts/dead-names.mjs +1 -1
  330. package/scripts/drain-preflight.mjs +3 -3
  331. package/scripts/drive-env-check.mjs +1 -1
  332. package/scripts/e2e-unread-terminals.mjs +2 -2
  333. package/scripts/e2e.mjs +225 -37
  334. package/scripts/engine-probe.mjs +2 -2
  335. package/scripts/env-audit.mjs +30 -11
  336. package/scripts/env-classify.mjs +414 -30
  337. package/scripts/generated-files-are-current.mjs +125 -0
  338. package/scripts/head-arrived-gated.mjs +1 -1
  339. package/scripts/headless-page.mjs +5 -5
  340. package/scripts/live-surface-check.mjs +148 -11
  341. package/scripts/main-health.mjs +1 -1
  342. package/scripts/merge-presence-check.mjs +3 -3
  343. package/scripts/mint-names-in-force.mjs +23 -7
  344. package/scripts/mint-public-residue.mjs +74 -0
  345. package/scripts/mint-reference-strip-backlog.mjs +13 -2
  346. package/scripts/mint-suite-census.mjs +47 -17
  347. package/scripts/nightly-notice.mjs +1 -3
  348. package/scripts/pack-publishable.mjs +1 -1
  349. package/scripts/plain-language-rules.mjs +103 -0
  350. package/scripts/preinstall-node-check.mjs +24 -0
  351. package/scripts/reconcile-runs.mjs +1 -1
  352. package/scripts/release-await-cut.mjs +9 -7
  353. package/scripts/release-cut-decision.mjs +1 -1
  354. package/scripts/release-dist-tag.mjs +1 -1
  355. package/scripts/release-install-check.mjs +1 -1
  356. package/scripts/release-note-required.mjs +118 -24
  357. package/scripts/release-notes-lint.mjs +22 -43
  358. package/scripts/release-publish-guard.mjs +1 -1
  359. package/scripts/release-version-pr-checks.mjs +3 -3
  360. package/scripts/release-version.mjs +122 -7
  361. package/scripts/render-brand-banner.mjs +1 -1
  362. package/scripts/render-check.mjs +20 -9
  363. package/scripts/repo-writes.mjs +1 -1
  364. package/scripts/report-frame-check.mjs +10 -3
  365. package/scripts/report-screenshot.mjs +9 -6
  366. package/scripts/retire-bare-refs.mjs +1 -1
  367. package/scripts/revisit-render-check.mjs +36 -11
  368. package/scripts/score.mjs +6 -6
  369. package/scripts/strip-titles-and-attributions.mjs +389 -0
  370. package/scripts/strip-tracker-citations.mjs +264 -0
  371. package/scripts/test-full.mjs +226 -0
  372. package/scripts/test-run.mjs +21 -5
  373. package/scripts/text-difference.mjs +22 -0
  374. package/scripts/third-party-notices.mjs +4 -4
  375. package/scripts/travelling-predicates.mjs +4 -4
  376. package/scripts/unexecuted-asserts.mjs +2 -2
  377. package/scripts/verify-publishable.mjs +3 -3
  378. package/scripts/write-up-form-census.mjs +1 -1
  379. package/shared/README.md +2 -1
  380. package/shared/access-audience.mjs +10 -9
  381. package/shared/anon-overlay.mjs +4 -4
  382. package/shared/brand.mjs +32 -14
  383. package/shared/browser-temp-root.mjs +142 -0
  384. package/shared/bundle-freshness.mjs +1 -1
  385. package/shared/bundle-rebuild.mjs +1 -1
  386. package/shared/checkout-move.mjs +3 -3
  387. package/shared/citation-scan.mjs +1 -1
  388. package/shared/client-door.mjs +58 -18
  389. package/shared/connect-clients.mjs +290 -321
  390. package/shared/connector-signin-probe.mjs +1 -1
  391. package/shared/customer-store.mjs +1 -1
  392. package/shared/driver-dir.mjs +1 -1
  393. package/shared/env-aliases.mjs +1 -49
  394. package/shared/env-file-merge.mjs +24 -0
  395. package/shared/env-local.mjs +31 -8
  396. package/shared/grants-edit.mjs +76 -0
  397. package/shared/identifier-scan.mjs +4 -4
  398. package/shared/install-auth.mjs +36 -1
  399. package/shared/invocation.mjs +83 -4
  400. package/shared/listen.mjs +57 -5
  401. package/shared/mcp-challenge.mjs +1 -1
  402. package/shared/names-in-force.mjs +13 -2
  403. package/shared/node-floor.mjs +97 -0
  404. package/shared/onboarding-store.mjs +19 -2
  405. package/shared/os-advice.mjs +91 -0
  406. package/shared/permanent-install.mjs +237 -0
  407. package/shared/product-owned-names.mjs +1 -1
  408. package/shared/reap-on-exit.mjs +65 -10
  409. package/shared/reference-guard-classes.mjs +393 -0
  410. package/shared/register-selection.mjs +2 -2
  411. package/shared/running-start.mjs +73 -0
  412. package/shared/scope.mjs +227 -60
  413. package/shared/secret-file.mjs +1 -1
  414. package/shared/server-units.mjs +5 -5
  415. package/shared/staff-domain.mjs +121 -0
  416. package/shared/stdio-connect.mjs +95 -14
  417. package/shared/store-in-repo.mjs +222 -6
  418. package/shared/suite-census.mjs +35 -7
  419. package/shared/summary-blocks.mjs +2 -2
  420. package/shared/systemd-failure.mjs +3 -3
  421. package/shared/tracked-files.mjs +1 -1
  422. package/shared/trigger-lane.mjs +1 -1
  423. package/shared/tty-style.mjs +1 -1
  424. package/shared/usage-block.mjs +1 -1
  425. package/shared/uspto-index-size.mjs +1 -1
  426. package/shared/vacuous-pass.mjs +2 -2
  427. package/shared/verb-shim.mjs +11 -2
  428. package/shared/withheld-paths-access.mjs +38 -20
  429. package/shared/wsl.mjs +23 -0
  430. package/shared/yes-no-echo.mjs +35 -0
  431. package/skills/clearotron-account/SKILL.md +42 -13
  432. package/skills/clearotron-ops/SKILL.md +1 -1
  433. package/driver/recipes/README.md +0 -49
  434. package/driver/skills/prelim-search/risk-framework-aurora.manifest.json +0 -19
  435. package/driver/skills/prelim-search/risk-framework-aurora.md +0 -77
  436. package/driver/skills/prelim-search/risk-framework-zephyr.manifest.json +0 -14
  437. package/driver/skills/prelim-search/risk-framework-zephyr.md +0 -33
  438. package/driver/skills/prelim-search/worked-examples-aurora.md +0 -10
  439. package/driver/skills/prelim-search/worked-examples-zephyr.md +0 -10
  440. package/driver/systemd/prelim-driver.path +0 -69
  441. package/driver/systemd/prelim-driver.service +0 -86
  442. package/driver/systemd/prelim-driver.timer +0 -14
  443. package/driver/systemd/prelim-outbox.path +0 -27
  444. package/driver/systemd/prelim-outbox.service +0 -37
  445. package/driver/systemd/prelim-outbox.timer +0 -21
  446. package/node_modules/exceljs/README_zh.md +0 -2878
  447. package/node_modules/exceljs/dist/LICENSE +0 -22
  448. package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
  449. package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
  450. package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
  451. package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
  452. package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
  453. package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
  454. package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
  455. package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
  456. package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
  457. package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
  458. package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
  459. package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
  460. package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
  461. package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
  462. package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
  463. package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
  464. package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
  465. package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
  466. package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
  467. package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
  468. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
  469. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
  470. package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
  471. package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
  472. package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
  473. package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
  474. package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
  475. package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
  476. package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
  477. package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
  478. package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
  479. package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
  480. package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
  481. package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
  482. package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
  483. package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
  484. package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
  485. package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
  486. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
  487. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
  488. package/node_modules/exceljs/dist/es5/index.js +0 -15
  489. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
  490. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
  491. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
  492. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
  493. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
  494. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
  495. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
  496. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
  497. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
  498. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
  499. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
  500. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
  501. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
  502. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
  503. package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
  504. package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
  505. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
  506. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
  507. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
  508. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
  509. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
  510. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
  511. package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
  512. package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
  513. package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
  514. package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
  515. package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
  516. package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
  517. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
  518. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
  519. package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
  520. package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
  521. package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
  522. package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
  523. package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
  524. package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
  525. package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
  526. package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
  527. package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
  528. package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
  529. package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
  530. package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
  531. package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
  532. package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
  533. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
  534. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
  535. package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
  536. package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
  537. package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
  538. package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
  539. package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
  540. package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
  541. package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
  542. package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
  543. package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
  544. package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
  545. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
  546. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
  547. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
  548. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
  549. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
  550. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
  551. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
  552. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
  553. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
  554. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
  555. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
  556. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
  557. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
  558. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
  559. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
  560. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
  561. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
  562. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
  563. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
  564. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
  565. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
  566. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
  567. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
  568. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
  569. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
  570. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
  571. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
  572. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
  573. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
  574. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
  575. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
  576. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
  577. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
  578. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
  579. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
  580. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
  581. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
  582. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
  583. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
  584. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
  585. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
  586. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
  587. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
  588. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
  589. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
  590. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
  591. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
  592. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
  593. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
  594. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
  595. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
  596. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
  597. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
  598. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
  599. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
  600. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
  601. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
  602. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
  603. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
  604. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
  605. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
  606. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
  607. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
  608. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
  609. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
  610. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
  611. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
  612. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
  613. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
  614. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
  615. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
  616. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
  617. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
  618. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
  619. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
  620. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
  621. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
  622. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
  623. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
  624. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
  625. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
  626. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
  627. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
  628. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
  629. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
  630. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
  631. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
  632. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
  633. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
  634. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
  635. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
  636. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
  637. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
  638. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
  639. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
  640. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
  641. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
  642. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
  643. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
  644. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
  645. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
  646. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
  647. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
  648. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
  649. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
  650. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
  651. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
  652. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
  653. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
  654. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
  655. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
  656. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
  657. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
  658. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
  659. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
  660. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
  661. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
  662. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
  663. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
  664. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
  665. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
  666. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
  667. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
  668. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
  669. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
  670. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
  671. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
  672. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
  673. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
  674. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
  675. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
  676. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
  677. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
  678. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
  679. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
  680. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
  681. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
  682. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
  683. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
  684. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
  685. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
  686. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
  687. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
  688. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
  689. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
  690. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
  691. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
  692. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
  693. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
  694. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
  695. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
  696. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
  697. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
  698. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
  699. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
  700. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
  701. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
  702. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
  703. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
  704. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
  705. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
  706. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
  707. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
  708. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
  709. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
  710. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
  711. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
  712. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
  713. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
  714. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
  715. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
  716. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
  717. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
  718. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
  719. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
  720. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
  721. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
  722. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
  723. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
  724. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
  725. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
  726. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
  727. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
  728. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
  729. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
  730. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
  731. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
  732. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
  733. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
  734. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
  735. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
  736. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
  737. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
  738. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
  739. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
  740. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
  741. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
  742. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
  743. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
  744. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
  745. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
  746. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
  747. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
  748. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
  749. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
  750. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
  751. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
  752. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
  753. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
  754. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
  755. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
  756. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
  757. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
  758. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
  759. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
  760. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
  761. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
  762. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
  763. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
  764. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
  765. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
  766. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
  767. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
  768. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
  769. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
  770. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
  771. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
  772. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
  773. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
  774. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
  775. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
  776. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
  777. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
  778. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
  779. package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
  780. package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
  781. package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
  782. package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
  783. package/node_modules/exceljs/dist/exceljs.js +0 -59900
  784. package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
  785. package/node_modules/exceljs/dist/exceljs.min.js +0 -45
  786. package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
  787. package/scripts/ai-page-render-check.mjs +0 -532
  788. package/scripts/clearances-render-check.mjs +0 -480
  789. package/scripts/composer-render-check.mjs +0 -1027
  790. package/scripts/home-render-check.mjs +0 -526
  791. package/scripts/portal-lifecycle-check.mjs +0 -639
package/.env.example CHANGED
@@ -18,7 +18,7 @@
18
18
  # and never listed here: CLEAROTRON_KNOCKOUT_MODE, CLEAROTRON_JX_LANES, CLEAROTRON_RECIPES_MODE — if any of the
19
19
  # three is still in your .env, delete the line; the pipeline CLI warns on stderr when it sees one.
20
20
  #
21
- # WHERE THE REST WENT (tracker issue 1838). This file used to carry 237 rows and a new reader met 230 variables to
21
+ # WHERE THE REST WENT. This file used to carry 237 rows and a new reader met 230 variables to
22
22
  # reach the fourteen they need. The deployment and tuning names — identity, ports, tenancy, timeouts,
23
23
  # batch sizes — now live in `.env.deployment.example`. Nothing was dropped: `node scripts/env-audit.mjs`
24
24
  # reads BOTH files, and the ratchet that refuses a product variable with no row anywhere reads both too.
@@ -41,8 +41,8 @@
41
41
  # otherwise.
42
42
  # • Where a var takes a NAMED MODE, the comment says so and no other value does anything at all
43
43
  # (CLEAROTRON_SCREEN_GATE_UNNAMED = "enforce"; CLEAROTRON_UNREACHABLE_SENIOR = open-item|clamp).
44
- # • `# effect: <class>` above a row DECLARES WHAT CHANGES when that name is changed (tracker issue 1149-12,
45
- # ADR-0002). The vocabulary is closed — silent-output-change | disclosed-gate | credential |
44
+ # • `# effect: <class>` above a row DECLARES WHAT CHANGES when that name is changed
45
+ # (ADR-0002). The vocabulary is closed — silent-output-change | disclosed-gate | credential |
46
46
  # deployment | tuning | harness — and EFFECT_CLASSES in scripts/env-audit.mjs says what each one
47
47
  # claims. Like `# external:`, the marker must be the LAST comment above its rows and reaches the
48
48
  # contiguous run below it. The environment-governance guard reds on a NEW `CLEAROTRON_*` read by
@@ -76,7 +76,7 @@
76
76
  # gateway-bin adapter was a runtime, not a provider choice; removed in the extraction.)
77
77
  #
78
78
  # TWO adapters are implemented — engine/CONTRACT.md:3 is the accurate statement, and this file said
79
- # otherwise until tracker issue 547:
79
+ # otherwise until the free-register work corrected it:
80
80
  # anthropic-agent `claude -p`, off-gateway. The default.
81
81
  # openai-agent `codex exec`. Built and $0-tested; live verification still pending.
82
82
  # Either way the reasoning needs a subscription or an API key of its own — that is separate from every
@@ -99,13 +99,13 @@ CLEAROTRON_CUSTOMERS_DIR=
99
99
  # Compute-skills tree the stage prompts resolve `skills/foo/SKILL.md` against. Default = <driverDir>/skills.
100
100
  CLEAROTRON_INSTRUCTIONS_DIR=
101
101
  # Delivery pool: report.html + audit.xlsx land here (served by Caddy behind Cloudflare Access).
102
- # REQUIRED — tracker issue 774 removed the code default. Unset, the engine refuses and names this variable instead
102
+ # REQUIRED — the code default was removed. Unset, the engine refuses and names this variable instead
103
103
  # of falling back to /srv/trademark-archive, which on a deployed box is real client matter.
104
104
  CLEAROTRON_REPORTS_DIR=/srv/trademark-archive
105
105
  # Run-slot lock dir. Default = $CLEAROTRON_WORK_DIR/prelim-run-locks. Every run takes a slot here,
106
106
  # whether the runner dispatched it or somebody launched it by hand, so this is what bounds concurrency
107
107
  # across an install rather than within one process. The portal also reads it to find the worker
108
- # heartbeat (tracker issue 1721); two installs pointed at one lock dir would share a cap they do not expect to.
108
+ # heartbeat; two installs pointed at one lock dir would share a cap they do not expect to.
109
109
  # effect: deployment
110
110
  CLEAROTRON_RUN_LOCK_DIR=
111
111
  # Delivery outbox dir (instant handoff-mode delivery wake). Default = $CLEAROTRON_WORK_DIR/prelim-outbox.
@@ -114,7 +114,7 @@ CLEAROTRON_OUTBOX_DIR=
114
114
  # HEADLESS intake: one explicit queue dir (no agent workspaces needed) — the enqueue CLI + ops-MCP
115
115
  # start_run write here and the runner drains it (additive to the workspace scan). See docs/INTAKE.md.
116
116
  CLEAROTRON_QUEUE_DIR=
117
- # REQUIRED, on every deployment including dev (tracker issue 503). Which register vendor gets called and billed:
117
+ # REQUIRED, on every deployment including dev. Which register vendor gets called and billed:
118
118
  # corsearch | clarivate | signa | euipo | uspto-local | free-tier. There is NO default — unset, the driver refuses at run start rather
119
119
  # than choosing for you.
120
120
  #
@@ -134,9 +134,9 @@ CLEAROTRON_QUEUE_DIR=
134
134
  # not run beside it (corsearch and clarivate already
135
135
  # aggregate both free offices, so a second call buys nothing).
136
136
  #
137
- # FREE euipo the EU register ALONE (tracker issue 546) — needs EUIPO_CLIENT_ID + _SECRET
138
- # uspto-local the US register ALONE (tracker issue 547) — needs USPTO_LOCAL_DB (a built index)
139
- # free-tier BOTH, as ONE register (tracker issue 548) — needs all three of the above
137
+ # FREE euipo the EU register ALONE — needs EUIPO_CLIENT_ID + _SECRET
138
+ # uspto-local the US register ALONE — needs USPTO_LOCAL_DB (a built index)
139
+ # free-tier BOTH, as ONE register — needs all three of the above
140
140
  #
141
141
  # Choosing a free value makes every territory outside its coverage a DISCLOSED DEFERRED coverage row.
142
142
  # That is the honest trade of running without a subscription, not a defect to work around.
@@ -151,7 +151,7 @@ CLEAROTRON_DATABASE=clarivate
151
151
  # CLEAROTRON_GATHER_SESSION_KEY, CLEAROTRON_GATHER_SESSION_ID, CLEAROTRON_GATHER_AGENT,
152
152
  # CLEAROTRON_REGISTER_CALL_LOG, CLEAROTRON_REGISTER_RECORD_LOG
153
153
  #
154
- # THERE IS NO RETENTION SETTING AND NO CLEANUP JOB (tracker issue 743). CLEAROTRON_REGISTER_LEDGER_MAX_BYTES,
154
+ # THERE IS NO RETENTION SETTING AND NO CLEANUP JOB. CLEAROTRON_REGISTER_LEDGER_MAX_BYTES,
155
155
  # CLEAROTRON_REGISTER_LEDGER_KEEP and `npm run prune:ledger` are gone with the rotation tool, because the
156
156
  # thing they bounded no longer grows: RECORD BODIES ARE WRITTEN INTO THE RUN'S OWN DIRECTORY
157
157
  # (<run>/_driver/register-record-bodies.jsonl), archived with the run and purged with it. Nobody should
@@ -164,19 +164,19 @@ CLEAROTRON_DATABASE=clarivate
164
164
  # CLEAROTRON_REGISTER_CALL_LOG is the one that stays box-global: it is one small row per provider call, read
165
165
  # ACROSS runs by the provider-usage tally, and it is the independent witness that a run made record
166
166
  # fetches at all (so a run whose bodies went missing reports as a failure and not as a clean zero).
167
- # Leave it unset: the default is ~/trademark/telemetry/register-calls.jsonl (tracker issue 774 an existing ledger
168
- # under the pre-tracker issue 774 telemetry directory keeps being read where it sits), and an existing corsearch-named
169
- # file from before tracker issue 594 is still read where it sits — production is on that filename today, and reading
170
- # it is not a fault. The vendor-named ENV VARS are gone (tracker issue 605).
167
+ # Leave it unset: the default is ~/trademark/telemetry/register-calls.jsonl (an existing ledger under the older
168
+ # telemetry directory keeps being read where it sits), and an existing corsearch-named file from before
169
+ # the vendor rename is still read where it sits — production is on that filename today, and reading it
170
+ # is not a fault. The vendor-named ENV VARS are gone.
171
171
  #
172
- # tracker issue 1269 — BEING BOX-GLOBAL, IT USED TO COLLECT THE TEST SUITE'S FIXTURE TRAFFIC. A full-suite run on a
172
+ # BEING BOX-GLOBAL, IT USED TO COLLECT THE TEST SUITE'S FIXTURE TRAFFIC. A full-suite run on a
173
173
  # dev or test box appended mock provider calls to this same file, and nothing on the rows said so, so
174
174
  # every usage pattern, provider comparison and cost read over it silently included them. `npm test`
175
175
  # now exports CLEAROTRON_SUITE_TELEMETRY_DIR into its own temp root and the ledgers resolve under that
176
176
  # instead. It is set by the test wrapper and is NOT an operator setting: setting it by hand sends a
177
177
  # real run's billing rows somewhere the tally never reads.
178
178
  #
179
- # A box upgraded across tracker issue 743 still holds its old global RECORD file. Nothing writes or reads it now; the
179
+ # A box upgraded across the retention change still holds its old global RECORD file. Nothing writes or reads it now; the
180
180
  # driver says so once per process on stderr. Archive it with one `mv` when convenient.
181
181
 
182
182
 
@@ -187,7 +187,7 @@ CLEAROTRON_DATABASE=clarivate
187
187
  # subprocess by default so it bills the OAuth SUBSCRIPTION (cheaper), not the API. Keep it set
188
188
  # for the gateway + as the api-key fallback (see CLEAROTRON_AI_BILLING).
189
189
  ANTHROPIC_API_KEY=sk-ant-...
190
- # The headless subscription sign-in's token (tracker issue 2070). `claude setup-token` — run on any
190
+ # The headless subscription sign-in's token. `claude setup-token` — run on any
191
191
  # machine you can sign in on — prints it; setup captures it by paste. The stage subprocess inherits it
192
192
  # untouched in both billing modes (spawnEnv strips only the API key), so this row is the whole
193
193
  # mechanism by which a browserless server authenticates the subscription lane.
@@ -202,7 +202,7 @@ CLAUDE_CODE_OAUTH_TOKEN=
202
202
  # clean subscription bill, so it cannot serve as the key)
203
203
  #
204
204
  # `npm run setup` asks this as its own question, adopts the key, and proves the pair with one cheap
205
- # turn before writing anything (tracker issue 1149 item 5) — so a hand-edit here is the second-best route.
205
+ # turn before writing anything — so a hand-edit here is the second-best route.
206
206
  CLEAROTRON_AI_BILLING=subscription
207
207
  # The api-key credential for openai-agent. Only read when CLEAROTRON_AI=openai-agent and
208
208
  # CLEAROTRON_AI_BILLING=api-key; under "subscription" that engine reads ~/.codex/auth.json instead and
@@ -217,10 +217,10 @@ OPENAI_API_KEY=
217
217
  # Azure OpenAI provider creds. RECONSTRUCTED: only $AZURE_OPENAI_DEPLOYMENT is referenced in this
218
218
  # repo (as the rendered catalog id); these follow the azure-openai provider convention of the agent
219
219
  # platform that consumes them, NOT this repo directly. Verify the exact names against that platform's
220
- # own configuration at deploy — that config belongs to it and is not in this tree under any name (tracker issue 876).
220
+ # own configuration at deploy — that config belongs to it and is not in this tree under any name.
221
221
  # There was never a reader HERE to retire, which is what separates these rows from a stranded one — and
222
- # the line below is what tells the catalogue guard so (tracker issue 1426).
223
- # external: the agent platform's azure-openai provider config (tracker issue 876)
222
+ # the line below is what tells the catalogue guard so.
223
+ # external: the agent platform's azure-openai provider config
224
224
  AZURE_OPENAI_API_KEY=changeme
225
225
  AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
226
226
  AZURE_OPENAI_DEPLOYMENT=gpt-5.4
@@ -235,7 +235,7 @@ AZURE_OPENAI_API_VERSION=2024-10-21
235
235
  # file — an ENV VAR, not a committed literal, and there is no literal under any spelling to edit.
236
236
  #
237
237
  # THERE IS NO DEFAULT PROVIDER, and this block said there was until now. Unset, CLEAROTRON_DATABASE
238
- # resolves to null and every use of it throws at the run door. tracker issue 503 removed the old default for the
238
+ # resolves to null and every use of it throws at the run door. The old default was removed for the
239
239
  # reason worth knowing before you leave it unset: an unset variable took Corsearch in silence, and the
240
240
  # credential guard could not catch it because both boxes carried CORSEARCH_SESSION_KEY.
241
241
  #
@@ -248,7 +248,7 @@ CLARIVATE_API_KEY=changeme
248
248
  # Signa.
249
249
  SIGNA_API_KEY=changeme
250
250
  #
251
- # USPTO, local (tracker issue 547) — the free US source, and the only one here that is not a paid vendor. TWO
251
+ # USPTO, local — the free US source, and the only one here that is not a paid vendor. TWO
252
252
  # variables, and they are needed at different moments, which is why neither substitutes for the other.
253
253
  #
254
254
  # USPTO_LOCAL_DB — where the register FILE lives. The provider searches this; at SEARCH time there is no
@@ -279,13 +279,13 @@ USPTO_API_KEY=changeme
279
279
  # used to imply. There are four products and all four use it, though they behave differently without
280
280
  # it and the difference is worth knowing before you diagnose one:
281
281
  #
282
- # Knockout search RUNS ANYWAY, and says what it skipped (tracker issue 1223 acceptance 6). The screen
282
+ # Knockout search RUNS ANYWAY, and says what it skipped. The screen
283
283
  # carries the register count probe, so its register half is a whole answer
284
284
  # without this key: it delivers counts, marks every name for manual
285
285
  # verification, and states on the report that the open-web half did not
286
286
  # run. The sweep is NOT ATTEMPTED — nothing is billed and nothing 429s.
287
287
  # CLEAROTRON_KNOCKOUT_SWEEP_FIXTURES still gives a $0 dev run WITH a sweep.
288
- # The three clearances REFUSE AT PREFLIGHT, before a stage has spent (tracker issue 1149 item 6). All three
288
+ # The three clearances REFUSE AT PREFLIGHT, before a stage has spent. All three
289
289
  # (global preliminary, carry `commonLawGrid: true` and a saved search cannot switch it off
290
290
  # multi-country focus, (search-policy.mjs), so the deterministic grid sweep always runs, and the
291
291
  # full country) run door refuses by name — grep the tree for the exact string:
@@ -311,15 +311,15 @@ PERPLEXITY_API_KEY=pplx-...
311
311
  # top-up somebody can do in five minutes rather than a defect to diagnose.
312
312
  #
313
313
  # WITHOUT IT the lane does not silently shrink: every grid cell gaps and the run says so, naming the
314
- # dominant cause (`SERPAPI_API_KEY absent from driver env`). There is no switch to arm first — tracker issue 1149
315
- # item 8 deleted it — so any run whose product carries the zh lane needs this key or discloses the gap.
314
+ # dominant cause (`SERPAPI_API_KEY absent from driver env`). There is no switch to turn on first — that
315
+ # switch was deleted — so any run whose product carries the zh lane needs this key or discloses the gap.
316
316
  SERPAPI_API_KEY=your-serpapi-key
317
317
 
318
318
 
319
319
  # -----------------------------------------------------------------------------
320
320
  # 5. REGISTER / EU (EUIPO — OAuth2 client-credentials)
321
321
  # -----------------------------------------------------------------------------
322
- # Needed ONLY when CLEAROTRON_DATABASE=euipo (section 4). Until tracker issue 546, these were read by a side
322
+ # Needed ONLY when CLEAROTRON_DATABASE=euipo (section 4). They used to be read by a side
323
323
  # tool that attached to every register stage whether or not they were set — so an instance with no
324
324
  # EUIPO key looked identical to one with a key. EUIPO is a register provider now: unset credentials
325
325
  # make a run REFUSE at preflight, by name, before any model spend.
@@ -342,7 +342,7 @@ EUIPO_ENVIRONMENT=production
342
342
  PROFILE_REPO_ROOT=
343
343
  SIGNA_FIXTURES_DIR= # canned signa payloads — the $0 seam for that adapter
344
344
 
345
- # ── Names the audit could not see until tracker issue 1460 ───────────────────────────────────────
345
+ # ── Names the audit could not see until the catalogue widened ────────────────────────────────────
346
346
  # Each of these is read through a name held in a string constant — `const IDENT = "NAME"` in one file,
347
347
  # `process.env[IDENT]` in another. Both halves are literals at the author's keyboard, so they were
348
348
  # always governed names; the scanner simply could not reach them. They are catalogued here now.
@@ -356,7 +356,7 @@ SIGNA_FIXTURES_DIR= # canned signa payloads — the $0 seam for that
356
356
  # sets one. This name has no default — unset, the lane refuses. Moving it there would spend that
357
357
  # header's credibility, which every other row in that file depends on, to buy a tidier taxonomy.
358
358
  # `.env.example` promises "what you decide at install", and a must-set variable fits deciding-at-install
359
- # better than it fits never-set-one. Owner ruling, 2026-08-30, on tracker issue 1838.
359
+ # better than it fits never-set-one. Ruling, 2026-08-30.
360
360
  #
361
361
  # GIVING THE LANE A DEFAULT WAS CONSIDERED AND REFUSED: refuse-by-name-when-unset is the honest design —
362
362
  # the same family as the pool root, where an unset value THROWS rather than quietly resolving somewhere
@@ -368,7 +368,7 @@ CLEAROTRON_JX_SUBCLASS_DB=
368
368
  # box's ledger and never inherits it. Sits BELOW an explicitly-named ledger file: a test that names its
369
369
  # own path is being deliberate, and this exists for the runs that name nothing.
370
370
  #
371
- # CANNOT LEAVE THIS FILE WHILE PRODUCT CODE READS IT (tracker issue 1838). The catalogue ratchet
371
+ # CANNOT LEAVE THIS FILE WHILE PRODUCT CODE READS IT. The catalogue ratchet
372
372
  # refuses any product-read name with no row, and the backlog it would otherwise join turns ONE WAY.
373
373
  # So the remedy is the knobs step, not the surface step: remove the READ, not the row. A fixture
374
374
  # seam reached through the environment is that argument in its purest form.
@@ -385,10 +385,29 @@ CLEAROTRON_SUITE_TELEMETRY_DIR=
385
385
  # listed here because the catalogue ratchet is about what an operator can FIND, not what they should set.
386
386
  # Replaces PORTAL_DEMO, which named only one of the processes that has to know.
387
387
  # Read by driver/portal-service.mjs, driver/demo-posture.mjs and mcp-server/http-server.mjs.
388
- # Refs tracker issue 2015, 2106.
389
388
  # effect: deployment
390
389
  CLEAROTRON_DEMO=
391
390
 
391
+ # How the reader typed this command, handed from the dispatcher to each verb it runs. `clearotron`
392
+ # runs every verb as a process of its own, so a verb's own argv[1] is `bin/<verb>.mjs` however the
393
+ # reader started it. The dispatcher passes its own argv[1] down in this name, and every command a verb
394
+ # prints for the reader to type next is spelled from it: `clearotron …` after a global install,
395
+ # `npx clearotron …` otherwise. Unset, a verb reads its own argv[1].
396
+ # Set by bin/clearotron.mjs on every verb it runs, never by an operator, so the row is left commented.
397
+ # It is listed for the reason CLEAROTRON_DEMO is: the catalogue is about what an operator can FIND.
398
+ # Read by shared/invocation.mjs.
399
+ # effect: deployment
400
+ # CLEAROTRON_INVOKED_AS=
401
+
402
+ # Marks an install that has already moved itself out of npm's npx cache. `npx clearotron install` first
403
+ # installs the same version under ~/.local and then runs that copy's install, with this set to 1, so the
404
+ # copy does not try to move itself a second time. Unset, an install running from npx's cache moves.
405
+ # Set by bin/onboard.mjs on the one process it starts, never by an operator, so the row is left
406
+ # commented. It is listed for the reason CLEAROTRON_DEMO is: the catalogue is about what an operator can
407
+ # FIND. Read by bin/onboard.mjs.
408
+ # effect: deployment
409
+ # CLEAROTRON_RELOCATED=
410
+
392
411
  # How many client what-ifs the runner drains at once (default 1). A what-if re-runs ONE stage of a run
393
412
  # that already exists, in a sandbox, at a client's request — the owner opened it to clients on
394
413
  # 2026-08-27 and ruled SPEND controls out with it ("ignore the call spend"). This is not one.
@@ -400,7 +419,7 @@ CLEAROTRON_DEMO=
400
419
  # IT IS NOT A RUN-SLOT, deliberately. A what-if that took a slot from CLEAROTRON_MAX_CONCURRENT_RUNS could
401
420
  # BLOCK an admitted paid run rather than merely share the machine with it — the same starvation one
402
421
  # layer up. So the two pools are separate and only this one bounds experiments.
403
- # Read by driver/whatif-worker.mjs. Refs tracker issue 1953.
422
+ # Read by driver/whatif-worker.mjs.
404
423
  # effect: tuning
405
424
  CLEAROTRON_WHATIF_MAX_CONCURRENT=1
406
425
 
@@ -421,7 +440,7 @@ CLEAROTRON_WHATIF_MAX_CONCURRENT=1
421
440
  #
422
441
  # Surfaced by the cut-over overlay control once the withheld `ops/` bucket was laid back over the public
423
442
  # tree: the ratchets that would have caught it had had no subject since the cut, so this is a gap of
424
- # long standing rather than a regression. Refs tracker issue 213.
443
+ # long standing rather than a regression.
425
444
  #
426
445
  # Left EMPTY here on purpose. A path in this file would read as a default; there is none, and the
427
446
  # installer supplies the real value.
@@ -438,7 +457,7 @@ CLEAROTRON_CHECKOUT_DIR=
438
457
  # GitHub sets GITHUB_*, so a row would document somebody else's decision. We set these, so a row
439
458
  # documents ours.
440
459
  #
441
- # Found by the audit while closing tracker issue 213, not by that issue's diagnosis — they arrived with
460
+ # Found by the audit rather than by the diagnosis that prompted it — they arrived with
442
461
  # tonight's release-pipeline work and the catalogue ratchet caught them on the next run, which is the
443
462
  # ratchet doing its job. Raised with the release lane rather than silently absorbed.
444
463
 
@@ -446,7 +465,12 @@ CLEAROTRON_CHECKOUT_DIR=
446
465
  # checkout may have moved on since, and a decision made about "whatever HEAD is now" tried to republish
447
466
  # an already-released version. Unset falls back to HEAD, which is correct for the cron and for a hand
448
467
  # run, where nothing has moved. Read by scripts/release-cut-decision.mjs.
449
- # effect: deployment
468
+ #
469
+ # DECLARED `deployment` FIRST, AND THAT WAS THE WRONG HALF OF THE DEFINITION. `deployment` is "where
470
+ # input and output live" — a pool root, an outbox, a database path. A git ref is not a location any
471
+ # input or output lives at; it is which subject the decision is taken about, and it changes only whether
472
+ # the pipeline republishes something it already shipped. Nothing a clearance run produces moves.
473
+ # effect: tuning
450
474
  CLEAROTRON_CUT_REF=
451
475
 
452
476
  # How long publishing waits for a parked version run, in whole milliseconds. Unset uses the built-in
@@ -455,3 +479,91 @@ CLEAROTRON_CUT_REF=
455
479
  # entirely, which is that script not running at all. Read by scripts/release-await-cut.mjs.
456
480
  # effect: tuning
457
481
  CLEAROTRON_RELEASE_WAIT_MS=
482
+
483
+ # ── The local key door's socket ───────────────────────────────
484
+ # Same shape as the two below: read by product code, in neither this file nor the governance table
485
+ # until a private environment-contract ratchet caught it.
486
+
487
+ # WHERE the local key door listens. Unset means there is no key door and a deployment gets exactly the
488
+ # door it had before — this adds a path, it does not widen the existing one.
489
+ #
490
+ # WHY A SOCKET AND NOT A PORT. This interface serves two populations that authenticate differently:
491
+ # people arriving through a tunnel, who prove themselves with a proxy identity, and programs on the same
492
+ # machine holding a scoped access key, which can never produce one. "Only accept a key from loopback"
493
+ # does not separate them — the tunnel daemon runs on the same machine, so a request forwarded from the
494
+ # internet and one from the local portal arrive with the same peer address. A tunnel forwards to a port;
495
+ # it cannot reach a socket, so the transport is the discriminator.
496
+ #
497
+ # The socket is created 0660, owner and group only, and the mode is set after listen because listen
498
+ # creates the file and the umask decides what it starts as. The door refuses to open at all without a
499
+ # grants file, alongside the authentication bypass, or in token mode — that mode makes the NETWORK door
500
+ # take a key too, which is the thing this exists to prevent.
501
+ #
502
+ # Read by mcp-server/key-socket.mjs.
503
+ # effect: deployment
504
+ TRADEMARK_MCP_KEY_SOCKET=
505
+
506
+ # ── Who the completion notice reaches ────────────────────────────────────────────────────────────
507
+ # Both arrived together and shipped undeclared: they are read by product code and were in
508
+ # neither this file nor the governance table, which six private environment-contract ratchets caught on
509
+ # the next overlay run. Catalogued here on the same terms as the release names above — they are OUR
510
+ # names, read by code that ships.
511
+
512
+ # WHO the chat notice is addressed to: a JSON object of requester email or handle → number, e.g.
513
+ # {"lisa@tenant.example":"+41...","jordan":"+41..."}. Before this, the notice went to a map keyed by
514
+ # AGENT id, and every user of a deployment shares one agent — so the operator was notified about work
515
+ # other people ordered and the requester was told nothing.
516
+ #
517
+ # UNSET IS AN EMPTY ROSTER, never a demo one. A deployment that configures nothing routes no notice and
518
+ # the delivery record says whose number is missing, by name. The sibling agent map carries invented
519
+ # numbers for offline tests; doing that here would aim a real client's completion notice at a fixture.
520
+ #
521
+ # It holds contact data. Read by driver/stages.mjs (whatsappRouting).
522
+ # effect: deployment
523
+ CLEAROTRON_REQUESTER_WHATSAPP=
524
+
525
+ # The operator's own copy of the same notice, ON unless this is `0`, `false` or `no`. Independent of the
526
+ # roster above: an operator can stop receiving copies of everyone else's runs without touching who the
527
+ # requester notice reaches. Read by driver/stages.mjs (whatsappRouting).
528
+ # effect: deployment
529
+ CLEAROTRON_WHATSAPP_OPERATOR_COPY=
530
+
531
+ # ── The two switches that reveal accounts an install deliberately does not offer ──────────────────
532
+ #
533
+ # NEITHER IS FOR AN OPERATOR. Both are set by the product's own commands, and a row here exists because
534
+ # product code reads them, not because copying this file should set them. Leave both unset. Setting
535
+ # either on a real deployment puts accounts in a picker that a clean install is meant not to have.
536
+ #
537
+ # `1` makes the profile loader return the three test-suite fixture accounts in the roster
538
+ # it resolves. They are marked `testFixture` and are refused otherwise on every install route, because a
539
+ # packaging exclusion protects only the tarball and `git clone && npm install` is a documented way in.
540
+ # Set by scripts/test-run.mjs, once, for every child — most checks that need a fixture do not call the
541
+ # loader directly, so there is no argument to pass. An explicit `includeTestFixtures` argument beats
542
+ # this, distinguished on `undefined`, so a check asking what a customer's install resolves is never
543
+ # handed the suite's answer instead. Read by driver/profiles.mjs.
544
+ # effect: harness
545
+ CLEAROTRON_TEST_FIXTURE_PROFILES=
546
+
547
+ # `1` makes the profile loader return the BUNDLED demo account (demo-brand-owner, marked `demoData`).
548
+ # A fresh install resolves `generic` alone — ruling 2026-09-08, so nobody has to clean demo
549
+ # material out of an environment they just made — and the demo brings its own account when it runs.
550
+ # Set by `clearotron demo`, by `clearotron start --demo`, and by scripts/test-run.mjs.
551
+ #
552
+ # The gate is on the LAYER, not the flag: a `demoData` account in a deployment's OWN configured store is
553
+ # that deployment's choice and stays offered whatever this is set to, and the admission wall still
554
+ # refuses a real clearance under it. An explicit `includeDemo` argument beats this, on the same rule.
555
+ # Read by driver/profiles.mjs.
556
+ # effect: harness
557
+ CLEAROTRON_DEMO_PROFILES=
558
+
559
+ # ── The organisation setup names ──────────────────────────────────────────────────────────────────
560
+ #
561
+ # Your organisation's name. `npm run setup` asks for it (and, on a local install, not for a sign-in
562
+ # address) and writes it here, quoted, so a name holding a `#` survives. The first `clearotron start` files it as the first
563
+ # organisation in the grants file (CLEAROTRON_ACCESS_FILE) when that file holds none; from then on the
564
+ # grants file holds the name and renaming is an edit there. The portal also reads it, to name the
565
+ # organisation on its top bar and on its sign-in refusal page. Unset or empty, no organisation is
566
+ # invented. `clearotron start --organisation <name>` supplies it for one start, and a demo never reads
567
+ # it. Read by bin/start.mjs and shared/brand.mjs.
568
+ # effect: deployment
569
+ CLEAROTRON_ORGANISATION_NAME=
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- 22
1
+ 22.13
package/CONTRIBUTING.md CHANGED
@@ -6,9 +6,13 @@ you cannot run and why, and the three rules that fail CI if you miss them.
6
6
  Start with [README.md](README.md) for what the engine does and [INSTALL.md](INSTALL.md) for a real
7
7
  installation.
8
8
 
9
+ If a word in the code means something you did not expect, [`docs/GLOSSARY.md`](docs/GLOSSARY.md)
10
+ defines the ones that carry a local meaning — arm, seat, plant, ledger, receipt, carry-through and
11
+ the rest — with the file that owns each.
12
+
9
13
  ## What you can run, with nothing but a clone
10
14
 
11
- **Node 22 is a hard floor.** `package.json` declares it, `.nvmrc` pins it, and the free US register
15
+ **Node 22.13 is a hard floor.** `package.json` declares it, `.nvmrc` pins it, and the free US register
12
16
  runs on `node:sqlite`. Node 20 will fail in ways that look like your change.
13
17
 
14
18
  ```bash
@@ -76,7 +80,7 @@ product and will not be published. Its absence weakens nothing you can run — t
76
80
  the machinery, and the scenario suite covers the answers. The validation ladder, from the $0 offline
77
81
  suite to a paid live run, is [docs/E2E.md](docs/E2E.md).
78
82
 
79
- **Some comments cite issues you cannot open** — `(tracker issue 324)` and the like, against the private tracker this
83
+ **Some comments cite issues you cannot open** — `` and the like, against the private tracker this
80
84
  repository was cut from. They are being removed rather than preserved.
81
85
  [ADR-0005](docs/decisions/0005-comments-carry-reasoning.md) is the ruling and states what a new comment
82
86
  has to meet; read it there rather than from a summary here. New work cites this repository's issues
@@ -91,13 +95,13 @@ any writing pass over the documentation, applies to them.
91
95
 
92
96
  ## The three rules that fail CI
93
97
 
94
- **1. Rebuild `portal-ui/dist` and commit it.** The bundle is committed so a deploy never builds. CI
95
- rebuilds it from source and requires byte equality, so a change under `portal-ui/src` that ships
96
- without its rebuilt bundle fails:
98
+ **1. Build `portal-ui/dist` before you push.** The bundle is not committed; it is gitignored, and
99
+ CI runs `npm run build:ui` from source. So there is nothing to add run it locally when you touch
100
+ `portal-ui/src`, because a bundle that does not build fails CI and there is no committed copy to
101
+ fall back on:
97
102
 
98
103
  ```bash
99
104
  npm run build:ui
100
- git add portal-ui/dist
101
105
  ```
102
106
 
103
107
  CI builds on the exact Node version named in