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
package/driver/register-plan.mjs
CHANGED
|
@@ -74,7 +74,7 @@ export const PLAN_PREDICATES = ["exact", "default", "wildcard", "phonetic", "own
|
|
|
74
74
|
// ratified mark or its dominant element, i.e. run input. Until now the only marking was a `+form` suffix
|
|
75
75
|
// inside a qid string, and the wildcard fringe carried none at all — so nothing downstream could tell a
|
|
76
76
|
// generated term from an imagined one without re-deriving the band. OPTIONAL on the entry: a frozen
|
|
77
|
-
// pre- plan carries none and resumes byte-identical, and replay verdicts over archived runs never flip.
|
|
77
|
+
// pre-change plan carries none and resumes byte-identical, and replay verdicts over archived runs never flip.
|
|
78
78
|
/**
|
|
79
79
|
* THE ROMANISATION THE PLAN ALREADY HOLDS FOR A TERM — (cause 2).
|
|
80
80
|
*
|
|
@@ -470,7 +470,7 @@ const slug = (s) => latinFold(s) || "q";
|
|
|
470
470
|
// So a non-Latin term's identity carried nothing about WHICH TERM IT IS. It was its position in the
|
|
471
471
|
// compile order — and the counter is per-plan, not per-script, so adding a Devanagari term renumbers
|
|
472
472
|
// the Cyrillic ones. Fourth site of a Latin normaliser standing where an identity should be, after
|
|
473
|
-
//
|
|
473
|
+
// That fold key, the script-exact arm and the term-substance check.
|
|
474
474
|
//
|
|
475
475
|
// ── WHAT IT COSTS, MEASURED ON THE SHIPPED extendRegisterPlan RATHER THAN REASONED ────────────
|
|
476
476
|
//
|
|
@@ -1277,7 +1277,7 @@ export function entryQuestionKey(entry, plan) {
|
|
|
1277
1277
|
* straight out of model-authored common-law markdown, and it is where R2b's two heading
|
|
1278
1278
|
* rows entered a plan that had already been declared clean.
|
|
1279
1279
|
*
|
|
1280
|
-
* — AND IT SCREENS FOR THE QUESTION, not just the qid. Same argument as
|
|
1280
|
+
* — AND IT SCREENS FOR THE QUESTION, not just the qid. Same argument as the term screen and
|
|
1281
1281
|
* the same funnel: an entry whose resolved question is already in the plan is refused here, because
|
|
1282
1282
|
* this is the one place that holds both the plan and the incoming row. See entryQuestionKey above
|
|
1283
1283
|
* for what "the same question" means and why `regions` is the field that hides it.
|
|
@@ -1498,7 +1498,7 @@ export function parseRegisterPlan(raw) {
|
|
|
1498
1498
|
// owner is a defect, never a silent no-op filter.
|
|
1499
1499
|
if (e.owner != null && (typeof e.owner !== "string" || !e.owner.trim()))
|
|
1500
1500
|
throw new Error(`register_plan_owner_invalid:${short(e.qid)} (owner must be a non-empty string when present)`);
|
|
1501
|
-
//: optional (a frozen pre- plan has none), closed when present — an off-enum value would
|
|
1501
|
+
//: optional (a frozen pre-change plan has none), closed when present — an off-enum value would
|
|
1502
1502
|
// make the floor/model marking unreadable exactly where it is load-bearing.
|
|
1503
1503
|
//: optional (a frozen pre-2050 plan has none), and closed to the single value `true` when
|
|
1504
1504
|
// present — a falsy or string-shaped stamp would make the depth fold's designation unreadable
|
|
@@ -1532,7 +1532,7 @@ export function parseRegisterPlan(raw) {
|
|
|
1532
1532
|
* { executed: [{qid, state, records, total_hits}], missing: [qid], skipped: [{qid, guard}],
|
|
1533
1533
|
* unplanned: [{qid|query}] }
|
|
1534
1534
|
* `records` and `total_hits` are each a number or null, and BOTH KEYS ARE ALWAYS WRITTEN.
|
|
1535
|
-
* That is load-bearing, not tidiness: `planJoinFrom` tells a pre- receipt from a count the
|
|
1535
|
+
* That is load-bearing, not tidiness: `planJoinFrom` tells a pre-change receipt from a count the
|
|
1536
1536
|
* provider could not take by whether the keys are PRESENT, because `null` and absent are the same
|
|
1537
1537
|
* value once read. Omit a key here and every new receipt silently reads as legacy — the arm named
|
|
1538
1538
|
* "the discriminator's PREMISE" fails if this stops holding.
|
|
@@ -1628,7 +1628,7 @@ export function joinPlanToBands(plan, bandBlocksByAxis) {
|
|
|
1628
1628
|
//
|
|
1629
1629
|
// 1. THE PROVIDER MUST HAVE ANSWERED. Deferral is earned by a band block stamped `error:true` with the
|
|
1630
1630
|
// provider's own reason on it. A qid with NO block ran nothing and recorded nothing — an absence,
|
|
1631
|
-
// not a finding — and still throws. That is
|
|
1631
|
+
// not a finding — and still throws. That is the condition, untouched: a genuinely-unrun,
|
|
1632
1632
|
// undisclosed slice fails the run.
|
|
1633
1633
|
// 2. THE LADDER MUST BE SPENT, WHERE THE LADDER CAN DO ANYTHING. Only a qid the run has ALREADY
|
|
1634
1634
|
// recorded as missing (or already deferred this way) converts. On its first fan-in a hard-errored
|
|
@@ -1847,7 +1847,7 @@ export function deriveCoverageSkeleton(plan, join) {
|
|
|
1847
1847
|
* predicate, no clean-claim precondition — had already fired and returned first. Main's own doc block
|
|
1848
1848
|
* called that pair a deliberate superset/subset. So the fold removes a token the validator could not
|
|
1849
1849
|
* reach, not a check. THE FOLD IS PROVED BY THE REPLAY CORPUS, not by that argument: the corpus flips
|
|
1850
|
-
* only where the SUPERSET stops firing, and it comes back to
|
|
1850
|
+
* only where the SUPERSET stops firing, and it comes back to the 9 with the superset alone restored.
|
|
1851
1851
|
* (The argument alone has a hole — this function keys its skeleton map on raw `s.axis` and the superset
|
|
1852
1852
|
* trims, so an untrimmed skeleton axis would separate them. Degenerate, and no preserved run carries it.)
|
|
1853
1853
|
*
|
|
@@ -2066,7 +2066,7 @@ function undisclosedDeferredQids(skeletonAxis, text) {
|
|
|
2066
2066
|
* WHY THIS AND NOT A LOUDER HINT. The doctrine already reached the stage as advice on the first dispatch
|
|
2067
2067
|
* (deferredSlicesRequiredRows, formerly the A8 "hint") and the stage claimed clean anyway, then complied
|
|
2068
2068
|
* the moment the identical fact came back as a validator failure — R1 681s→202s, R2 515s→77s, every
|
|
2069
|
-
*
|
|
2069
|
+
* clearotron run that reaches the digest. A fact that is obeyed as a failure and ignored as an input is not
|
|
2070
2070
|
* being said too quietly; it is being offered rather than required. So it is required here.
|
|
2071
2071
|
*
|
|
2072
2072
|
* DELIBERATELY A SUPERSET of the deferred branch below, and the older gate is kept rather than folded
|
|
@@ -330,7 +330,7 @@ export function recordsForMark(doc, name) {
|
|
|
330
330
|
* WHAT REPLACES A FOREIGN URL, and why it is not an origin swap: `null`, so the surfaces fall through to
|
|
331
331
|
* `recordId` — the `/mark/<cc>/<number>` path that IS the canonical record identity this system stores.
|
|
332
332
|
* The reader gets the record number in plain text beside the office label, which is word for word the
|
|
333
|
-
* remedy
|
|
333
|
+
* remedy the refusal message prescribes. Composing the run provider's origin onto the path instead
|
|
334
334
|
* would invent a URL nobody fetched, and on `free-tier` there are two offices and no single origin to
|
|
335
335
|
* swap to.
|
|
336
336
|
*
|
|
@@ -394,7 +394,7 @@ export function recordsLine(entry) {
|
|
|
394
394
|
+ `appears here.`
|
|
395
395
|
: "";
|
|
396
396
|
// — the ordered territories this register never covered. Appended to whichever sentence comes
|
|
397
|
-
// back, and needed most in the EMPTY-LIST branch below for the same reason
|
|
397
|
+
// back, and needed most in the EMPTY-LIST branch below for the same reason the note is: "the
|
|
398
398
|
// register returned none under the name or any close variation of it" is a clean negative, and over a
|
|
399
399
|
// matter that ordered Japan on a register with no Japanese coverage it is a false one.
|
|
400
400
|
const outside = entry.deferredScope ?? [];
|
|
@@ -328,7 +328,7 @@ export function assembleRunRecords(runDir, runPrefix,
|
|
|
328
328
|
writeFileSync(driverDir(runDir, "receipts.json"), JSON.stringify({ schema_version: 1, receipts: rows }, null, 2) + "\n");
|
|
329
329
|
}
|
|
330
330
|
} catch { /* best-effort — the records map above remains the gate substrate */ }
|
|
331
|
-
//
|
|
331
|
+
// That legacy-name notice is REPLACED, not deleted. That one told an operator which of four
|
|
332
332
|
// global candidates was being read; nothing reads any of them for a new run any more, so the sentence
|
|
333
333
|
// had become false. What an operator still needs is the fact underneath it: a box upgraded across this
|
|
334
334
|
// change is carrying a large global record log that is now written by nothing and read by nothing —
|
|
@@ -338,7 +338,7 @@ export function assembleRunRecords(runDir, runPrefix,
|
|
|
338
338
|
//
|
|
339
339
|
// AND THE CALL LEDGER'S OWN NOTICE MOVES HERE RATHER THAN DYING WITH IT. `ledgerDeprecationNotice` had
|
|
340
340
|
// exactly one product caller — the record line above — so deleting that line would have left NOTHING
|
|
341
|
-
// announcing the ledger that is still global, still live and still on production's pre- filename.
|
|
341
|
+
// announcing the ledger that is still global, still live and still on production's pre-change filename.
|
|
342
342
|
// Gated on the path ACTUALLY WALKED: the notice re-resolves from the environment, so on a call that
|
|
343
343
|
// passed an explicit `callLogPath` it would describe a file this assembly never opened, and a
|
|
344
344
|
// diagnostic that names something other than what happened is worse than no diagnostic.
|
|
@@ -951,7 +951,7 @@ const recClasses = (rec) => {
|
|
|
951
951
|
* WHICH owner name a delivery artifact SHOWS. ONE definition, deliberately, because the renderer
|
|
952
952
|
* and bindFindingsToRecords each resolve the owner independently — publish/render.mjs does its own
|
|
953
953
|
* record lookup and preferred the record outright, so binding the finding alone changed no heading and
|
|
954
|
-
* no lint surface. A second copy of the same decision is how
|
|
954
|
+
* no lint surface. A second copy of the same decision is how the provider default survived two fixes.
|
|
955
955
|
*
|
|
956
956
|
* The record decides, not a guess about what "looks romanised": a record carrying BOTH a Latin name and
|
|
957
957
|
* a native-script one is itself saying the Latin field is a transliteration, and only then does a
|
|
@@ -227,7 +227,7 @@ export function accountRemedyTerms({ terms = [], blocksByQid = new Map(), execut
|
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
/**
|
|
230
|
-
* THE CLOSURE READ (
|
|
230
|
+
* THE CLOSURE READ (the second criterion). `domClosed` may be true only over the ACCOUNTED set: a
|
|
231
231
|
* dominant-element directive must be verified-closed AND every remedy term that directive restated must
|
|
232
232
|
* be `found` or `searched-empty`. One unaccounted term and the dominant-element gap is not closed —
|
|
233
233
|
* because it demonstrably is not: something the remedy named either never ran or ran into a shape the
|
|
@@ -199,7 +199,7 @@ export const REPAIR_COMPOSERS = [
|
|
|
199
199
|
// before/after run-pairs read identically, because a clearance narrative's job IS to state what
|
|
200
200
|
// was searched and what came back — the legitimate sentence and the defective one have the same
|
|
201
201
|
// shape and differ only in truth. The typed half of this class IS enforced structurally, on the
|
|
202
|
-
// corrective pair, by `evidenceClaimViolations` (
|
|
202
|
+
// corrective pair, by `evidenceClaimViolations` (pipeline.mjs ~10973) — but it reads
|
|
203
203
|
// `findings.json` meters, and a narrative sentence with no findings-side counterpart is invisible
|
|
204
204
|
// to it. That prose gap is conversion-era work, not an instruction. This is the instruction.
|
|
205
205
|
`A REPAIR MAY NARROW A CLAIM AND MAY NEVER BROADEN ONE. If a flagged statement is wrong because it claims too much, the correction states LESS: strike the claim, or replace it with the smaller claim the evidence actually carries. Never restate the same claim in different words, and never replace a specific sentence with a general one. NARROWING IS NOT HEDGING and the rule above still holds — claiming less is a correction; keeping the claim and wrapping it in "may", "appears to" or "broadly" is the hedge that is forbidden.`,
|
|
@@ -233,7 +233,7 @@ export const REPAIR_COMPOSERS = [
|
|
|
233
233
|
review,
|
|
234
234
|
);
|
|
235
235
|
},
|
|
236
|
-
// TWO SAMPLES BECAUSE THE COMPOSER HAS TWO SHAPES, and
|
|
236
|
+
// TWO SAMPLES BECAUSE THE COMPOSER HAS TWO SHAPES, and the saving is the whole point of the
|
|
237
237
|
// second: a declared scope narrows the pass, an undeclared one leaves it byte-identical to what it
|
|
238
238
|
// was before that existed. A guard walking only one of them walks half the surface.
|
|
239
239
|
samples: [
|
package/driver/repair-digest.mjs
CHANGED
|
@@ -139,7 +139,7 @@ export function aggregateFailureRecurrence({ enumerate = enumerateRuns, now = Da
|
|
|
139
139
|
// different orders), so it never enters bySig — but a count that nobody prints is a diagnostic
|
|
140
140
|
// computed and dropped, which is the class this issue belongs to.
|
|
141
141
|
const refusals = { count: 0, runIds: [], stages: [] };
|
|
142
|
-
// — counted and NAMED, never dropped:
|
|
142
|
+
// — counted and NAMED, never dropped: the shape immediately above, for the same reason. A park
|
|
143
143
|
// whose class was "unknown" over a reason a validator had already structured is a gap in the
|
|
144
144
|
// classifier, not an unknowable failure, and the digest is where an operator would ever see it. It is
|
|
145
145
|
// reported BESIDE the groups rather than inside them: it is a fact about how a failure was classified,
|
|
@@ -219,7 +219,7 @@ export function renderFailureRecurrence(agg) {
|
|
|
219
219
|
].filter(Boolean).join("\n")
|
|
220
220
|
: null;
|
|
221
221
|
if (!agg.groups.length) {
|
|
222
|
-
return `No
|
|
222
|
+
return `No clearotron failures or auto-recovery parks in the last ${agg.days} days.${refusalLine ? `\n${refusalLine}` : ""}${gapLine ? `\n${gapLine}` : ""}`;
|
|
223
223
|
}
|
|
224
224
|
const head = (g) =>
|
|
225
225
|
`${n(g.runIds.length, "run")} ${g.sig} [${g.failClass ?? "?"}] ` +
|
|
@@ -247,7 +247,7 @@ export function renderFailureRecurrence(agg) {
|
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
// CLI: `node repair-digest.mjs [--days N]` — the ops-digest generator (scripts/ops-digest-daily.sh)
|
|
250
|
-
// invokes this and pastes the output into its "
|
|
250
|
+
// invokes this and pastes the output into its "Clearotron Failure Recurrence" section.
|
|
251
251
|
if (isEntrypoint(import.meta.url)) {
|
|
252
252
|
const ix = process.argv.indexOf("--days");
|
|
253
253
|
const days = ix >= 0 ? Math.max(1, Number(process.argv[ix + 1]) || 7) : 7;
|
package/driver/repairs.mjs
CHANGED
|
@@ -59,7 +59,7 @@ export const REFUSAL_TERMINAL_KIND = "designed-refusal";
|
|
|
59
59
|
// rejection carried one, and the errno tokens below matched it; but undici reports a codeless fault as
|
|
60
60
|
// a bare `TypeError: fetch failed` (no cause.code), and that line — transport noise by construction —
|
|
61
61
|
// carried no token either regex knew, so it classified DETERMINISTIC at fan-in: loud-terminal, but it
|
|
62
|
-
// defeated
|
|
62
|
+
// defeated the weather lane for exactly the unreachable-provider case the lane exists for.
|
|
63
63
|
export const TRANSIENT_RE = /\btimeout\b|\blane_wedge\b|\bembedded_fallback\b|\bnonzero_exit|\bunparseable_json\b|\bstatus_(timeout|overloaded|error|aborted|rate_limited)\b|\brate_limited\b|\boverloaded\b|\beconnreset\b|\betimedout\b|\benotfound\b|\beai_again\b|socket hang\s?up|\bhttp\s?5\d\d\b|\btransport failure\b/i;
|
|
64
64
|
|
|
65
65
|
// STRUCTURAL REFUSAL: the provider ANSWERED, and its answer is a verdict on the REQUEST. The remedy is
|
|
@@ -140,7 +140,7 @@ export const DETERMINISTIC_RE = /\bhttp\s?4(0[0349]|1[04])\b|uri too long|own no
|
|
|
140
140
|
//
|
|
141
141
|
// The axis outcome survives as evidence in exactly one case: THE AXIS LANDED NOTHING. Zero qid-stamped
|
|
142
142
|
// blocks means the executor never wrote, so its transport failure really is this slice's story and
|
|
143
|
-
//
|
|
143
|
+
// That weather lane keeps working for the dead-provider case it exists for. Once the axis HAS landed
|
|
144
144
|
// qid-stamped blocks the executor demonstrably ran and wrote, and this qid's absence is an identity or
|
|
145
145
|
// coverage hole that no repair outcome from its axis speaks to.
|
|
146
146
|
//
|
|
@@ -309,7 +309,7 @@ const overflowOf = (tail) => { const m = OVERFLOW_RE.exec(tail.trim()); return m
|
|
|
309
309
|
// The leading CAUSE CENSUS is the exact count stamped at the throw site, so the total is the sum of its
|
|
310
310
|
// numbers — no comma-splitting, and therefore immune to the over-count a query containing a comma used to
|
|
311
311
|
// cause. LEGACY SHAPES still parse and must: this text path exists for the run-level catch, which sees
|
|
312
|
-
// prose only, and a resumed or archived run can still carry a pre- token
|
|
312
|
+
// prose only, and a resumed or archived run can still carry a pre-change token
|
|
313
313
|
// (`connotation_undisposed:<census>;…`, `<q1,q2,…>[ (+N more)]`). A stale token that stopped counting
|
|
314
314
|
// would read as a MISSING quantity, which is what a converged run looks like.
|
|
315
315
|
// The validator's exact count still rides as `quantity` at the throw site and always wins.
|
|
@@ -329,7 +329,7 @@ function undisposedCount(tail) {
|
|
|
329
329
|
// was cut short of its payload — ABSENT, not converged.
|
|
330
330
|
return named ? named + overflow : null;
|
|
331
331
|
}
|
|
332
|
-
// A pre- archived token: `connotation_recurrent_uncited:<one result, ≤80 chars>[ (+N more)]` — ONE
|
|
332
|
+
// A pre-change archived token: `connotation_recurrent_uncited:<one result, ≤80 chars>[ (+N more)]` — ONE
|
|
333
333
|
// named result plus the overflow. Never split on commas: that payload is a copied result title, not a
|
|
334
334
|
// joined list. Nothing emits this shape any more; it is kept so a resumed run's own history still counts.
|
|
335
335
|
function recurrentCount(tail) {
|
|
@@ -555,7 +555,7 @@ export function countRecoveryLanes(history, { total = 0 } = {}) {
|
|
|
555
555
|
|
|
556
556
|
// ── CAP PARKS: A PROVIDER SAYING "NOT YET" IS NOT A STAGE FAILING (tracker issue 103) ──────────────
|
|
557
557
|
//
|
|
558
|
-
// Owner, watching
|
|
558
|
+
// Owner, watching a run spend 4 of its 6 recovery parks against one subscription cap:
|
|
559
559
|
//
|
|
560
560
|
// "surely it can work out when the cap expires and try after that time and not just keep trying
|
|
561
561
|
// and then die."
|
|
@@ -621,7 +621,7 @@ export function capParkSchedule({ resetsAt = null, attempts = 0, now = Date.now(
|
|
|
621
621
|
/**
|
|
622
622
|
* capWaitFrom — what a run actually spent WAITING on a provider's cap, read off the park history.
|
|
623
623
|
*
|
|
624
|
-
*
|
|
624
|
+
* The ask: a run that still dies on a cap has to SAY it was a cap, and say how
|
|
625
625
|
* long it held out. The park history is the only record that survives a park/resume cycle, so it is the
|
|
626
626
|
* only place that answer can come from at the terminal.
|
|
627
627
|
*
|
|
@@ -695,7 +695,7 @@ export function humanWait(min) {
|
|
|
695
695
|
// failure's `quantity` and the last recorded quantity for the SAME signature in the park history. It
|
|
696
696
|
// changes no branch below and no caller reads it as an input: the point of the issue is that the
|
|
697
697
|
// comparison can SEE 25 → 9 → 9 as different from 29 → 11 → 0, where today both hash identically.
|
|
698
|
-
// What the machinery DOES with that difference is
|
|
698
|
+
// What the machinery DOES with that difference is the decision, not this function's.
|
|
699
699
|
export function decideRecovery({ failClass, sig, reason = "", history = [], priorAttempts = 0, recoveryMax = 3, nonRecoverable = false, hasRunDir = true, runCeiling = null, weatherAttempts = 0, defectAttempts = null, weatherCeiling = null, quantity = null }) {
|
|
700
700
|
const hist = Array.isArray(history) ? history : [];
|
|
701
701
|
const sigAttempts = hist.filter((h) => h?.sig === sig).length;
|
|
@@ -217,6 +217,8 @@ export function diffSnapshots(prev, curr) {
|
|
|
217
217
|
|
|
218
218
|
function main() {
|
|
219
219
|
const args = new Set(process.argv.slice(2));
|
|
220
|
+
// ON-DISK NAME, NOT A PRODUCT NAME: an install that never set the variable already has this file, so
|
|
221
|
+
// renaming the default points the reader at one that does not exist. Owner ruling, tracker issue 308.
|
|
220
222
|
const snapshotPath = process.env.CLEAROTRON_REPLAY_SNAPSHOT || join(homedir(), ".prelim-replay-snapshot.json");
|
|
221
223
|
const roots = process.env.CLEAROTRON_REPLAY_ROOTS
|
|
222
224
|
? process.env.CLEAROTRON_REPLAY_ROOTS.split(":").filter(Boolean)
|
|
@@ -64,7 +64,7 @@ const BODY_FLOOR_CHARS = 60;
|
|
|
64
64
|
* READ FROM THE RUN, not from the payload. The card's `- Source:` bullet is declared
|
|
65
65
|
* `mechanical:code-rendered` and the record already carries `source.resolved_link`, so the seat is not
|
|
66
66
|
* asked for a URL it would have to compose from a host table it is not even given — the transcription
|
|
67
|
-
* class in its purest form, and
|
|
67
|
+
* class in its purest form, and the link-to-nowhere in a document a client reads.
|
|
68
68
|
*/
|
|
69
69
|
export function findingForOrdinal(runDir, ordinal) {
|
|
70
70
|
return findingsDocFor(runDir, ordinal).finding;
|
|
@@ -187,7 +187,7 @@ export function renderReportCard(model, finding, { registerLabel = "" } = {}) {
|
|
|
187
187
|
// ── THE RISK READ IS A STRUCTURE, NOT A DICTATED HABIT ( D3) ─────────────────────────────────
|
|
188
188
|
//
|
|
189
189
|
// render.mjs suppresses the typed `legal_position` / `practical_position` pair on any card whose prose
|
|
190
|
-
// already carries a "Risk assessment"-led bullet (
|
|
190
|
+
// already carries a "Risk assessment"-led bullet (ONE ACCOUNT PER FACT). That gate reads a lead
|
|
191
191
|
// this stage's dispatch calls OPTIONAL and this acceptance never checked — the card contract's §L
|
|
192
192
|
// requirement was a HABIT, in exactly the sense the card index was one before the driver bound it.
|
|
193
193
|
//
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// property of the WRITING SITE, not of the name — a field called `outcome` carrying an outcome is fine,
|
|
13
13
|
// and a field called `settled` carrying a dispatch return is the defect. Only reading the writer tells
|
|
14
14
|
// them apart, so the population is SPLIT and classified rather than filtered down to the offenders.
|
|
15
|
-
// Both halves are kept, for
|
|
15
|
+
// Both halves are kept, for the reason: a filtered population produces no number, and nobody can see
|
|
16
16
|
// what was hidden.
|
|
17
17
|
//
|
|
18
18
|
// ── THE TWO HALVES ──────────────────────────────────────────────────────────────────────────────────
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
// `outcome` for existing readers beside `dispatch` and `verdict`).
|
|
49
49
|
// "out-of-scope" — never reaches `_driver/*.json` or `run.jsonl`; `atWriteSite` is 0.
|
|
50
50
|
|
|
51
|
-
/** The result nouns this sweep is about —
|
|
51
|
+
/** The result nouns this sweep is about — the list, verbatim. */
|
|
52
52
|
export const RESULT_NOUNS = Object.freeze(["outcome", "executed", "permanent", "settled", "closed", "recovered", "verified"]);
|
|
53
53
|
|
|
54
54
|
export const RESULT_NOUN_FIELDS = Object.freeze([
|
|
@@ -66,7 +66,7 @@ export const RESULT_NOUN_FIELDS = Object.freeze([
|
|
|
66
66
|
{ file: "driver/pipeline.mjs", noun: "executed", sites: 4, atWriteSite: 3, verdict: "result",
|
|
67
67
|
why: "lengths of the executed set as the join computed it" },
|
|
68
68
|
{ file: "driver/pipeline.mjs", noun: "outcome", sites: 11, atWriteSite: 6, verdict: "result",
|
|
69
|
-
why: "the one member that reported an invocation — taint-rerun's `r.ok ? \"ok\" : …`, which travels on a StageFailure packet — now carries a `cleared` sibling read from the taint,
|
|
69
|
+
why: "the one member that reported an invocation — taint-rerun's `r.ok ? \"ok\" : …`, which travels on a StageFailure packet — now carries a `cleared` sibling read from the taint, the remedy 10/5 -> 11/6 at the profile-store receipt's `outcome: pr.outcome`. Classified by READING ITS WRITING SITE, which is profiles.mjs and not this file: the value is one of three literals chosen by a situation the resolver decided (`overlay` and `bundled-fallback` are `pass`, `env-arrived-late` is `blocked`), never a call's return read as a verdict. `bundled-fallback` being `pass` is the point of the whole receipt — a legitimate install that nobody was told about is what this row says out loud." },
|
|
70
70
|
{ file: "driver/pipeline.mjs", noun: "permanent", sites: 1, atWriteSite: 1, verdict: "result",
|
|
71
71
|
why: "`permanent.length` — a count of the classified set" },
|
|
72
72
|
{ file: "driver/pipeline.mjs", noun: "recovered", sites: 3, atWriteSite: 3, verdict: "result",
|
|
@@ -95,6 +95,13 @@ export const RESULT_NOUN_FIELDS = Object.freeze([
|
|
|
95
95
|
{ file: "driver/skills-store-provenance.mjs", noun: "outcome", sites: 6, atWriteSite: 0, verdict: "out-of-scope" },
|
|
96
96
|
{ file: "driver/status-snapshot.mjs", noun: "outcome", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
|
|
97
97
|
{ file: "mcp-server/lib/events.mjs", noun: "recovered", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
|
|
98
|
+
// Read at the writing site, as this table requires. All three sites are in `knockoutSearches`, a
|
|
99
|
+
// READ-ONLY projection that composes the rows `list_searches` answers with: it opens no artifact and
|
|
100
|
+
// writes nothing, so nothing here can reach `_driver/*.json` or `run.jsonl`. Each value is a literal
|
|
101
|
+
// chosen from the run's own stored record — "found" or "no-hit" from whether the mark has findings,
|
|
102
|
+
// and "recorded" for a register term whose stored row says it did NOT answer. None is a call's return
|
|
103
|
+
// read back as a verdict, which is the defect this table exists to find.
|
|
104
|
+
{ file: "mcp-server/lib/knockout.mjs", noun: "outcome", sites: 3, atWriteSite: 0, verdict: "out-of-scope" },
|
|
98
105
|
{ file: "mcp-server/lib/ops.mjs", noun: "settled", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
|
|
99
106
|
{ file: "mcp-server/server.mjs", noun: "outcome", sites: 1, atWriteSite: 0, verdict: "out-of-scope" },
|
|
100
107
|
{ file: "scripts/backfill-started-at.mjs", noun: "outcome", sites: 5, atWriteSite: 0, verdict: "out-of-scope" },
|
package/driver/run-economics.mjs
CHANGED
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
// `modelUsed`. So the rows can now answer "what ran", per record, wherever the wire reported.
|
|
88
88
|
//
|
|
89
89
|
// What has NOT changed is this module: `byBilling` / `byStage` / `dispatches` still key on `modelUsed`,
|
|
90
|
-
// i.e. on what was asked for. Switching them to prefer `modelActual` is
|
|
90
|
+
// i.e. on what was asked for. Switching them to prefer `modelActual` is the call, not a side effect
|
|
91
91
|
//, and it cannot be a blanket flip — codex reports no model, and a killed turn may have none,
|
|
92
92
|
// so a per-record basis is the only honest shape. `tokens.mjs` keys its rollup on the requested alias
|
|
93
93
|
// for the same reason and is likewise untouched.
|
|
@@ -241,7 +241,7 @@ export const vendorOf = (engine) => ENGINE_VENDORS[String(engine ?? "")] ?? null
|
|
|
241
241
|
//
|
|
242
242
|
// CODE-SIDE IS NOT A VENDOR. `code:execute-plan` rides nearly every run (the driver executes the frozen
|
|
243
243
|
// plan itself), stamps `authMode: "not-provider-billed"`, and costs no provider tokens. Counting it would
|
|
244
|
-
// make every run in the product read as multi-vendor — the same defect as
|
|
244
|
+
// make every run in the product read as multi-vendor — the same defect as the `web` channel, where a
|
|
245
245
|
// member the driver always adds made every run look unplanned. Provider-billed rows only, and the count
|
|
246
246
|
// of what was set aside is reported so the exclusion is visible rather than assumed.
|
|
247
247
|
//
|
package/driver/run-integrity.mjs
CHANGED
|
@@ -42,7 +42,7 @@ import { DISPATCH_SUFFIX } from "./dispatch-record.mjs"; // — the dispa
|
|
|
42
42
|
*
|
|
43
43
|
* ONE PREDICATE, so the snapshot and any future arming decision cannot disagree about the set. Named
|
|
44
44
|
* files are the driver-derived joins and receipts judgment reads; the dispatch records are what was
|
|
45
|
-
* actually asked, including
|
|
45
|
+
* actually asked, including the `.prev-<sha>` supersede chain.
|
|
46
46
|
*
|
|
47
47
|
* ──: EVERY `.jsonl` IS OUT, BY PATTERN, AND A NEW SINK IS OUT THE MOMENT IT IS CREATED ────────
|
|
48
48
|
*
|
package/driver/runner.mjs
CHANGED
|
@@ -23,13 +23,13 @@ import "./engine/mcp/http-dispatcher.mjs"; // side effect: raise undici header
|
|
|
23
23
|
import { readdirSync, renameSync, existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync, rmSync, statSync } from "node:fs";
|
|
24
24
|
import { join, dirname, basename } from "node:path";
|
|
25
25
|
import { driverDir, ensureDriverDir } from "../shared/driver-dir.mjs"; // — one definition of where `_driver/` is
|
|
26
|
-
// The queue's filename vocabulary, in ONE place —
|
|
26
|
+
// The queue's filename vocabulary, in ONE place — the rule, extended by to the prose-sidecar and
|
|
27
27
|
// claim-sidecar names, because a harness check retyped four of them from memory and false-alarmed on the
|
|
28
28
|
// other nine. Behaviour here is unchanged: the same object and the same three suffixes, sourced.
|
|
29
29
|
import { isLiveQueueMarker, PROSE_PARTS, CLAIM_SIDECAR_SUFFIXES, TERMINAL_QUEUE_SUFFIXES } from "./queue-markers.mjs";
|
|
30
30
|
import { matterLedgerPath } from "./usage-ledger.mjs"; // ONE ledger-path calculation, shared with the portal pre-check
|
|
31
|
-
import { orderTimeRefusal } from "./run-requirements.mjs"; //
|
|
32
|
-
import { unitEnvPath } from "../shared/env-local.mjs"; //
|
|
31
|
+
import { orderTimeRefusal } from "./run-requirements.mjs"; // one authority for what a run needs, and when it is asked for
|
|
32
|
+
import { unitEnvPath } from "../shared/env-local.mjs"; // the file the units read, named by its one author
|
|
33
33
|
import { fileURLToPath } from "node:url";
|
|
34
34
|
import { config, preflightDeploymentUrls } from "./driver.config.mjs";
|
|
35
35
|
import { deriveSlug, todayISO, mintFreshCodename } from "./phase0.mjs";
|
|
@@ -136,7 +136,7 @@ function matterSignature(job, { product = null } = {}) {
|
|
|
136
136
|
const base = `${forwarder}|${mark}|${classes}|${customer}|${ref}`;
|
|
137
137
|
// Product dimension. ONE product adds nothing to the string, and it has to be one or every legacy
|
|
138
138
|
// ledger row would stop colliding with its own re-send: the pre-spine signature had no suffix at all,
|
|
139
|
-
// and the level that ran then was `
|
|
139
|
+
// and the level that ran then was `clearotron`. That level's SUCCESSOR is the Global preliminary search —
|
|
140
140
|
// the clearance a request with nothing named resolves to — so it is the one that stays silent, and
|
|
141
141
|
// `sigLevel`'s default reads a suffixless row as it. The key name stays `level:` for the same reason:
|
|
142
142
|
// it is a string already written into every ledger on disk.
|
|
@@ -342,7 +342,7 @@ async function intakeNotify(agentId, base, job, v) {
|
|
|
342
342
|
const what = v?.classify === "clarify"
|
|
343
343
|
? `needs clarification before it can run: ${v.errors.join("; ")}`
|
|
344
344
|
: `was rejected at intake: ${(v?.errors ?? ["unparseable job file"]).join("; ")}`;
|
|
345
|
-
const text = `⚠️
|
|
345
|
+
const text = `⚠️ Clearotron request "${mark}" ${what}. Nothing has been searched or delivered. ` +
|
|
346
346
|
`Job parked as ${base}.failed in the ${agentId} queue.`;
|
|
347
347
|
const p = writeOutboxPacket(`intake-${base}.failed`, {
|
|
348
348
|
kind: "intake-rejected", classify: v?.classify ?? "reject", base, agent: agentId,
|
|
@@ -381,7 +381,7 @@ function cleanupClaimSidecars(procPath) {
|
|
|
381
381
|
* Returns true when this call moved the marker, false when it was already gone. Any other error still
|
|
382
382
|
* throws: a permissions failure or a full disk is not a sibling.
|
|
383
383
|
*/
|
|
384
|
-
export function retireMarker(procPath, destPath, what = "") { // exported for
|
|
384
|
+
export function retireMarker(procPath, destPath, what = "") { // exported for the honesty test
|
|
385
385
|
try { renameSync(procPath, destPath); return true; }
|
|
386
386
|
catch (e) {
|
|
387
387
|
if (e?.code !== "ENOENT") throw e;
|
|
@@ -389,7 +389,7 @@ export function retireMarker(procPath, destPath, what = "") { // exported for
|
|
|
389
389
|
// <dest> is on disk. On this branch the rename did NOT happen, so <dest> was never created by this
|
|
390
390
|
// call, and the parenthetical named the outcome the caller intended rather than the one an operator
|
|
391
391
|
// would find. It is the single line an operator reads to discover where a job went, and it was
|
|
392
|
-
// pointing at a file that is not there. The reproduction (
|
|
392
|
+
// pointing at a file that is not there. The reproduction (PR) ends with the queue dir
|
|
393
393
|
// holding `job-race.processing` and `job-race.processing.pid` and NO `.json` at all, under a log
|
|
394
394
|
// line that said the orphan had been returned to the queue.
|
|
395
395
|
note(`[runner] ${basename(procPath)} was already retired by another runner — this call did NOT create ${basename(destPath)} (it wanted: ${what || "retire the marker"}); the marker is in whatever state that runner left it`);
|
|
@@ -433,13 +433,13 @@ export function retireMarker(procPath, destPath, what = "") { // exported for
|
|
|
433
433
|
* marker; the argument holds only because no `<base>.json` exists while we hold the lock (both enqueue
|
|
434
434
|
* doors refuse an id whose `.json` or `.processing` is already present, and this call is the one about
|
|
435
435
|
* to create it). The residual — a fresh enqueue of the SAME id landing between the two renames — is the
|
|
436
|
-
* window
|
|
436
|
+
* window the claim lock and `takeoverClaim` already carry, unchanged here. At a call site where a
|
|
437
437
|
* `<base>.json` CAN coexist with the marker, that argument does not transfer.
|
|
438
438
|
*
|
|
439
439
|
* Returns true when this call moved the marker to `destPath`. False means the claim was not ours to
|
|
440
440
|
* retire — and that nothing on disk was touched.
|
|
441
441
|
*/
|
|
442
|
-
export function retireClaimAndSweep(procPath, destPath, what = "", { token = claimToken() } = {}) { // exported for
|
|
442
|
+
export function retireClaimAndSweep(procPath, destPath, what = "", { token = claimToken() } = {}) { // exported for the race test
|
|
443
443
|
const lockPath = `${procPath}.claimed-${token}`;
|
|
444
444
|
try { renameSync(procPath, lockPath); }
|
|
445
445
|
catch (e) {
|
|
@@ -482,7 +482,7 @@ export function retireClaimAndSweep(procPath, destPath, what = "", { token = cla
|
|
|
482
482
|
* RE-ASSEMBLED from. It is the one deletion that outlives every marker state: the winner's job — a
|
|
483
483
|
* resume, or a hand-back to `.json` — then cannot be assembled at all.
|
|
484
484
|
* - `<base>.done.result` / `<base>.failed.result` asserts a terminal that is not on disk. That is
|
|
485
|
-
*
|
|
485
|
+
* That defect exactly (a line naming the outcome the caller WANTED, not the one an operator would
|
|
486
486
|
* find), one call below the fix for it.
|
|
487
487
|
* - `dropMatter` marks the matter ledger row `failed`, and `findDuplicateMatter` skips failed rows —
|
|
488
488
|
* so it re-opens the dedup gate for a matter the winner may be mid-resume, and the ~$40 duplicate
|
|
@@ -578,7 +578,7 @@ async function failAtIntake(procPath, qdir, base, agentId, job, v, reasons) {
|
|
|
578
578
|
// outcome string for the .reason file.
|
|
579
579
|
async function duplicateNotify(agentId, base, job, prior = null, sig = null) {
|
|
580
580
|
const mark = job?.markName ?? job?.name ?? job?.marks?.[0]?.name ?? base;
|
|
581
|
-
// ──
|
|
581
|
+
// ── A REFUSAL DELIVERED AS SILENCE IS INDISTINGUISHABLE FROM A LOST JOB ────────
|
|
582
582
|
//
|
|
583
583
|
// The observable outcome of a dedup park was an empty queue and no run, which is exactly what an
|
|
584
584
|
// enqueue that vanished looks like — and the two want completely different next actions. That got
|
|
@@ -598,7 +598,7 @@ async function duplicateNotify(agentId, base, job, prior = null, sig = null) {
|
|
|
598
598
|
const which = prior?.msgId
|
|
599
599
|
? ` The run already under way was submitted as ${prior.msgId}${when ? ` at ${when}` : ""} — that is the one that will deliver.`
|
|
600
600
|
: " The earlier run will deliver.";
|
|
601
|
-
const text = `⚠️
|
|
601
|
+
const text = `⚠️ Clearotron request "${mark}" matches a matter already in progress or just delivered, so it was `
|
|
602
602
|
+ `NOT run — a second search would spend twice for one answer.${which}`
|
|
603
603
|
+ ` If you genuinely need a fresh run of the same matter, re-submit it with dupOverride (\`--dup-override\` on the`
|
|
604
604
|
+ ` command line) and it will go through.`;
|
|
@@ -631,7 +631,7 @@ async function parkDuplicate(procPath, qdir, base, agentId, job, prior, sig) {
|
|
|
631
631
|
const conv = String(job.conversationId ?? "").trim();
|
|
632
632
|
const matchedBy = prior.conversationId && prior.conversationId === conv ? "thread (conversationId)" : "matter signature";
|
|
633
633
|
const reason = [
|
|
634
|
-
`duplicate
|
|
634
|
+
`duplicate clearotron — not run (a second search for the same matter)`,
|
|
635
635
|
`matched by: ${matchedBy}`,
|
|
636
636
|
`matter: ${sig}`,
|
|
637
637
|
`conversationId: ${conv || "-"}`,
|
|
@@ -666,7 +666,7 @@ function preRunFailNotify(agentId, base, job, reason) {
|
|
|
666
666
|
// terminalReasonFields `reason`, so this cut is a no-op today — which is exactly why it survived: a
|
|
667
667
|
// latent second cap, unmarked, waiting for the next caller to pass a raw reason. It collapses and
|
|
668
668
|
// trims identically, so this is the same string with the cut made visible when there is one.
|
|
669
|
-
const text = `❌
|
|
669
|
+
const text = `❌ Clearotron request "${mark}" FAILED before the run could start: ${terminalReasonFields(reason).reason} — ` +
|
|
670
670
|
`nothing has been searched or delivered. Job parked as ${base}.failed in the ${agentId} queue.`;
|
|
671
671
|
// `intake-${base}.` PREFIX, not a third scheme: scripts/e2e.mjs's outboxPackets matches by runId
|
|
672
672
|
// first and by that prefix second, so a name outside it is a notice the harness reports as
|
|
@@ -716,7 +716,7 @@ async function backstopFailureNotice({ res, job, agentId, base, codename, studio
|
|
|
716
716
|
shortReason, reasonVerbatim: reason.slice(0, 1000), whatsappTo: AGENT_WHATSAPP[agentId] ?? null,
|
|
717
717
|
});
|
|
718
718
|
// same per-send invariant as the pipeline's failure path: a fresh notice supersedes an older .sent
|
|
719
|
-
// and its per-channel receipts (B4 — stale receipts would make
|
|
719
|
+
// and its per-channel receipts (B4 — stale receipts would make clearotron-deliver skip this notice)
|
|
720
720
|
try { rmSync(join(owned.dir, ".sent"), { force: true }); } catch { /* none */ }
|
|
721
721
|
try { rmSync(driverDir(owned.dir, "send-receipts.json"), { force: true }); } catch { /* none */ }
|
|
722
722
|
ensureDriverDir(owned.dir);
|
|
@@ -740,7 +740,7 @@ async function backstopFailureNotice({ res, job, agentId, base, codename, studio
|
|
|
740
740
|
// one-at-a-time so the dedup check+record stays race-free even while prior jobs' pipelines run concurrently
|
|
741
741
|
// (Phase-4). Returns the prepared {procPath, base, job} to execute, or null when the job was terminally
|
|
742
742
|
// parked/failed-at-intake, or the claim was lost.
|
|
743
|
-
// ──
|
|
743
|
+
// ── THE ORDER-TIME REFUSAL, AND WHY IT IS HERE ──────────────────────────────────
|
|
744
744
|
//
|
|
745
745
|
// A hosted install now STARTS with no register configured (owner ruling 2026-09-06: "someone can install
|
|
746
746
|
// and select key later so it should still start"). The protection that used to live in
|
|
@@ -849,7 +849,7 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
|
|
|
849
849
|
await failAtIntake(procPath, qdir, base, agentId, job, v, v.errors);
|
|
850
850
|
return null;
|
|
851
851
|
}
|
|
852
|
-
// ──
|
|
852
|
+
// ── IS THIS BOX CONFIGURED TO SEARCH AT ALL? See the header above claimAndPrep.
|
|
853
853
|
{
|
|
854
854
|
const refusal = orderTimeRefusal(process.env, await runTables(), { envFile: unitEnvPath() });
|
|
855
855
|
if (refusal) {
|
|
@@ -860,11 +860,11 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
|
|
|
860
860
|
}
|
|
861
861
|
}
|
|
862
862
|
// Search-depth spine — resolve WHICH product shape this job selects (job selector → project/customer
|
|
863
|
-
// default → house
|
|
863
|
+
// default → house clearotron), then gate on what this deployment can actually run. A selection that cannot
|
|
864
864
|
// run here CLARIFIES loudly (parked + requester notified) — it must never silently run as a different-
|
|
865
865
|
// priced product, and never silently drop. Fail-open discipline (review 2026-07-17): infra trouble may
|
|
866
866
|
// NO FAIL-OPEN LEFT ON THIS PATH, and its removal is the point. It used to fall back to the literal
|
|
867
|
-
// level `
|
|
867
|
+
// level `clearotron` when resolution errored and the job "provably" wanted a plain clearance — but `clearotron`
|
|
868
868
|
// named THREE products depending on where it pointed, so the fallback was a guess wearing a level key:
|
|
869
869
|
// an account whose defaults hold one country would have run a Full country search, case law and all,
|
|
870
870
|
// off a config read that failed. Under the offering the product is a function of the scope, and a scope
|
|
@@ -1027,7 +1027,7 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
|
|
|
1027
1027
|
// result the whole time and the marker threw it away.
|
|
1028
1028
|
//
|
|
1029
1029
|
// WHAT THIS DOES NOT DO: invent a cause. Neither branch classifies anything; each states which park
|
|
1030
|
-
// fired and what its clock means.
|
|
1030
|
+
// fired and what its clock means. That damage was a record that could not be contradicted from the
|
|
1031
1031
|
// artifacts, so the fix is not a better guess — it is saying less, and saying which.
|
|
1032
1032
|
export function parkCause(res = {}) {
|
|
1033
1033
|
const RESOLVED_BY = "a live retry — the stored time is a hint about when to look, not the authority on "
|
|
@@ -1182,8 +1182,8 @@ async function runPrepared({ procPath, base, job }, qdir, agentId, resumeMeta =
|
|
|
1182
1182
|
//
|
|
1183
1183
|
// The pipeline already made this distinction where it writes its own sentinel — "only the recovery
|
|
1184
1184
|
// sentinel carried a discriminator … the 2026-07-28 postmortem misread: a recovery park diagnosed
|
|
1185
|
-
// as a rate-limit park". The queue-side marker never got it. Same shape as
|
|
1186
|
-
// reaching two writers and not four, and
|
|
1185
|
+
// as a rate-limit park". The queue-side marker never got it. Same shape as the terminal fields
|
|
1186
|
+
// reaching two writers and not four, and the stamp reaching the audit path and not the rebuild.
|
|
1187
1187
|
...parkCause(res),
|
|
1188
1188
|
});
|
|
1189
1189
|
note(`[runner] ${base} → POSTPONED (${parkCause(res).parkKind}; retries at the earlier of ${res.resetsAt ?? "its due time"} and its next probe — no hand-edit needed if it clears early)`);
|
package/driver/scope-rules.mjs
CHANGED
|
@@ -113,7 +113,7 @@ export function checkClearanceScopeRules({ job = null, profile = null, resolved
|
|
|
113
113
|
// request resolves to no territory" would be a claim about a scope nobody saw. But when the request —
|
|
114
114
|
// or the saved search it names — DOES name territories, the profile is irrelevant to the count and the
|
|
115
115
|
// rules still bite. Skipping them there is how a roster-blind deployment (profile_key_unknown → the
|
|
116
|
-
// fail-open to
|
|
116
|
+
// fail-open to clearotron) would admit a three-country deep dive at the wall itself (review 2026-07-27).
|
|
117
117
|
if (!profileReadable && !scope.length) return { errors, warnings };
|
|
118
118
|
// Quoted AS WRITTEN, worldwide tokens dropped (a mode is not a place — territory-tiers.mjs answers
|
|
119
119
|
// which entries those are, so this module and the door cannot disagree about the spelling of
|
package/driver/search-policy.mjs
CHANGED
|
@@ -351,7 +351,7 @@ export function reportIdentityFor(levelOrPolicy) {
|
|
|
351
351
|
|
|
352
352
|
/** The product's coverage note for the report masthead (charter ruling 1, 2026-07-30: what was bought
|
|
353
353
|
* must be VISIBLY clear on the page — a reader must never confuse "the same section" in two different
|
|
354
|
-
* searches). One plain sentence, NAME-LED per the ruling (match
|
|
354
|
+
* searches). One plain sentence, NAME-LED per the ruling (match the registry-name pills: the
|
|
355
355
|
* product's name leads, never a rung on our ladder), stating what THIS search covers and the material
|
|
356
356
|
* thing it does not. The name comes from the registry join (reportIdentityFor — today's name for what
|
|
357
357
|
* ran, exactly the doctrine); the coverage clauses come from the run's own frozen COMPONENTS
|
|
@@ -678,7 +678,7 @@ export function productAvailability(policy, { built = BUILT, registerCanCount =
|
|
|
678
678
|
*/
|
|
679
679
|
export const UNAVAILABLE_NOTE = {
|
|
680
680
|
unbuilt: "Not part of the current release.",
|
|
681
|
-
// `demo` IS DELETED FROM THIS MAP (
|
|
681
|
+
// `demo` IS DELETED FROM THIS MAP (owner ruling 2026-08-31 14:47), and
|
|
682
682
|
// deleting it is what makes the reversal structural rather than a filter somebody can undo by
|
|
683
683
|
// accident. Every client-facing surface renders a product's refusal as `UNAVAILABLE_NOTE[cause]`;
|
|
684
684
|
// while a sentence sat here for a demo, the greyed control was one `return "demo"` away from coming
|
|
@@ -692,7 +692,7 @@ export const UNAVAILABLE_NOTE = {
|
|
|
692
692
|
// a baked-in provider name, no CLEAROTRON_* string in scope here, and it says the one thing a reader can
|
|
693
693
|
// act on — this is a coverage limit, so a newer version will not fix it.
|
|
694
694
|
//
|
|
695
|
-
// `register-not-worldwide` IS DELETED FROM THIS MAP (
|
|
695
|
+
// `register-not-worldwide` IS DELETED FROM THIS MAP (owner ruling
|
|
696
696
|
// 2026-08-31), and deleting it is what makes the ruling structural rather than a filter somebody can
|
|
697
697
|
// reverse by accident. Every client-facing surface renders a product's refusal as
|
|
698
698
|
// `UNAVAILABLE_NOTE[cause]`; while a sentence sat here for that cause, the ruling held only as long as
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// skeptic-search.mjs — the skeptic's SANCTIONED READ SURFACE: literal substring search over the run's
|
|
4
|
-
// own artifact tree.
|
|
4
|
+
// own artifact tree. That ratification hold, unlock path 1.
|
|
5
5
|
//
|
|
6
6
|
// ── WHAT THIS REPLACES, measured and nothing more ───────────────────────────────────────────────────
|
|
7
7
|
//
|
|
@@ -5,7 +5,7 @@ description: The frame-STARVED independent re-derivation for the v3 preliminary
|
|
|
5
5
|
|
|
6
6
|
## Purpose
|
|
7
7
|
|
|
8
|
-
Every other stage in a
|
|
8
|
+
Every other stage in a clearotron run reasons *inside* a frame that was set early (at `matter-frame` / `prelim-variants`): the variants to chase, the field that counts as on-field, the sources worth searching. Verification then runs *on* that frame — nothing tests the frame itself. When the frame is mis-scoped, the whole run inherits the miss and the skeptic, reasoning from the same frame, certifies it.
|
|
9
9
|
|
|
10
10
|
You are the antidote. You are **deliberately starved of the frame**: you receive only the raw instruction, exactly as the requester wrote it, and you re-derive the threat model **cold**. Because you never see the run's conclusions, you cannot anchor to them. Your output is later **diffed** against what the run actually scoped — the gaps in that diff are the omissions the frame missed.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ cannot reach any other stage's context, because no stage shares one — and it i
|
|
|
17
17
|
arranges or can lose. Nothing here spawns a session; sequencing, fan-in and retries are the driver's.
|
|
18
18
|
|
|
19
19
|
The identical skill is also valid **inline** in ad-hoc chat when a conflict / confusability / enforcer
|
|
20
|
-
question arises outside a
|
|
20
|
+
question arises outside a clearotron run.
|
|
21
21
|
|
|
22
22
|
**Reads** — from the dispatch message (plain markdown, not JSON), for each finding to ground:
|
|
23
23
|
- the proposed mark and the conflicting mark / owner / entity,
|
|
@@ -46,7 +46,7 @@ Boards-of-Appeal decisions — no free API today). EUIPO *register* lookups are
|
|
|
46
46
|
|
|
47
47
|
Called by `prelim-search` after synthesis flags the risk-relevant findings (Step 4.5). Also triggers in
|
|
48
48
|
chat when the user raises a trademark conflict, likelihood-of-confusion, or enforcement-history question.
|
|
49
|
-
Gated and optional: if this skill is absent,
|
|
49
|
+
Gated and optional: if this skill is absent, clearotron skips Step 4.5 and delivers normally.
|
|
50
50
|
|
|
51
51
|
## Model
|
|
52
52
|
|