clearotron 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +105 -0
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +57 -52
- package/README.md +2 -1
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +4 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +114 -37
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +97 -119
- package/bin/start.mjs +29 -25
- package/bin/stop.mjs +65 -3
- package/bin/update.mjs +7 -7
- package/bin/uspto-sync.mjs +1 -1
- package/build-info.json +2 -2
- package/docs/DELIVERY.md +6 -2
- package/docs/RELEASES.md +6 -4
- package/docs/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +7 -4
- package/docs/architecture/05-config-governance.md +38 -5
- package/docs/architecture/06-operations-runbook.md +13 -1
- package/docs/architecture/09-security-and-data.md +1 -1
- package/docs/decisions/0004-documentation-structure.md +1 -1
- package/driver/CHANGELOG.md +95 -1
- package/driver/README.md +2 -2
- package/driver/ask-ledger.mjs +72 -4
- package/driver/authority-trees.mjs +1 -1
- package/driver/call-capture.mjs +1 -1
- package/driver/card-frame.mjs +1 -1
- package/driver/case-law-ledger.mjs +1 -1
- package/driver/claim-liveness.mjs +1 -1
- package/driver/common-law-receipts.mjs +1 -1
- package/driver/commonlaw-carry.mjs +1 -1
- package/driver/config-inventory.mjs +1 -1
- package/driver/connotation-search.mjs +12 -12
- package/driver/contract-audit.mjs +5 -5
- package/driver/contract-dictation-registry.mjs +4 -4
- package/driver/contract-dictation.mjs +2 -2
- package/driver/contract-e3-backlog.mjs +6 -6
- package/driver/contract-vocabulary.mjs +3 -3
- package/driver/corrections-feedforward.mjs +1 -1
- package/driver/coverage-form-io.mjs +2 -2
- package/driver/coverage-form.mjs +4 -4
- package/driver/coverage-ledger.mjs +3 -3
- package/driver/coverage-union.mjs +1 -1
- package/driver/declination-call.mjs +35 -3
- package/driver/declination-duty.mjs +1 -1
- package/driver/deliver-trigger.sh +3 -3
- package/driver/deploy-live-run-guard.mjs +6 -2
- package/driver/dev-portal.mjs +1 -1
- package/driver/disposition-call.mjs +4 -4
- package/driver/disposition-tool.mjs +4 -4
- package/driver/disposition-union.mjs +2 -2
- package/driver/doc-constants.mjs +1 -1
- package/driver/door-gates.mjs +2 -2
- package/driver/doubt-selection.mjs +2 -2
- package/driver/drainer-identity.mjs +1 -1
- package/driver/driver.config.mjs +63 -11
- package/driver/e2e-rounds.mjs +2 -2
- package/driver/effort-model.mjs +2 -2
- package/driver/engine/anthropic-agent.mjs +24 -24
- package/driver/engine/auth.mjs +1 -1
- package/driver/engine/common.mjs +1 -1
- package/driver/engine/deny-authority-write.mjs +1 -1
- package/driver/engine/jx-turn.mjs +1 -1
- package/driver/engine/mcp/clarivate-server.mjs +1 -1
- package/driver/engine/mcp/corsearch-server.mjs +1 -1
- package/driver/engine/mcp/declination-server.mjs +1 -1
- package/driver/engine/mcp/dispositions-server.mjs +1 -1
- package/driver/engine/mcp/euipo-server.mjs +1 -1
- package/driver/engine/mcp/fetch-server.mjs +1 -1
- package/driver/engine/mcp/free-tier-server.mjs +2 -2
- package/driver/engine/mcp/gather-config.mjs +11 -11
- package/driver/engine/mcp/perplexity-server.mjs +1 -1
- package/driver/engine/mcp/recording-server.mjs +8 -4
- package/driver/engine/mcp/signa-server.mjs +1 -1
- package/driver/engine/mcp/uspto-local-server.mjs +1 -1
- package/driver/engine/openai-agent.mjs +2 -2
- package/driver/engine-build.mjs +2 -2
- package/driver/enqueue-schema.mjs +2 -2
- package/driver/enqueue.mjs +1 -1
- package/driver/envelope-settle.mjs +1 -1
- package/driver/evidence-claim-invariant.mjs +2 -2
- package/driver/findings-model.mjs +8 -8
- package/driver/floor-duty.mjs +1 -1
- package/driver/form-neighbourhood.mjs +1 -1
- package/driver/framework.mjs +1 -1
- package/driver/gateway.mjs +28 -23
- package/driver/grounds-grammar.mjs +1 -1
- package/driver/hit-list.mjs +1 -1
- package/driver/jurisdiction-systems.mjs +1 -1
- package/driver/jx-lanes.mjs +1 -1
- package/driver/jx-units.mjs +1 -1
- package/driver/jx.mjs +3 -3
- package/driver/knockout-assess-record.mjs +5 -1
- package/driver/narrative-refutation-record.mjs +3 -3
- package/driver/numeric-setting.mjs +1 -1
- package/driver/owner-use-check.mjs +184 -0
- package/driver/package.json +2 -2
- package/driver/phase0.mjs +1 -1
- package/driver/pipeline-knockout.mjs +52 -4
- package/driver/pipeline.mjs +215 -63
- package/driver/placement-diff.mjs +2 -2
- package/driver/placement-form.mjs +4 -4
- package/driver/placement-union.mjs +1 -1
- package/driver/portal-acks.mjs +1 -1
- package/driver/portal-config-view.mjs +2 -2
- package/driver/portal-local-auth.mjs +1 -1
- package/driver/portal-report.mjs +6 -6
- package/driver/portal-service.mjs +15 -15
- package/driver/predelivery-lint.mjs +29 -11
- package/driver/prelim-variants-record.mjs +2 -2
- package/driver/profile-page.html +1 -1
- package/driver/profile-selection.mjs +1 -1
- package/driver/profile-service.mjs +2 -2
- package/driver/profiles.mjs +1 -1
- package/driver/progress.mjs +6 -6
- package/driver/provider-usage.mjs +1 -1
- package/driver/publish/demo-marking.mjs +1 -1
- package/driver/publish/index.mjs +47 -6
- package/driver/publish/knockout.mjs +36 -14
- package/driver/publish/parse.mjs +4 -4
- package/driver/publish/publish-inputs.mjs +2 -2
- package/driver/publish/register-presence.mjs +1 -1
- package/driver/publish/render-knockout.mjs +198 -31
- package/driver/publish/report-data.mjs +13 -3
- package/driver/publish/seed-pool.mjs +24 -9
- package/driver/queue-watch-probe.mjs +1 -1
- package/driver/queue-watch-verdict.mjs +1 -1
- package/driver/recall-reconciliation.mjs +1 -1
- package/driver/recipe-service.mjs +1 -1
- package/driver/record-carry.mjs +141 -2
- package/driver/recording-agreement.mjs +3 -3
- package/driver/reference-score.mjs +59 -9
- package/driver/reference-strip-signatures.mjs +68 -0
- package/driver/refusal-bound.mjs +3 -3
- package/driver/register-availability.mjs +2 -2
- package/driver/register-count.mjs +1 -1
- package/driver/register-digest-record.mjs +31 -1
- package/driver/register-grant-vocabulary.mjs +2 -2
- package/driver/register-plan.mjs +8 -8
- package/driver/register-records.mjs +2 -2
- package/driver/registry-fidelity.mjs +3 -3
- package/driver/remedy-accounting.mjs +1 -1
- package/driver/repair-composers.mjs +2 -2
- package/driver/repair-digest.mjs +3 -3
- package/driver/repairs.mjs +7 -7
- package/driver/replay-archive.mjs +2 -0
- package/driver/report-card-record.mjs +2 -2
- package/driver/result-noun-fields.mjs +10 -3
- package/driver/run-economics.mjs +2 -2
- package/driver/run-integrity.mjs +1 -1
- package/driver/runner.mjs +22 -22
- package/driver/scope-rules.mjs +1 -1
- package/driver/search-policy.mjs +3 -3
- package/driver/skeptic-search.mjs +1 -1
- package/driver/skills/blind-frame/SKILL.md +1 -1
- package/driver/skills/case-law-citation/SKILL.md +2 -2
- package/driver/skills/knockout-assess/SKILL.md +10 -4
- package/driver/skills/prelim-search/SKILL.md +2 -2
- package/driver/skills/prelim-search/template-formatting.md +1 -1
- package/driver/skills/prelim-search/templates/email/generic.md +1 -1
- package/driver/skills/prelim-search/worked-examples.md +1 -1
- package/driver/skills/prelim-variants/SKILL.md +2 -2
- package/driver/stage-context.mjs +1 -1
- package/driver/stages-knockout.mjs +55 -4
- package/driver/stages.mjs +97 -40
- package/driver/stray-artifacts.mjs +2 -2
- package/driver/suite-census.json +188 -44
- package/driver/synthesis-record.mjs +1 -1
- package/driver/systemd/clearotron-client-mcp.service +1 -1
- package/driver/systemd/clearotron-portal.service +1 -1
- package/driver/systemd/render-units.mjs +1 -1
- package/driver/tokens.mjs +1 -1
- package/driver/tool-calls.mjs +1 -1
- package/driver/turnaround-bands.mjs +1 -1
- package/driver/unit-file-drift.mjs +1 -1
- package/driver/unit-inventory.mjs +121 -61
- package/driver/unit-state-verdict.mjs +20 -12
- package/driver/verify-knockout.mjs +10 -2
- package/driver/verify.mjs +14 -14
- package/driver/whatif-memo-run.mjs +46 -5
- package/driver/whatif-queue.mjs +1 -1
- package/driver/whatif-worker.mjs +1 -1
- package/mcp-server/CHANGELOG.md +12 -0
- package/mcp-server/README.md +3 -3
- package/mcp-server/http-server.mjs +44 -1
- package/mcp-server/key-socket.mjs +184 -0
- package/mcp-server/lib/audit-view.mjs +69 -2
- package/mcp-server/lib/brief.mjs +15 -0
- package/mcp-server/lib/driver.mjs +7 -1
- package/mcp-server/lib/events.mjs +1 -1
- package/mcp-server/lib/http-handler.mjs +1 -1
- package/mcp-server/lib/knockout.mjs +435 -0
- package/mcp-server/lib/ops.mjs +4 -4
- package/mcp-server/lib/options.mjs +1 -1
- package/mcp-server/lib/plan.mjs +1 -1
- package/mcp-server/lib/runs.mjs +1 -1
- package/mcp-server/lib/scrub.mjs +1 -1
- package/mcp-server/lib/whatif.mjs +12 -3
- package/mcp-server/mint-token.mjs +1 -1
- package/mcp-server/package.json +2 -2
- package/mcp-server/server.mjs +76 -11
- package/package.json +3 -3
- package/portal-ui/package.json +1 -1
- package/providers/_shared/enumerate.mjs +1 -1
- package/providers/_shared/ledger-path.mjs +3 -3
- package/providers/_shared/ledger.mjs +1 -1
- package/providers/_shared/result-shape.mjs +3 -3
- package/providers/_shared/term-shape.mjs +1 -1
- package/providers/corsearch/src/core.js +1 -1
- package/providers/jx-subclass/BUILDING.md +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +12 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
- package/scripts/README.md +1 -1
- package/scripts/added-reference-check.mjs +29 -1
- package/scripts/ai-page-render-check.mjs +2 -1
- package/scripts/authority-boundary-probe.mjs +1 -1
- package/scripts/backfill-started-at.mjs +1 -1
- package/scripts/citation-line-check.mjs +3 -3
- package/scripts/clearances-render-check.mjs +4 -3
- package/scripts/compare.mjs +2 -2
- package/scripts/composer-render-check.mjs +6 -6
- package/scripts/contract-dictation-scan.mjs +2 -2
- package/scripts/dead-names.mjs +1 -1
- package/scripts/drain-preflight.mjs +5 -5
- package/scripts/e2e-unread-terminals.mjs +1 -1
- package/scripts/e2e.mjs +8 -8
- package/scripts/env-audit.mjs +27 -7
- package/scripts/env-classify.mjs +139 -15
- package/scripts/freeze-example-run.mjs +3 -3
- package/scripts/head-arrived-gated.mjs +1 -1
- package/scripts/headless-page.mjs +274 -0
- package/scripts/home-render-check.mjs +3 -2
- package/scripts/live-surface-check.mjs +92 -19
- package/scripts/main-health.mjs +1 -1
- package/scripts/merge-presence-check.mjs +3 -3
- package/scripts/mint-reference-strip-backlog.mjs +41 -0
- package/scripts/mint-suite-census.mjs +6 -6
- package/scripts/nightly-notice.mjs +1 -1
- package/scripts/portal-lifecycle-check.mjs +3 -3
- package/scripts/reconcile-runs.mjs +1 -1
- package/scripts/release-await-cut.mjs +101 -11
- package/scripts/release-version-pr-checks.mjs +26 -2
- package/scripts/release-version.mjs +2 -2
- package/scripts/render-check.mjs +66 -7
- package/scripts/report-frame-check.mjs +12 -0
- package/scripts/report-screenshot.mjs +62 -2
- package/scripts/revisit-render-check.mjs +3 -2
- package/scripts/score.mjs +18 -4
- package/scripts/strip-tracker-citations.mjs +116 -0
- package/scripts/test-run.mjs +3 -3
- package/scripts/third-party-notices.mjs +3 -3
- package/scripts/travelling-predicates.mjs +3 -3
- package/scripts/unexecuted-asserts.mjs +2 -2
- package/scripts/verify-publishable.mjs +2 -2
- package/scripts/write-up-form-census.mjs +1 -1
- package/shared/access-audience.mjs +215 -0
- package/shared/brand.mjs +13 -13
- package/shared/citation-scan.mjs +1 -1
- package/shared/client-door.mjs +7 -7
- package/shared/driver-dir.mjs +1 -1
- package/shared/env-aliases.mjs +0 -48
- package/shared/env-local.mjs +1 -1
- package/shared/identifier-scan.mjs +3 -3
- package/shared/invocation.mjs +1 -1
- package/shared/names-in-force.mjs +2 -0
- package/shared/product-owned-names.mjs +1 -1
- package/shared/register-selection.mjs +1 -1
- package/shared/scope.mjs +5 -5
- package/shared/server-units.mjs +4 -4
- package/shared/store-in-repo.mjs +2 -2
- package/shared/suite-census.mjs +4 -4
- package/shared/tracked-files.mjs +31 -0
- package/shared/tty-style.mjs +1 -1
- package/shared/uspto-index-size.mjs +1 -1
- package/shared/vacuous-pass.mjs +1 -1
- package/skills/clearotron-account/SKILL.md +42 -13
- package/driver/systemd/prelim-driver.path +0 -69
- package/driver/systemd/prelim-driver.service +0 -86
- package/driver/systemd/prelim-driver.timer +0 -14
- package/driver/systemd/prelim-outbox.path +0 -27
- package/driver/systemd/prelim-outbox.service +0 -37
- package/driver/systemd/prelim-outbox.timer +0 -21
- package/node_modules/exceljs/README_zh.md +0 -2878
- package/node_modules/exceljs/dist/LICENSE +0 -22
- package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
- package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
- package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
- package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
- package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
- package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
- package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
- package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
- package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
- package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
- package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
- package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
- package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
- package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
- package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
- package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
- package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
- package/node_modules/exceljs/dist/es5/index.js +0 -15
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
- package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
- package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
- package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
- package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
- package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
- package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
- package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
- package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.js +0 -59900
- package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
- package/node_modules/exceljs/dist/exceljs.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
- package/scripts/deploy-test.sh +0 -309
|
@@ -97,11 +97,11 @@ product doc.
|
|
|
97
97
|
| **Client allowlist** (`{version, grants:[{email, customer}]}`) | T2 | git + PR on the `CLIENT_ACCESS_MAP` file | see §2 row 4 | LIVE, file-only; surfaced read-only at `admin.access` |
|
|
98
98
|
| **Ops tokens** (scope ops/user, verbs, accounts, TTL) | T4 | `mint-token.mjs` CLI; jti denylist file | operator-held tokens | LIVE, CLI |
|
|
99
99
|
|
|
100
|
-
## 4b. The install surface names (
|
|
100
|
+
## 4b. The install surface names ()
|
|
101
101
|
|
|
102
102
|
The variables a **customer or installer** ever types carry the product’s own prefix. They are listed
|
|
103
103
|
by name in §5 below and in the upgrade table in INSTALL.md.
|
|
104
|
-
`
|
|
104
|
+
`CLEAROTRON` is the internal codename of the first product this engine shipped and means nothing to a reader
|
|
105
105
|
who has not read the code. Vendor credentials keep the vendor’s name (`SIGNA_API_KEY`,
|
|
106
106
|
`PERPLEXITY_API_KEY`, `ANTHROPIC_API_KEY`) — that already says who you bought them from.
|
|
107
107
|
|
|
@@ -226,10 +226,13 @@ environment including production**; unset resolves to `null` and throws at first
|
|
|
226
226
|
|
|
227
227
|
`CLEAROTRON_WORK_DIR` (~/trademark/workspace since; the two`.path` units
|
|
228
228
|
hardcode the old glob — see 04), `CLEAROTRON_WORKSPACE_PREFIX` (workspace-), `CLEAROTRON_QUEUE_DIR`,
|
|
229
|
+
`CLEAROTRON_CHECKOUT_DIR` (the installed package root every unit's `ExecStart` names; npm-owned and
|
|
230
|
+
replaced wholesale on upgrade, which is why the settings file lives OUTSIDE it — and why a service not
|
|
231
|
+
restarted after an upgrade keeps serving the deleted tree),
|
|
229
232
|
`CLEAROTRON_INSTRUCTIONS_DIR` (config store), `CLEAROTRON_CUSTOMERS_DIR` (config store), `CLEAROTRON_RECIPES_DIR`,
|
|
230
233
|
`CLEAROTRON_REPORTS_DIR` (**no default since — unset refuses**),`CLEAROTRON_RUN_LOCK_DIR`, `CLEAROTRON_OUTBOX_DIR`,
|
|
231
234
|
`CLEAROTRON_STAFF_POOL_ROOT`, `CLEAROTRON_REGISTER_CALL_LOG` (~/trademark/telemetry/…, homedir-derived at
|
|
232
|
-
call time, resolved by existence over the pre- telemetry directory too; the pre-
|
|
235
|
+
call time, resolved by existence over the pre-change telemetry directory too; the pre-
|
|
233
236
|
`CORSEARCH_*_LOG` names remain accepted for one release),
|
|
234
237
|
`CLEAROTRON_REGISTER_RECORD_LOG` (**no longer a box path since ** — the driver injects
|
|
235
238
|
`<runDir>/_driver/register-record-bodies.jsonl` per run; setting it by hand pins every run's record
|
|
@@ -255,6 +258,19 @@ drops BACKOFF from the prefix, which the elided spelling this row used to carry
|
|
|
255
258
|
`CLEAROTRON_OUTBOX_NOPROGRESS_MAX`, `TRADEMARK_MSGID_DOMAIN` (enqueue.local).
|
|
256
259
|
Code-set per stage (not operator-set): `CLEAROTRON_GATHER_AGENT` / `CLEAROTRON_GATHER_SESSION_KEY` / `CLEAROTRON_GATHER_SESSION_ID`.
|
|
257
260
|
|
|
261
|
+
**Who the completion notice reaches** — `CLEAROTRON_REQUESTER_WHATSAPP` (empty; effect: deployment) is a
|
|
262
|
+
JSON map of requester email or handle → number, and `CLEAROTRON_WHATSAPP_OPERATOR_COPY` (on unless `0`,
|
|
263
|
+
`false` or `no`; effect: deployment) keeps or drops the operator's own copy of the same notice. The two are
|
|
264
|
+
independent: an operator can stop receiving copies of other people's runs without changing who the
|
|
265
|
+
requester notice reaches.
|
|
266
|
+
|
|
267
|
+
`CLEAROTRON_AGENT_WHATSAPP` above is keyed by AGENT id, and every user of a deployment shares one agent —
|
|
268
|
+
which is why the notice used to reach the operator and never the person who ordered the search. Unset is
|
|
269
|
+
an EMPTY roster and never a demo one: a deployment that configures nothing routes no notice, and the
|
|
270
|
+
delivery record names whose number is missing rather than quietly substituting the operator's.
|
|
271
|
+
`CLEAROTRON_REQUESTER_WHATSAPP` holds contact data; treat it as a mirror-aware value under §6 wherever an
|
|
272
|
+
integrator holds a copy.
|
|
273
|
+
|
|
258
274
|
### 5.8 Credentials — T4 (secrets; EnvironmentFile only; mirror-aware — see §6)
|
|
259
275
|
|
|
260
276
|
`ANTHROPIC_API_KEY`, `CORSEARCH_SESSION_KEY` (fail-closed preflight),
|
|
@@ -303,7 +319,7 @@ systemd, writes no heartbeat, and must keep saying "waiting to start" rather tha
|
|
|
303
319
|
repo** — `git grep process.env.CLIENT_ACCESS` here returns nothing, so they are governed here and
|
|
304
320
|
never appear in the audit).
|
|
305
321
|
|
|
306
|
-
**Which identity source the portal runs (
|
|
322
|
+
**Which identity source the portal runs () — T4, and it is chosen by name, never inferred.**
|
|
307
323
|
`PORTAL_AUTH_MODE` selects the door: unset or `auth-proxy` (the default for a hosted deployment) means
|
|
308
324
|
any login system in front that authenticates in the browser and forwards a verifiable JWT per request.
|
|
309
325
|
**Any OIDC or JWT proxy is a choice per deployment** — for example Cloudflare Access, which is not a
|
|
@@ -318,7 +334,7 @@ values the staff MCP face already reads as `TRADEMARK_MCP_OIDC_ISSUER`, `TRADEMA
|
|
|
318
334
|
never passed them, which is how one product shipped a provider-agnostic API face and a single-vendor
|
|
319
335
|
web portal.
|
|
320
336
|
|
|
321
|
-
**ALL FIVE DOORS READ THE FOUR NOW, and
|
|
337
|
+
**ALL FIVE DOORS READ THE FOUR NOW, and the "the auth mechanism is out of scope" boundary is
|
|
322
338
|
superseded** (owner, 2026-08-23: an installation brings its own identity provider and this product may
|
|
323
339
|
not force one). The two write services and the client MCP origin gained the set they lacked; the table
|
|
324
340
|
below names every one of the twelve. The client door's four fall back to the staff face's equivalents
|
|
@@ -441,6 +457,23 @@ it in CI and nowhere else — on a deployed box it silences the one check that n
|
|
|
441
457
|
`portal-ui/` has **zero** env config (no `VITE_*`, no `import.meta.env`) — the SPA talks to its
|
|
442
458
|
origin; all portal config lives server-side in portal-service.
|
|
443
459
|
|
|
460
|
+
### 5.11 Release pipeline — CI only (never set on a deployment)
|
|
461
|
+
|
|
462
|
+
These are read by the release workflow and by nothing a deployment runs. They are listed here because a
|
|
463
|
+
name absent from this register is a name nobody can look up, not because an operator has any reason to set
|
|
464
|
+
one — and setting either on a box does nothing at all.
|
|
465
|
+
|
|
466
|
+
`CLEAROTRON_CUT_REF` (default `HEAD`) — which ref the cut decision reads the version from. The jobs that
|
|
467
|
+
ask about `main` set it to `origin/main` explicitly, because their checkout is pinned to the run's own ref
|
|
468
|
+
and `HEAD` there is that ref rather than the branch being decided about. A job that asks about the wrong
|
|
469
|
+
subject gets a confident wrong answer.
|
|
470
|
+
|
|
471
|
+
`CLEAROTRON_RELEASE_WAIT_MS` (default 25 minutes) — how long a requested cut waits for the version pull
|
|
472
|
+
request to merge itself. A rehearsal sets `0`, so the wiring is exercised without holding a runner. Giving
|
|
473
|
+
up is a quiet success by design and the scheduled run underneath catches what it misses, so a budget that
|
|
474
|
+
is wrong shows up as a slow job rather than a red one — which is why it is written down rather than left
|
|
475
|
+
to be inferred from a timeout.
|
|
476
|
+
|
|
444
477
|
## 6. Drift patterns — values that are mirrored by design
|
|
445
478
|
|
|
446
479
|
Wherever one value must exist in more than one place, name every copy and rotate them in one
|
|
@@ -110,6 +110,18 @@ and the environment file holding the secrets.
|
|
|
110
110
|
- **A scheduled gateway restart** (chat-channel session and plugin-loader hygiene) should *defer*
|
|
111
111
|
off live work rather than skip: wait while a run is live, up to a bound, then restart anyway.
|
|
112
112
|
`XDG_RUNTIME_DIR` must be set for `systemctl --user` to work from cron.
|
|
113
|
+
- **Pin the agent id before upgrading an install made before 0.2.2.** The default agent id changed
|
|
114
|
+
from `clawdi` to `localagent`, and that id is a path segment: runs live under
|
|
115
|
+
`<workspaceRoot>/workspace-<agent>/studio/prelim-search/`. An install that never set one starts
|
|
116
|
+
reading an empty workspace, and empty reads as "no runs" rather than as an error. Set **both**
|
|
117
|
+
variables in the environment file — the gather servers read their own:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
CLEAROTRON_DEFAULT_AGENT=clawdi
|
|
121
|
+
CLEAROTRON_GATHER_AGENT=clawdi
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
An install that already sets them is unaffected, and a fresh install needs neither.
|
|
113
125
|
- **Integrator-platform upgrades** go through that platform's own guarded upgrade path — dry-run,
|
|
114
126
|
exact-version confirm, stop → update → start. Never `npm i -g` / `pnpm add -g` directly.
|
|
115
127
|
|
|
@@ -242,7 +254,7 @@ the measurement that says so is.
|
|
|
242
254
|
|
|
243
255
|
A box upgraded across the rename keeps whatever NAME its **call** ledger already had
|
|
244
256
|
(`corsearch-calls.jsonl`), and across the move keeps whatever DIRECTORY it sits in (the
|
|
245
|
-
pre- telemetry directory), because the resolver reads the file that is there. Read
|
|
257
|
+
pre-change telemetry directory), because the resolver reads the file that is there. Read
|
|
246
258
|
`providers/_shared/ledger-path.mjs` to see which of the four candidates a box resolves to.
|
|
247
259
|
|
|
248
260
|
## Access control and instance isolation
|
|
@@ -203,7 +203,7 @@ stylesheets above.
|
|
|
203
203
|
| **Doctrine** | `skills/`, framework decks, worked examples | The asset; transfers under the definitive agreement. Worked examples derive from real matters — treat as client-adjacent |
|
|
204
204
|
| **Customer profiles** | `profiles/*.json`, context packs, `_audit.log` | Client-identifying by design (names, own brands, competitor lists) — the reason this *pack* names no clients |
|
|
205
205
|
| **Reference library / calibration corpus** | outside the repo | Built on real client matters — **confidential client material, not freely transferable IP**; transfer needs a client-consent/sanitization plan |
|
|
206
|
-
| **Telemetry** | `~/trademark/telemetry/*.jsonl` (a box upgraded across the move keeps the pre- telemetry directory — resolved by existence, oldest first),`_driver/*.jsonl` | Billing-grade provider usage + attempt telemetry; append-only; no automated retention |
|
|
206
|
+
| **Telemetry** | `~/trademark/telemetry/*.jsonl` (a box upgraded across the move keeps the pre-change telemetry directory — resolved by existence, oldest first),`_driver/*.jsonl` | Billing-grade provider usage + attempt telemetry; append-only; no automated retention |
|
|
207
207
|
|
|
208
208
|
**Posture commitments** (engineering-true, restated from the outward materials): no client data
|
|
209
209
|
trains any model; each client's context is isolated in its profile bundle and frozen per run;
|
|
@@ -69,7 +69,7 @@ at runtime.
|
|
|
69
69
|
exceed the threshold, 15 were already named by an ancestor**, and three one-line additions closed the
|
|
70
70
|
rest. The mechanism was not new — it was unchecked.
|
|
71
71
|
|
|
72
|
-
**This paragraph is what
|
|
72
|
+
**This paragraph is what the absence-record predicted it would become.** That record said "a new
|
|
73
73
|
directory ships without a front door and nothing says so", named itself as a known gap rather than a
|
|
74
74
|
mechanism, and ended "if the guard is built later, this paragraph is what it replaces". It has been.
|
|
75
75
|
|
package/driver/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,98 @@
|
|
|
1
|
-
#
|
|
1
|
+
# clearotron-driver
|
|
2
|
+
|
|
3
|
+
## 0.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- df095a8: Fixed: The configuration audit now refuses when one of the files it reads is missing, instead of reporting that nothing sets the variables that file records. Its answer decides which settings look unused, so a file it could not read was being counted as a file with nothing in it.
|
|
8
|
+
- f05657c: New: An assistant on a clearance account can now answer "what if this were different" about a report already delivered. It writes a short memo reasoning over the evidence already gathered, instead of asking for a new search.
|
|
9
|
+
- d52cd98: Fixed: A scheduled deploy no longer updates the working copy while an experiment run is in progress. It now waits, as it already did for a clearance run.
|
|
10
|
+
- f05657c: Fixed: A client account asking about a mark in a knockout screen now receives the risk band, the reason for it and the findings behind it. It previously returned an empty answer.
|
|
11
|
+
- 38ce32f: New: A Knockout search now looks up what the owner of a registered right actually sells, and the report says where that answer came from. Before, the assessment inferred the owner's trade from the company name alone, then told you to go and obtain the registration's own goods list. The name is not evidence of the trade. It happened to read correctly on one search and would have read confidently wrong on the next.
|
|
12
|
+
|
|
13
|
+
Fixed: Where the lookup finds nothing, the report says so plainly and still delivers. An unanswered search is never written up as a clean negative, and a provider outage never withholds a report.
|
|
14
|
+
|
|
15
|
+
For operators: this adds one web search per promoted registered filing, deduplicated by owner and capped at three per searched name. A search with no registered right against it costs nothing extra.
|
|
16
|
+
- 57eaf24: Fixed: A knockout report no longer shows a register filing's risk band beside a line saying that filing carries no rating. The band shows when the reviewer gave one, and the line appears only when they did not.
|
|
17
|
+
- b1f188f: Fixed: The unit inventory again records why every shipped unit that runs on no box is still shipped. One entry lost its reason when its name was superseded.
|
|
18
|
+
- 3de0828: New: One engine process can now serve both people arriving through a tunnel and programs on the same machine holding an access key. It listens for the key on a local socket, which no tunnel can forward to, and the network door never accepts a key at all. Deployments that needed both used to run the process twice, on two ports, with two units to keep in step.
|
|
19
|
+
|
|
20
|
+
Fixed: The startup lines now say whether a local key path exists, and what its permissions are. An operator can see it without opening a unit file. A deployment with no key path is told that too, rather than left to infer it from silence.
|
|
21
|
+
|
|
22
|
+
For operators: set TRADEMARK_MCP_KEY_SOCKET to the socket path the local key door should listen on. It is created with owner and group access only. Leaving it unset changes nothing about an existing deployment. The door refuses to open without a grants file, or alongside the authentication bypass.
|
|
23
|
+
- 235cf07: Fixed: Stopping the demo now stops everything it started, including when the stop signal reaches only the command you can see rather than the whole terminal.
|
|
24
|
+
- be648b6: Fixed: The architecture diagrams in the public documentation render with their intended colours again, and thirteen code comments state the colour they meant.
|
|
25
|
+
- 97b7c96: Fixed: The deployment check now reports the services a box is actually running. It had been asking systemd about unit names left behind by a rename, so a healthy box reported nothing running.
|
|
26
|
+
- f05657c: Fixed: The "your screen is done" notice for a knockout search now goes to the person who ordered it, with the operator kept as a copy. It previously went to the operator alone, whoever had asked for the search.
|
|
27
|
+
- c4b6b58: Fixed: The link in your completion email and message now opens the report. It previously pointed at a path the site does not serve, so it led to a sign-in and then a dead page. This affected every delivered report on both search products, in the email, the chat notice and the assistant's own answer. The workbook link in the same email was always correct and is unchanged.
|
|
28
|
+
|
|
29
|
+
Fixed: The chat notice now goes to the person who ordered the search, with the operator keeping a copy they can switch off. Before, it went only to whoever runs the service, so the requester was never told their search had finished.
|
|
30
|
+
|
|
31
|
+
For operators: hold requesters' numbers in CLEAROTRON_REQUESTER_WHATSAPP, keyed by email address or by the handle a request arrives under. Where no number is held, the delivery record says so by name instead of quietly sending the notice to you. Set CLEAROTRON_WHATSAPP_OPERATOR_COPY=0 to stop receiving copies of other people's runs.
|
|
32
|
+
- bb1a409: New: A Knockout report now carries the whole assessment behind its ratings. You get the reviewer's notes and the reviewer's own opening read of each name. You also get the reasoning that holds a name at its rating, and what would move it. This was written during every search and reached only the audit workbook, so the report showed a rating without the thinking under it. The notes are marked as reference material rather than mixed into the findings.
|
|
33
|
+
|
|
34
|
+
New: A registered filing the search formed a view on now shows that rating and the read behind it. Before, the one registered right on a page was the only entry carrying no rating, beside softer uses that all carried one. That inverted what matters legally. A filing the search did not weigh still says so plainly.
|
|
35
|
+
- df6277c: Fixed: A live registration covering the goods you asked about is no longer left out of a report for want of room. It is reported, or the report says why it is distant.
|
|
36
|
+
- 9ba8cd0: Fixed: A what-if memo is now refused if it writes anywhere in the delivered run except its own memo folder, and the refusal names the file.
|
|
37
|
+
- 8c8e200: Fixed: A what-if question left queued when its run is archived now comes back with a reason, instead of never being answered.
|
|
38
|
+
- bb1a409: Fixed: The delivery record now states plainly when a report's write-up length and ranking rules could not be checked against the delivered text. It says the rules were applied to nothing on that run. Before, this was recorded as an unlabelled failed check. It looked like any other, so a run could deliver with those rules unverified and nobody would see it.
|
|
39
|
+
- 9ba8cd0: For operators: Each run record now says whether the model id it observed was a pinned snapshot or an alias the provider can repoint.
|
|
40
|
+
- aea4a4e: Fixed: The deployment check now says which checkout a service is running from even when its unit file does not declare one.
|
|
41
|
+
- bb1a409: New: The tools that show how a search reached its answer now work on a Knockout search. You can ask what it found, what it looked at, where it searched and came back empty, and read the delivered report itself. Until now they returned nothing at all for a Knockout search, so anyone asking how one of these results was reached saw a blank record.
|
|
42
|
+
|
|
43
|
+
New: The proof-of-search record answers on these searches. It lists what was searched and found nothing, which is what answers a challenge to a result. Where a tool has nothing to show for this kind of search, it now says so in words. An empty list reads as "we looked and found nothing".
|
|
44
|
+
- 14d6d28: Fixed: The demo and the install steps now start on native Windows, where they previously crashed on the first internal module they loaded.
|
|
45
|
+
|
|
46
|
+
## 0.3.0-beta.0
|
|
47
|
+
|
|
48
|
+
### Minor Changes
|
|
49
|
+
|
|
50
|
+
- bb1a409: New: A Knockout report now carries the whole assessment behind its ratings. You get the reviewer's notes and the reviewer's own opening read of each name. You also get the reasoning that holds a name at its rating, and what would move it. This was written during every search and reached only the audit workbook, so the report showed a rating without the thinking under it. The notes are marked as reference material rather than mixed into the findings.
|
|
51
|
+
|
|
52
|
+
New: A registered filing the search formed a view on now shows that rating and the read behind it. Before, the one registered right on a page was the only entry carrying no rating, beside softer uses that all carried one. That inverted what matters legally. A filing the search did not weigh still says so plainly.
|
|
53
|
+
- bb1a409: New: The tools that show how a search reached its answer now work on a Knockout search. You can ask what it found, what it looked at, where it searched and came back empty, and read the delivered report itself. Until now they returned nothing at all for a Knockout search, so anyone asking how one of these results was reached saw a blank record.
|
|
54
|
+
|
|
55
|
+
New: The proof-of-search record answers on these searches. It lists what was searched and found nothing, which is what answers a challenge to a result. Where a tool has nothing to show for this kind of search, it now says so in words. An empty list reads as "we looked and found nothing".
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- df6277c: Fixed: A live registration covering the goods you asked about is no longer left out of a report for want of room. It is reported, or the report says why it is distant.
|
|
60
|
+
- 9ba8cd0: Fixed: A what-if memo is now refused if it writes anywhere in the delivered run except its own memo folder, and the refusal names the file.
|
|
61
|
+
- 8c8e200: Fixed: A what-if question left queued when its run is archived now comes back with a reason, instead of never being answered.
|
|
62
|
+
- bb1a409: Fixed: The delivery record now states plainly when a report's write-up length and ranking rules could not be checked against the delivered text. It says the rules were applied to nothing on that run. Before, this was recorded as an unlabelled failed check. It looked like any other, so a run could deliver with those rules unverified and nobody would see it.
|
|
63
|
+
- 9ba8cd0: For operators: Each run record now says whether the model id it observed was a pinned snapshot or an alias the provider can repoint.
|
|
64
|
+
- aea4a4e: Fixed: The deployment check now says which checkout a service is running from even when its unit file does not declare one.
|
|
65
|
+
- 14d6d28: Fixed: The demo and the install steps now start on native Windows, where they previously crashed on the first internal module they loaded.
|
|
66
|
+
|
|
67
|
+
## 0.2.1
|
|
68
|
+
|
|
69
|
+
### Patch Changes
|
|
70
|
+
|
|
71
|
+
- 3cc154a: Fixed: A report now keeps a mark the search confirmed, instead of dropping it because it was already noted on an internal working sheet. Where a mark is still missing, the run records it by name rather than closing the question.
|
|
72
|
+
- 3cc154a: Fixed: Asking a what-if question about a delivered report now returns a memo, instead of failing to find the run it was asked about.
|
|
73
|
+
- 0f7b44a: New: `clearotron demo` now publishes all four example reports — one per product — instead of only the first.
|
|
74
|
+
- 2138a3c: For operators: The `beta` channel now gets a release when there is something worth testing, days apart, instead of one on every merge.
|
|
75
|
+
- 8b5ab91: Fixed: `doctor` no longer reports a working Cloudflare Access door as unprotected. An API-style door and a failing origin are now told apart, each with its own message. Neither is reported as a pass.
|
|
76
|
+
- 77cf56d: For operators: The configuration reference now explains the two deprecated search-log variables in full, instead of stopping mid-sentence.
|
|
77
|
+
- 0dcd05a: Fixed: the settings catalogue now lists `CLEAROTRON_CHECKOUT_DIR`, the path every service file points at. The installer still fills it in for you. It is written down so that anyone whose service will not start can look it up.
|
|
78
|
+
|
|
79
|
+
## 0.2.1-beta.2
|
|
80
|
+
|
|
81
|
+
### Patch Changes
|
|
82
|
+
|
|
83
|
+
- 8b5ab91: Fixed: `doctor` no longer reports a working Cloudflare Access door as unprotected. An API-style door and a failing origin are now told apart, each with its own message. Neither is reported as a pass.
|
|
84
|
+
|
|
85
|
+
## 0.2.1-beta.1
|
|
86
|
+
|
|
87
|
+
### Patch Changes
|
|
88
|
+
|
|
89
|
+
- 0dcd05a: Fixed: the settings catalogue now lists `CLEAROTRON_CHECKOUT_DIR`, the path every service file points at. The installer still fills it in for you. It is written down so that anyone whose service will not start can look it up.
|
|
90
|
+
|
|
91
|
+
## 0.2.1-beta.0
|
|
92
|
+
|
|
93
|
+
### Patch Changes
|
|
94
|
+
|
|
95
|
+
- 77cf56d: For operators: The configuration reference now explains the two deprecated search-log variables in full, instead of stopping mid-sentence.
|
|
2
96
|
|
|
3
97
|
## 0.2.0
|
|
4
98
|
|
package/driver/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# clearotron-driver — deterministic driver for the prelim-search trademark workflow
|
|
2
2
|
|
|
3
3
|
Orchestration in **code**; the LLM does only judgment leaves. Each pipeline stage is **one blocking
|
|
4
4
|
engine turn** (default engine: `anthropic-agent`, shelling `claude -p` per stage); fan-out/fan-in/
|
|
@@ -26,7 +26,7 @@ integrator ──job JSON (enqueue CLI / start_run / queue file)──┐
|
|
|
26
26
|
|
|
27
27
|
## Per-agent execution (multi-queue)
|
|
28
28
|
|
|
29
|
-
A
|
|
29
|
+
A clearotron job runs **as the identity that forwarded it** — derived from the queue LOCATION it was
|
|
30
30
|
claimed from (`<workspacePrefix><agentId>/…/queue`, see `driver.config.mjs`), so there is no
|
|
31
31
|
forwarder→agent map to maintain. The run-dir sits in that identity's workspace and the delivery
|
|
32
32
|
packet names that identity as the reply route. **Publishing stays centralized** — `publish/` writes
|
package/driver/ask-ledger.mjs
CHANGED
|
@@ -82,7 +82,7 @@ export function planJoinFrom(planExecution) {
|
|
|
82
82
|
// KEY predates the instrument — "not recorded" — while one carrying the keys as null is a count the
|
|
83
83
|
// provider could not take. Reading the VALUES alone collapses those two into one sentence, which is
|
|
84
84
|
// the exact confusion exists to remove; `records: null` is indistinguishable from absent.
|
|
85
|
-
// The first cut of this did read the values, and it reported every pre- receipt as a failed
|
|
85
|
+
// The first cut of this did read the values, and it reported every pre-change receipt as a failed
|
|
86
86
|
// count. Bare qid strings are tolerated too — no driver ever wrote them, so that arm proved nothing.
|
|
87
87
|
const executed = new Map();
|
|
88
88
|
for (const x of planExecution?.executed ?? []) {
|
|
@@ -104,7 +104,7 @@ export function planJoinFrom(planExecution) {
|
|
|
104
104
|
* What a slice returned, in the reader's words — THREE-VALUED, and never a zero standing in for an
|
|
105
105
|
* absence (register-plan.mjs's join records why). `null` records with a finite count means the provider
|
|
106
106
|
* counted but the block carried no record list; both null means the receipt says nothing about the
|
|
107
|
-
* return, which is what every pre- run looks like. PURE.
|
|
107
|
+
* return, which is what every pre-change run looks like. PURE.
|
|
108
108
|
*/
|
|
109
109
|
export function returnedPhrase(info) {
|
|
110
110
|
if (!info) return "what it returned was not recorded";
|
|
@@ -127,7 +127,7 @@ export function returnedPhrase(info) {
|
|
|
127
127
|
*
|
|
128
128
|
* THE LEGITIMATE CLOSE IS PRESERVED, and it is the whole reason this keys on the RETURN rather than on
|
|
129
129
|
* execution: a probe that ran and found NOTHING has nothing to hand anyone, and closes exactly as it
|
|
130
|
-
* does today.
|
|
130
|
+
* does today. its own build named that trap before this rule existed.
|
|
131
131
|
*
|
|
132
132
|
* THREE STATES, and only one of them discharges:
|
|
133
133
|
*
|
|
@@ -574,6 +574,64 @@ export function parseAskClosureLines(text) {
|
|
|
574
574
|
return out;
|
|
575
575
|
}
|
|
576
576
|
|
|
577
|
+
/**
|
|
578
|
+
* The marks the CLIENT was actually shown — `findings[].mark` from findings.json, normalized.
|
|
579
|
+
*
|
|
580
|
+
* Returns null when the file is absent or unparseable, and null is NOT an empty set: an absence is a
|
|
581
|
+
* could-not-look, and the caller below fails toward leaving the ask OPEN rather than closing it on a
|
|
582
|
+
* file it could not read.
|
|
583
|
+
*
|
|
584
|
+
* ✕ NEVER a substring search of the serialized document. `"DELFIN" in JSON.stringify(findings)` is true
|
|
585
|
+
* when the findings name DELFIN TECHNOLOGIES OY and nothing else — a membership test that matches every
|
|
586
|
+
* longer name inflates whatever it is counting and reads as a clean result. The field, or nothing.
|
|
587
|
+
* PURE.
|
|
588
|
+
*/
|
|
589
|
+
export function deliveredMarks(findingsJsonText) {
|
|
590
|
+
let doc;
|
|
591
|
+
try { doc = JSON.parse(String(findingsJsonText ?? "")); } catch { return null; }
|
|
592
|
+
const rows = Array.isArray(doc?.findings) ? doc.findings : null;
|
|
593
|
+
if (!rows) return null;
|
|
594
|
+
return new Set(rows.map((f) => normMark(f?.mark)).filter(Boolean));
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
const normMark = (s) => String(s ?? "").toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Owner ruling 2026-09-07 (tracker issue 246), Option A, worded ABOUT THE MARK: a recall ask may close
|
|
601
|
+
* as immaterial only when the mark it went looking for is in the client's findings. Otherwise the mark
|
|
602
|
+
* is owed a finding and the ask stays open.
|
|
603
|
+
*
|
|
604
|
+
* The defect this answers: a recall probe found OSLER DELPHI, the closure stage pointed at
|
|
605
|
+
* `register-findings.md` — the run's own working sheet, where the mark genuinely IS reasoned — and the
|
|
606
|
+
* ask closed. The sheet is a citable file and the citation was true. It is simply not the document the
|
|
607
|
+
* client reads, and nothing checked that.
|
|
608
|
+
*
|
|
609
|
+
* ✕ SCOPED TO `ask:recall:` ASKS CARRYING A `mark_text`, deliberately, and this is the whole difference
|
|
610
|
+
* between the two readings of the ruling. `ask:recall-overflow:` rows carry a `term` — an owner name, a
|
|
611
|
+
* law firm, a probe never dispatched (Lewis Silkin LLP, NORDWEST Handel AG). Measured across three runs
|
|
612
|
+
* they are 28-29 per run and constant whether the run was healthy or not; reopening them would put
|
|
613
|
+
* names no lawyer asked for into the findings. A `mark_text` is the test because a mark is what a
|
|
614
|
+
* finding is about.
|
|
615
|
+
*
|
|
616
|
+
* Returns the owed row, or null when the ask is out of scope or the mark was delivered. PURE.
|
|
617
|
+
*/
|
|
618
|
+
export function recallMarkOwed(ask, delivered) {
|
|
619
|
+
if (!String(ask?.ask_id ?? "").startsWith("ask:recall:")) return null;
|
|
620
|
+
const st = ask?.ask?.structured ?? {};
|
|
621
|
+
const mark = String(st.mark_text ?? "").trim();
|
|
622
|
+
if (!mark) return null; // an owner/term probe is not a mark ask
|
|
623
|
+
if (delivered instanceof Set && delivered.has(normMark(mark))) return null;
|
|
624
|
+
return {
|
|
625
|
+
ask_id: ask.ask_id,
|
|
626
|
+
mark,
|
|
627
|
+
owner: String(st.owner ?? "").trim() || null,
|
|
628
|
+
uri: String(st.uri ?? "").trim() || null,
|
|
629
|
+
// null delivered = findings.json unreadable. Recorded so a reader can tell "the client was not shown
|
|
630
|
+
// this mark" from "nobody could tell what the client was shown" — they need different repairs.
|
|
631
|
+
basis: delivered instanceof Set ? "absent-from-findings" : "findings-unreadable",
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
|
|
577
635
|
/**
|
|
578
636
|
* The anti-confabulation guard, ask side (doubt-ledger applyClosure reused shape-for-shape): an
|
|
579
637
|
* IMMATERIAL line ends its ask IFF the ask is still open AND the quote appears VERBATIM
|
|
@@ -586,7 +644,9 @@ export function applyAskClosure(asks, closureLines, fileTexts = {}, { ts = null
|
|
|
586
644
|
const byId = new Map();
|
|
587
645
|
for (const l of closureLines ?? []) if (l?.id && !byId.has(l.id)) byId.set(l.id, l);
|
|
588
646
|
const unverified = [];
|
|
647
|
+
const carryIntoFindings = [];
|
|
589
648
|
let immaterialByStage = 0;
|
|
649
|
+
const delivered = deliveredMarks(fileTexts?.["findings.json"]);
|
|
590
650
|
const out = (asks ?? []).map((a) => {
|
|
591
651
|
if (a?.ending) return a; // the stage may never touch an ended ask
|
|
592
652
|
const l = byId.get(a.ask_id);
|
|
@@ -595,13 +655,21 @@ export function applyAskClosure(asks, closureLines, fileTexts = {}, { ts = null
|
|
|
595
655
|
const hay = squash(fileTexts?.[l.file]);
|
|
596
656
|
const q = squash(l.quote);
|
|
597
657
|
if (q && hay && hay.includes(q)) {
|
|
658
|
+
// THE CITATION IS VERIFIED AND THAT IS NO LONGER ENOUGH FOR A RECALL ASK ABOUT A MARK.
|
|
659
|
+
const owed = recallMarkOwed(a, delivered);
|
|
660
|
+
if (owed) {
|
|
661
|
+
carryIntoFindings.push(owed);
|
|
662
|
+
return { ...a, handoff: clip(`the recall probe found ${owed.mark} and the delivered findings do not name it — `
|
|
663
|
+
+ `the closure cited ${l.file}, which is the run's own working sheet, not what the client was shown. `
|
|
664
|
+
+ `This mark is owed a finding.`, 300) };
|
|
665
|
+
}
|
|
598
666
|
immaterialByStage++;
|
|
599
667
|
return { ...a, ending: mkEnding("judged-immaterial", "doubt-closure-stage", { evidence: `${l.file}: "${clip(l.quote)}"`, reasons: [l.reason], ts }) };
|
|
600
668
|
}
|
|
601
669
|
unverified.push({ ask_id: a.ask_id, file: l.file, quote: l.quote });
|
|
602
670
|
return a;
|
|
603
671
|
});
|
|
604
|
-
return { asks: out, immaterialByStage, unverified };
|
|
672
|
+
return { asks: out, immaterialByStage, unverified, carryIntoFindings };
|
|
605
673
|
}
|
|
606
674
|
|
|
607
675
|
/** Stamp the default handoff on every still-open ask (after closure) — an OPEN ask always names
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
//
|
|
25
25
|
// `_driver/` is the sharpest inclusion. It holds the frozen plan, the grid specs, the plan-execution
|
|
26
26
|
// receipt, the form sidecars and `run.jsonl` — and it sits inside `runDir`, which is granted READ+WRITE
|
|
27
|
-
// by design. Every diagnosis run on 2026-08-14 (
|
|
27
|
+
// by design. Every diagnosis run on 2026-08-14 () read those files as ground
|
|
28
28
|
// truth. A seat writing them would be forging the record the engine is judged by.
|
|
29
29
|
//
|
|
30
30
|
// `profilesDir` is DEFENSIVE, not a live hole: it appears in no `--add-dir`, so the file tools cannot
|
package/driver/call-capture.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// call-capture.mjs — the forensic record of what a seat SENT, one file per call, refusals included.
|
|
4
4
|
//
|
|
5
|
-
//
|
|
5
|
+
// That sibling. Every recording transport captures the payload
|
|
6
6
|
// BEFORE its decision, so the evidence survives a refusal. Each of them wrote that capture to a path
|
|
7
7
|
// derived from something that does not change between calls — a literal `call-001.json`, an axis name, a
|
|
8
8
|
// finding's ordinal — so a second call to the same subject DESTROYED the first's evidence. Measured on
|
package/driver/card-frame.mjs
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// had something of its own to anchor on.
|
|
19
19
|
//
|
|
20
20
|
// That is the day's defect shape in one stage — a decision taken on a surface token while the record
|
|
21
|
-
// underneath already said it — and it is what
|
|
21
|
+
// underneath already said it — and it is what the S2 ruling settled: "the mechanical card fields
|
|
22
22
|
// (headings, ids, links, driver-stamped values) move to code NOW — uncontested."
|
|
23
23
|
//
|
|
24
24
|
// ── WHY THE HEAD RULE IS THE WHOLE REVIEW QUESTION ──────────────────────────────────────────────────
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// THE DEFECT. `case-law-findings.md` is the only artifact case law produces, and its entire contract is
|
|
6
6
|
// `nonEmpty(c, 80)` — a non-empty check on prose. There is no citations ledger, no structured mirror, no
|
|
7
7
|
// per-proceeding record anywhere. So the per-record trace that exists for the register path and
|
|
8
|
-
// for common law (
|
|
8
|
+
// for common law () cannot be extended to case law at all: there is nothing on the other side
|
|
9
9
|
// of the join. That was found while scoping the record trace, and it is why closed into this issue.
|
|
10
10
|
//
|
|
11
11
|
// WHAT THAT COSTS. Two of the owner's three sign-off conditions for sending a case-law report to a
|
|
@@ -45,7 +45,7 @@ export function procStarttime(pid, readStat = undefined,
|
|
|
45
45
|
{ platform = process.platform, readPsStart = defaultReadPsStart } = {}) {
|
|
46
46
|
// AN INJECTED READER IS THE CALLER'S STATEMENT ABOUT HOW TO READ, and it outranks the platform.
|
|
47
47
|
//
|
|
48
|
-
// Measured on macOS (
|
|
48
|
+
// Measured on macOS (the verification run): the arm that pins the field-22
|
|
49
49
|
// parse hands this function its own `readStat` and asserts the parse. With the platform deciding
|
|
50
50
|
// first, that injection was silently ignored off Linux and the arm read `null` — the seam was there
|
|
51
51
|
// and nothing went through it. A caller that supplies a reader is not asking which box this is.
|
|
@@ -614,7 +614,7 @@ export function splitGridSpec(spec, { outputPaths = {}, dispositionsPaths = {} }
|
|
|
614
614
|
// — `dispositions_path` is DICTATED here, never inferred downstream. The grid tool renders it
|
|
615
615
|
// into the obligations block it hands the seat, and the validator reads the same file; deriving the
|
|
616
616
|
// name in two places is the drift this codebase has paid for twice. Absent ⇒ the tool names
|
|
617
|
-
// no file and the seat is judged on prose alone, which is exactly the pre- behaviour.
|
|
617
|
+
// no file and the seat is judged on prose alone, which is exactly the pre-change behaviour.
|
|
618
618
|
// — the half's OWN form path, ALWAYS set explicitly. The spread above carries the canonical
|
|
619
619
|
// spec's connotation object verbatim, and since the canonical spec started carrying its own
|
|
620
620
|
// dispositions_path a conditional override would let a half INHERIT the canonical path whenever the
|
|
@@ -491,7 +491,7 @@ export function commonLawCarryEvent({ trigger = null, artifact = null, reason =
|
|
|
491
491
|
|
|
492
492
|
// ── THE RECONCILIATION, AS TWO RATES WITH THEIR ARITHMETIC ATTACHED ───────────────────────
|
|
493
493
|
//
|
|
494
|
-
//
|
|
494
|
+
// That measurement: of 2116 retrieved common-law candidates, 1609 carried no ground at all, and 253
|
|
495
495
|
// of 292 candidate-bearing cells lacked the negative row the dictation owes each of them. The
|
|
496
496
|
// discriminator was never in doubt — 272 rows carry `step-stated` against 1609 `absent`, so the
|
|
497
497
|
// instrument distinguishes. Nothing compared it to anything.
|
|
@@ -388,7 +388,7 @@ export function caseLawInventory(env = process.env) {
|
|
|
388
388
|
// EUR-Lex reads through the engine's own fetch tool, so there is nothing to configure and nothing that
|
|
389
389
|
// can be missing. It is LISTED anyway: a reader counting case-law sources against a report that named
|
|
390
390
|
// four gaps must be able to find all four here, and a lane that is absent from this page is
|
|
391
|
-
// indistinguishable from one nobody has heard of.
|
|
391
|
+
// indistinguishable from one nobody has heard of. That fifth criterion.
|
|
392
392
|
rows.push({
|
|
393
393
|
key: "caselaw", label: "Case law and oppositions", provider: "eur-lex",
|
|
394
394
|
providerLabel: CASELAW_LABELS["eur-lex"],
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// citing the receipt. A PR/reputational section that ASSERTS a clean result must additionally cite a
|
|
19
19
|
// Connotation-search source line. A searched-clean (recorded queries, empty results) passes.
|
|
20
20
|
//
|
|
21
|
-
// ARMING (
|
|
21
|
+
// ARMING (owner's ruling 2026-08-04 — "arm on data, never on prose"): the disposition join, the
|
|
22
22
|
// recurrence floor and the did-the-search-run check all arm on `opts.recorded` being passed, which the
|
|
23
23
|
// caller keys on the grid-spec's `connotation.disposition_required` stamp — a structural fact the DRIVER
|
|
24
24
|
// writes and no model can redraft away. They used to arm on a phrase match over the model's own prose
|
|
@@ -138,7 +138,7 @@ export const MEANING_ANGLES_RE = /^[ \t]*(?:[-*]\s+)?meaning angles\s*[:—-]\s*
|
|
|
138
138
|
// gap row. Verified on E2E's preserved R1 run of 2026-08-13 (test build 4353a74): 61 dictated, 61 receipts, 0 gaps, one
|
|
139
139
|
// dictated query unrecorded and one recorded query never dictated — the same angle, minus the quote. The
|
|
140
140
|
// merge threw `deterministic`, the ladder correctly refused to retry, and the run died at common-law after
|
|
141
|
-
// 26m15s with nothing delivered and the whole gather already paid for.
|
|
141
|
+
// 26m15s with nothing delivered and the whole gather already paid for. That class, inverted: the driver
|
|
142
142
|
// corrupted a well-formed model output.
|
|
143
143
|
//
|
|
144
144
|
// THE RULE: peel an outer pair only when both ends carry the SAME quote character AND the interior carries
|
|
@@ -469,7 +469,7 @@ export function livePassages(snippet) {
|
|
|
469
469
|
export function usableSnippet(s) { return quoteWeight(s) >= QUOTE_MIN; }
|
|
470
470
|
|
|
471
471
|
// ── — WHY A QUOTE DID NOT BIND, NOT MERELY THAT IT DID NOT ──────────────────────────────────────
|
|
472
|
-
// `quoteJoins` is a predicate and stays one: its answer is the gate's, and
|
|
472
|
+
// `quoteJoins` is a predicate and stays one: its answer is the gate's, and the comment thread withdrew
|
|
473
473
|
// loosening it. What was missing is the REASON, and the reason is the whole.
|
|
474
474
|
//
|
|
475
475
|
// R6 (Full country search into China) died after four dispatches, byte-identical, on
|
|
@@ -1326,7 +1326,7 @@ export function renderConnotationObligations(ob, { ledgerPath = "your half ledge
|
|
|
1326
1326
|
// The ordinal is 1-based and per-row, matching `receipt_index` on the form exactly — the seat is
|
|
1327
1327
|
// never asked to hold two different numbering schemes at once.
|
|
1328
1328
|
//
|
|
1329
|
-
// THE REAL IDS STAY.
|
|
1329
|
+
// THE REAL IDS STAY. That acceptance is that the gate cannot fail a seat for an obligation the
|
|
1330
1330
|
// tool result never named, and these are what a failure names. What was removed is the METAVARIABLE
|
|
1331
1331
|
// and the instruction to cite one — a model shown `R-XXXXXXXX` writes `R-RECEIPT`, whereas a model
|
|
1332
1332
|
// shown a list of real ids it is told not to type has nothing to pattern-match.
|
|
@@ -1493,7 +1493,7 @@ export function meaningSweepReceiptsInstruction({
|
|
|
1493
1493
|
//
|
|
1494
1494
|
// Keyed on the OBLIGATIONS now, which is the thing the sentence is actually about. Same family as
|
|
1495
1495
|
// the rest of this bundle: a decision taken on a surface token while the thing itself says the
|
|
1496
|
-
// opposite (
|
|
1496
|
+
// opposite (the axis outcome, the status code, the trailing default, the deleted arm).
|
|
1497
1497
|
...(mayOwnNoQueries ? ["Your half may own zero meaning queries. If so the grid tool lists you no"
|
|
1498
1498
|
+ " obligations, and recording nothing is the complete and correct outcome for you — do not invent"
|
|
1499
1499
|
+ " rulings and do not create any dispositions file."] : []),
|
|
@@ -1525,7 +1525,7 @@ export function renderDispositionTable(rows, ob) {
|
|
|
1525
1525
|
// The park broke that premise. A parked row is undecided AND the stage completes, so the document IS
|
|
1526
1526
|
// delivered — and `ruling` is null on it, so this filter silently dropped it. The reader received a
|
|
1527
1527
|
// table that looks complete, with the one obligation nobody could decide simply absent. No gap, no
|
|
1528
|
-
// marker, nothing to notice. That is
|
|
1528
|
+
// marker, nothing to notice. That is the lying receipt reached by the shortest path there is.
|
|
1529
1529
|
//
|
|
1530
1530
|
// Rendered as its OWN block rather than as rows of the ruling table, deliberately: an undecided row
|
|
1531
1531
|
// sitting in a column headed "Ruling" is read as a ruling, whatever the cell says.
|
|
@@ -1595,7 +1595,7 @@ const NO_POLICED_SECTION = "(no PR / reputational / connotation section)";
|
|
|
1595
1595
|
// that did not RUN is a different failure from a sweep that was not ruled on, and keeping them apart is
|
|
1596
1596
|
// what makes the warm lane safe (gateway.mjs WARM_ELIGIBLE_RE).
|
|
1597
1597
|
//
|
|
1598
|
-
//
|
|
1598
|
+
// That lesson survives the collapse and is the reason `form_damaged` is not folded into `no_ruling`:
|
|
1599
1599
|
// the gate must never destroy a completed clearance by conflating "did not do the work" with "wrote the
|
|
1600
1600
|
// answer in a shape that did not bind". Under the form the second class is a two-field correction the
|
|
1601
1601
|
// seat can finish, and the union means the rest of its work cannot be lost while it makes it.
|
|
@@ -1622,7 +1622,7 @@ const NO_POLICED_SECTION = "(no PR / reputational / connotation section)";
|
|
|
1622
1622
|
//
|
|
1623
1623
|
// It is its own reason and not a `detail` on `no_ruling` because the two have different remedies and the
|
|
1624
1624
|
// hint is routed on the token: "add a ruling" sent to a seat that has ruled is a closed loop.
|
|
1625
|
-
// CARRIES THE SAME ARGUMENT ONE CLAUSE FURTHER, ON THE EVIDENCE THAT
|
|
1625
|
+
// CARRIES THE SAME ARGUMENT ONE CLAUSE FURTHER, ON THE EVIDENCE THAT the FIX DID NOT REACH.
|
|
1626
1626
|
// R6 died three times on `no_ruling=75` over a 75-row form. The seat held a 144-line findings document it
|
|
1627
1627
|
// had just written, was told "75 rows carry no ruling", saw 75 rulings in the document in front of it, and
|
|
1628
1628
|
// changed nothing. It had written THE WRONG ARTIFACT: the disposition form was the deliverable and the
|
|
@@ -1631,7 +1631,7 @@ const NO_POLICED_SECTION = "(no PR / reputational / connotation section)";
|
|
|
1631
1631
|
// findable. `no_ruling` fires identically whether a row carries no ruling token, a ruling with no
|
|
1632
1632
|
// receipt, or NOTHING AT ALL because the form was never opened, and those have different remedies.
|
|
1633
1633
|
//
|
|
1634
|
-
// THE SPLIT IS STRICTLY NARROWER, exactly as
|
|
1634
|
+
// THE SPLIT IS STRICTLY NARROWER, exactly as the was. Every state below failed before and fails now;
|
|
1635
1635
|
// `no_ruling` survives as the residual so nothing can fall out of the vocabulary. The whole-population
|
|
1636
1636
|
// collapse states of the retired hand-edited form (`form_untouched`, `form_unparseable`) died with the
|
|
1637
1637
|
// form path — their subject matter is carried by the call audit's own states below, read from the run's
|
|
@@ -1852,7 +1852,7 @@ export function obligationRows(ob, { spotChecks = QUOTE_SPOT_CHECKS } = {}) {
|
|
|
1852
1852
|
// `segmentBinding` through the same `snippetSegments`. One derivation, both ends — the display and the
|
|
1853
1853
|
// check cannot disagree, which they would the moment either recomputed its own split.
|
|
1854
1854
|
//
|
|
1855
|
-
//
|
|
1855
|
+
// That defect is the one this avoids, arriving from the other direction: a seat ordered to set a
|
|
1856
1856
|
// field it was never shown the values for. `receipt_index` is safe precisely because the candidate list
|
|
1857
1857
|
// is in front of the seat; a segment ordinal is only safe on the same terms.
|
|
1858
1858
|
//
|
|
@@ -1917,7 +1917,7 @@ export function obligationRows(ob, { spotChecks = QUOTE_SPOT_CHECKS } = {}) {
|
|
|
1917
1917
|
/**
|
|
1918
1918
|
* Find meaning-sweep obligations the seat has not ruled on, and a dictated sweep that never ran.
|
|
1919
1919
|
*
|
|
1920
|
-
* ARMED ON DATA, NEVER ON PROSE (
|
|
1920
|
+
* ARMED ON DATA, NEVER ON PROSE (owner's ruling 2026-08-04). `opts.recorded` being passed is the
|
|
1921
1921
|
* whole arming condition and it is UNCHANGED by — the caller keys it on the grid-spec's own
|
|
1922
1922
|
* `connotation.disposition_required` stamp, a structural fact the DRIVER writes and no model can redraft
|
|
1923
1923
|
* away. Two consequences, both deliberate and both load-bearing:
|
|
@@ -2066,7 +2066,7 @@ export function findConnotationViolations(commonLawContent, prRiskCount = 0, { r
|
|
|
2066
2066
|
//
|
|
2067
2067
|
// The order is load-bearing: this is reached ONLY when the row is otherwise ruled, so a genuinely
|
|
2068
2068
|
// unruled row can never be reported as a quote problem. `quote_unbound` cannot mask missing work —
|
|
2069
|
-
// it is strictly narrower than the state it splits off from, which is what
|
|
2069
|
+
// it is strictly narrower than the state it splits off from, which is what the warning demands.
|
|
2070
2070
|
const otherwiseRuled = s
|
|
2071
2071
|
&& RULING_SET.has(String(s.ruling ?? "").trim().toLowerCase())
|
|
2072
2072
|
&& String(s.note ?? "").trim()
|
|
@@ -1,6 +1,6 @@
|
|
|
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
|
-
// contract-audit.mjs — the machinery behind
|
|
3
|
+
// contract-audit.mjs — the machinery behind the E1, E2 and E3 checks.
|
|
4
4
|
//
|
|
5
5
|
// PURE and OFFLINE, like coverage-ledger.mjs and findings-model.mjs: it reads source text and the
|
|
6
6
|
// declarations, and it computes. Nothing here runs on a clearance — no pipeline path imports it and no
|
|
@@ -92,7 +92,7 @@ export function arm1Unaccounted(stages) {
|
|
|
92
92
|
/**
|
|
93
93
|
* ARM 2 — a declared element no validator token speaks about. A RATCHET, not a red build.
|
|
94
94
|
*
|
|
95
|
-
* The owner's ruling (
|
|
95
|
+
* The owner's ruling (2026-08-13) is four conditions, and they are the ruling rather than
|
|
96
96
|
* suggestions: the baseline is PER STAGE and carries the ELEMENT NAMES (it is the audit object, not a
|
|
97
97
|
* bare count); CI fails on any per-stage INCREASE so a new hole cannot hide behind a fix elsewhere; arm 1
|
|
98
98
|
* is exempt from the ratchet; and wave 1's moves are expected to move the number.
|
|
@@ -157,10 +157,10 @@ const ARROW_TOKEN_RE = /=>\s*[`"']([a-z][a-z0-9]*(?:_[a-z0-9]+)+)/g;
|
|
|
157
157
|
// nothing re-deriving them — `acceptMatterFrame` mints eight tokens against a row documenting three.
|
|
158
158
|
const REASON_TOKEN_RE = /reason:\s*[`"']([a-z][a-z0-9]*(?:_[a-z0-9]+)+)/g;
|
|
159
159
|
|
|
160
|
-
//
|
|
160
|
+
// A CITED SITE MUST BE A MINT. The extractor records the FIRST line a pattern matched, and the
|
|
161
161
|
// patterns read comment text as readily as code: `no_status` was cited at coverage-form.mjs:802, the
|
|
162
162
|
// JSDoc `@returns {Array<{reason:"no_status"|"form_damaged", …` annotation seventeen lines above the line
|
|
163
|
-
// that writes it. Every
|
|
163
|
+
// that writes it. Every such ruling cites its mint, so a citation drawn from a sentence about the code
|
|
164
164
|
// is a ruling about a sentence.
|
|
165
165
|
//
|
|
166
166
|
// Comment-ONLY lines, never a trailing `//` after code — a token minted on a line that also carries a
|
|
@@ -363,7 +363,7 @@ export function stageSourceBlocks(stagesSource) {
|
|
|
363
363
|
}
|
|
364
364
|
|
|
365
365
|
/**
|
|
366
|
-
* MECHANICAL **AND** UNSPOKEN-FOR — the highest-value target set for
|
|
366
|
+
* MECHANICAL **AND** UNSPOKEN-FOR — the highest-value target set for the moves.
|
|
367
367
|
*
|
|
368
368
|
* An element in this set is not the model's judgment AND no validator polices it: nothing catches it
|
|
369
369
|
* going wrong, and nothing about it needs a model. Every one is a candidate for the moves, and the set
|