clearotron 0.2.1 → 0.2.3
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 +82 -1
- package/.nvmrc +1 -1
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +64 -58
- package/README.md +11 -16
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +26 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +31 -11
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +252 -136
- package/bin/start.mjs +176 -33
- 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/demo/full-country-search/run/_driver/framework.json +1 -1
- package/demo/global-preliminary-search/run/_driver/framework.json +1 -1
- package/demo/knockout-search/run/_driver/framework.json +1 -1
- package/demo/multi-country-focus-search/run/_driver/framework.json +1 -1
- package/docs/DELIVERY.md +6 -2
- package/docs/E2E.md +5 -5
- package/docs/PORTAL.md +2 -2
- package/docs/README.md +5 -4
- package/docs/SECURITY.md +17 -0
- package/docs/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +8 -3
- package/docs/architecture/05-config-governance.md +52 -5
- package/docs/architecture/05-customer-profiles.md +2 -2
- package/docs/architecture/06-operations-runbook.md +13 -1
- package/docs/architecture/09-security-and-data.md +1 -1
- package/docs/configuration.md +4 -3
- package/docs/decisions/0004-documentation-structure.md +1 -1
- package/driver/CHANGELOG.md +121 -1
- package/driver/README.md +2 -2
- package/driver/ask-ledger.mjs +3 -3
- 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 +2 -2
- package/driver/commonlaw-carry.mjs +1 -1
- package/driver/config-inventory.mjs +1 -1
- package/driver/config-staleness.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 +3 -3
- 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 +64 -12
- 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/cli-version.mjs +103 -0
- 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 +10 -10
- package/driver/enqueue.mjs +1 -1
- package/driver/envelope-settle.mjs +1 -1
- package/driver/evidence-claim-invariant.mjs +2 -2
- package/driver/feedback-store.mjs +1 -1
- package/driver/findings-model.mjs +60 -10
- package/driver/flag-snapshot.mjs +20 -0
- package/driver/floor-duty.mjs +1 -1
- package/driver/form-neighbourhood.mjs +1 -1
- package/driver/framework.mjs +2 -2
- package/driver/gateway.mjs +45 -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 +4 -4
- package/driver/party-facts.mjs +2 -2
- package/driver/phase0.mjs +2 -2
- package/driver/pipeline-knockout.mjs +52 -4
- package/driver/pipeline.mjs +180 -67
- package/driver/placement-diff.mjs +2 -2
- package/driver/placement-form.mjs +4 -4
- package/driver/placement-union.mjs +1 -1
- package/driver/plain-register.mjs +120 -0
- package/driver/portal-access.mjs +1 -1
- package/driver/portal-acks.mjs +1 -1
- package/driver/portal-config-view.mjs +42 -3
- package/driver/portal-families.mjs +1 -1
- package/driver/portal-local-auth.mjs +1 -1
- package/driver/portal-report.mjs +7 -7
- package/driver/portal-service.mjs +41 -22
- package/driver/portal-upstream.mjs +2 -2
- package/driver/predelivery-lint.mjs +149 -11
- package/driver/prelim-variants-record.mjs +2 -2
- package/driver/profile-page.html +11 -3
- package/driver/profile-selection.mjs +1 -1
- package/driver/profile-service.mjs +6 -6
- package/driver/profiles/README.md +3 -3
- package/driver/profiles.mjs +145 -13
- 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 +49 -8
- package/driver/publish/knockout.mjs +42 -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 +646 -144
- package/driver/publish/render.mjs +2 -2
- package/driver/publish/report-data.mjs +13 -3
- 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 +5 -5
- package/driver/recording-agreement.mjs +3 -3
- package/driver/reference-score.mjs +7 -7
- package/driver/reference-strip-signatures.mjs +20 -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-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 +6 -6
- 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 +5 -5
- package/driver/skeptic-search.mjs +1 -1
- package/driver/skills/blind-frame/SKILL.md +2 -2
- package/driver/skills/case-law-citation/SKILL.md +2 -2
- package/driver/skills/knockout-assess/SKILL.md +94 -4
- package/driver/skills/matter-frame/SKILL.md +6 -6
- package/driver/skills/matter-frame/watchlist-reference.md +2 -2
- package/driver/skills/prelim-common-law/SKILL.md +1 -1
- package/driver/skills/prelim-search/SKILL.md +3 -3
- package/driver/skills/prelim-search/report-prose.md +82 -0
- package/driver/skills/prelim-search/risk-framework-demo.manifest.json +1 -1
- package/driver/skills/prelim-search/risk-framework-triage.manifest.json +1 -1
- package/driver/skills/prelim-search/risk-framework.manifest.json +1 -1
- package/driver/skills/prelim-search/synthesis-rules.md +1 -1
- 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 +5 -5
- package/driver/stage-context.mjs +1 -1
- package/driver/stages-knockout.mjs +55 -4
- package/driver/stages.mjs +101 -44
- package/driver/stray-artifacts.mjs +2 -2
- package/driver/suite-census.json +275 -65
- 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 +297 -80
- package/driver/unit-state-verdict.mjs +20 -12
- package/driver/verify-knockout.mjs +10 -2
- package/driver/verify.mjs +13 -13
- package/driver/whatif-memo-run.mjs +72 -9
- package/driver/whatif-memo.mjs +19 -1
- package/driver/whatif-queue.mjs +1 -1
- package/driver/whatif-worker.mjs +1 -1
- package/examples/README.md +2 -2
- package/examples/grants.example.json +6 -7
- package/mcp-server/CHANGELOG.md +6 -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 +2 -2
- package/mcp-server/lib/whatif.mjs +5 -5
- package/mcp-server/mint-token.mjs +1 -1
- package/mcp-server/package.json +2 -2
- package/mcp-server/packs/ops/EXAMPLES.md +2 -2
- package/mcp-server/server.mjs +77 -12
- package/package.json +30 -12
- package/portal-ui/dist/assets/{index-Ct3iQtZ2.css → index-1ziUJX1E.css} +43 -2
- package/portal-ui/dist/assets/{index-BUGgiYtF.js → index-CEYvXdqH.js} +226 -49
- package/portal-ui/dist/index.html +2 -2
- 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 +2 -2
- package/providers/corsearch/src/core.js +1 -1
- package/providers/jx-subclass/BUILDING.md +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +6 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
- package/providers/uspto-local/src/index-store.js +2 -2
- package/scripts/README.md +1 -1
- package/scripts/added-reference-check.mjs +29 -1
- package/scripts/authority-boundary-probe.mjs +1 -1
- package/scripts/backfill-started-at.mjs +1 -1
- package/scripts/citation-line-check.mjs +124 -5
- package/scripts/compare.mjs +2 -2
- 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 +7 -7
- package/scripts/env-classify.mjs +206 -18
- package/scripts/freeze-example-run.mjs +3 -3
- package/scripts/head-arrived-gated.mjs +1 -1
- package/scripts/headless-page.mjs +51 -2
- package/scripts/live-surface-check.mjs +129 -19
- package/scripts/main-health.mjs +1 -1
- package/scripts/merge-presence-check.mjs +3 -3
- package/scripts/mint-suite-census.mjs +6 -6
- package/scripts/nightly-notice.mjs +1 -3
- package/scripts/preinstall-node-check.mjs +24 -0
- package/scripts/reconcile-runs.mjs +1 -1
- package/scripts/release-await-cut.mjs +6 -4
- package/scripts/release-version-pr-checks.mjs +1 -1
- package/scripts/release-version.mjs +2 -2
- package/scripts/render-check.mjs +66 -7
- package/scripts/report-frame-check.mjs +1 -1
- package/scripts/report-screenshot.mjs +1 -1
- package/scripts/revisit-render-check.mjs +1 -1
- package/scripts/score.mjs +4 -4
- package/scripts/strip-tracker-citations.mjs +139 -0
- package/scripts/test-run.mjs +19 -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 +1 -1
- package/shared/anon-overlay.mjs +3 -3
- package/shared/brand.mjs +13 -13
- package/shared/citation-scan.mjs +1 -1
- package/shared/client-door.mjs +7 -7
- package/shared/customer-store.mjs +1 -1
- 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 +29 -1
- package/shared/names-in-force.mjs +4 -0
- package/shared/node-floor.mjs +97 -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/staff-domain.mjs +154 -0
- package/shared/store-in-repo.mjs +25 -4
- package/shared/suite-census.mjs +4 -4
- 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/skills/clearotron-ops/SKILL.md +1 -1
- package/driver/recipes/README.md +0 -49
- package/driver/skills/prelim-search/risk-framework-aurora.manifest.json +0 -19
- package/driver/skills/prelim-search/risk-framework-aurora.md +0 -77
- package/driver/skills/prelim-search/risk-framework-zephyr.manifest.json +0 -14
- package/driver/skills/prelim-search/risk-framework-zephyr.md +0 -33
- package/driver/skills/prelim-search/worked-examples-aurora.md +0 -10
- package/driver/skills/prelim-search/worked-examples-zephyr.md +0 -10
- 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/ai-page-render-check.mjs +0 -532
- package/scripts/clearances-render-check.mjs +0 -480
- package/scripts/composer-render-check.mjs +0 -1027
- package/scripts/deploy-test.sh +0 -309
- package/scripts/home-render-check.mjs +0 -526
- package/scripts/portal-lifecycle-check.mjs +0 -639
|
@@ -66,7 +66,7 @@ export const NEUTRAL_TOOL_RESULT_SHAPE = Object.freeze({
|
|
|
66
66
|
// key the provider's own kernel is configured to join on is the one its own doBatchScreen emits.
|
|
67
67
|
// See BATCH_SCREEN_JOIN_KEY.
|
|
68
68
|
row: Object.freeze({ identity: Object.freeze(["uri", "record_id"]), verdict: "screen_verdict" }),
|
|
69
|
-
// euipo answers `screened: <count>`. The free tier's pre- read was
|
|
69
|
+
// euipo answers `screened: <count>`. The free tier's pre-change read was
|
|
70
70
|
// `parsed.rows ?? parsed.screened ?? parsed.results ?? parsed.records` — on euipo that chain
|
|
71
71
|
// resolves an INTEGER as the screening result the moment `rows` is ever absent. The key is NOT
|
|
72
72
|
// renamed here: the response text is the seat's prompt surface and euipo's own callers read it.
|
|
@@ -74,10 +74,10 @@ export const NEUTRAL_TOOL_RESULT_SHAPE = Object.freeze({
|
|
|
74
74
|
// this file learns the trap instead of rediscovering it.
|
|
75
75
|
reservedScalars: Object.freeze({ screened: "number", asked: "number" }),
|
|
76
76
|
}),
|
|
77
|
-
// Audited alongside batch screen (
|
|
77
|
+
// Audited alongside batch screen (the "worth checking at the same time"): NO split. Every
|
|
78
78
|
// provider that implements search answers `results[]` — corsearch and clarivate through
|
|
79
79
|
// `normalizeSearchResponse`, euipo/uspto-local/free-tier directly — and the driver reads exactly
|
|
80
|
-
// that name (driver/driver.config.mjs
|
|
80
|
+
// that name (driver/driver.config.mjs `recordsFromSearch`, and the `clarivate` entry).
|
|
81
81
|
register_search: Object.freeze({
|
|
82
82
|
list: "results",
|
|
83
83
|
listAliases: Object.freeze([]),
|
|
@@ -115,8 +115,8 @@ const MARKUP_ARMS = [
|
|
|
115
115
|
* long-form arm. A slogan mark has a legitimately long dominant element and cannot be restated any
|
|
116
116
|
* shorter, so refusing a value for BEING LONG is right at the compiler and wrong at a corrective
|
|
117
117
|
* stage gate — it hands back a reason with no remedy. An annotation always has a remedy: delete the
|
|
118
|
-
* note, keep the term. — that is also why it may sit ABOVE a word-count floor: `
|
|
119
|
-
* is an annotation by no measure a word count can see, exactly as
|
|
118
|
+
* note, keep the term. — that is also why it may sit ABOVE a word-count floor: `COASTLINE (root)`
|
|
119
|
+
* is an annotation by no measure a word count can see, exactly as the one-word `**BIOVELTRIN**`
|
|
120
120
|
* was markup by no measure a word count could see.
|
|
121
121
|
*
|
|
122
122
|
* Moved here from variant-manifest-model.mjs so the stage gate and the plan compiler share
|
|
@@ -53,7 +53,7 @@ export const MATCH_MODE_PREFIX = {
|
|
|
53
53
|
// `provider` discriminator on every row.
|
|
54
54
|
//
|
|
55
55
|
// SECURITY — the ids logged (agentId / sessionKey / sessionId) are the GATEWAY tool-call context
|
|
56
|
-
// (e.g. "clawdi", "
|
|
56
|
+
// (e.g. "clawdi", "clearotron-acme-…"), the per-run attribution. They are NOT the Corsearch `sessionKey`
|
|
57
57
|
// COOKIE (the live credential, which merely shares the name). logCall is only ever handed `tctx`
|
|
58
58
|
// (kind + gateway ids + target) and response metrics — the cookie is never passed in. Keep it so.
|
|
59
59
|
export const { logCall, logRecordBody, tctxOf } = makeLedger("corsearch");
|
|
@@ -43,7 +43,7 @@ Then the evidence, which is the point of the directory:
|
|
|
43
43
|
node verify-relations.mjs # relation typing vs the hand-checked answer key
|
|
44
44
|
node verify-overlap.mjs # a machine read vs a human read, on pages both cover
|
|
45
45
|
node coverage-demo.mjs # read-and-empty and never-read answer DIFFERENTLY
|
|
46
|
-
node score-truth.mjs # the 63-item key
|
|
46
|
+
node score-truth.mjs # the 63-item key
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
## What a build needs that this repo does not carry
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
// stdin-guard.mjs — orphan self-termination for stdio-spawned MCP processes.
|
|
4
4
|
//
|
|
5
5
|
// A stdio MCP server lives exactly as long as the client that spawned it: stdin EOF/close means that
|
|
6
|
-
// client (`claude -p` under the
|
|
6
|
+
// client (`claude -p` under the clearotron engine, or any other stdio MCP client) is gone and no request can ever arrive
|
|
7
7
|
// again. Without this guard the bridge held its upstream HTTP transport open FOREVER after the parent
|
|
8
8
|
// died (proven orphan: a bridge.mjs --server legaldatahunter process, PPID 1, ran 3.5 days) — still
|
|
9
9
|
// authenticated, still able to run billable upstream calls for a dead session. Exit 0 and abandon any
|
|
10
10
|
// in-flight work: continuing it is exactly the failure mode. Dependency-free on purpose (unit-tested
|
|
11
|
-
// from the
|
|
11
|
+
// from the clearotron-driver suite, which does not install the bridge's SDK).
|
|
12
12
|
//
|
|
13
13
|
// NOTE: `end` fires only once something reads stdin (the MCP transport does, post-connect); `close`
|
|
14
14
|
// covers a destroyed stream. The steady-state orphan — connected bridge, parent dies later — is the
|
|
@@ -489,8 +489,8 @@ function predicateClause(predicate, term) {
|
|
|
489
489
|
// predicate. Unanchored, because corporate names arrive in every spelling there is.
|
|
490
490
|
//
|
|
491
491
|
// NO FTS NARROWER HERE, deliberately, and it is the same trap as the suffix one. An FTS
|
|
492
|
-
// token-prefix candidate set is NOT a superset of an unanchored contains: owner "
|
|
493
|
-
// searched for "
|
|
492
|
+
// token-prefix candidate set is NOT a superset of an unanchored contains: owner "FOXGLADE INTERACTIVE"
|
|
493
|
+
// searched for "OXGLADE" satisfies the LIKE, but no token starts with URORA, so the narrower
|
|
494
494
|
// would drop a true match and the verification could never put it back. A narrower may only
|
|
495
495
|
// ever be a superset of its verifier. So this is an honest full scan, and how expensive that is
|
|
496
496
|
// at register scale is UNMEASURED.
|
package/scripts/README.md
CHANGED
|
@@ -70,7 +70,7 @@ returns `stale-probe` and refuses, where at one zoom level it used to hand back
|
|
|
70
70
|
were a measurement. Same six failures, one honest reason. The obstacle was one level up:
|
|
71
71
|
`--virtual-time-budget` services the outer page and starves that subframe.
|
|
72
72
|
|
|
73
|
-
**That rewrite has landed (
|
|
73
|
+
**That rewrite has landed (2026-08-21) and the check measures.** It drives Chrome on real time
|
|
74
74
|
and the page POSTs its state to a loopback server when it is ready, so the harness is *told* rather than
|
|
75
75
|
guessing with a budget; a page that never signals fails by name and can no longer be mistaken for a
|
|
76
76
|
measurement. Baseline before: four consecutive runs gave 4, 6, 1 and 4 failures, with the settle loop
|
|
@@ -67,6 +67,34 @@ export const isProse = (path, line) => {
|
|
|
67
67
|
return t.startsWith("//") || t.startsWith("*") || t.startsWith("/*");
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
+
// ── A COLOUR IS NOT A CITATION, AND THE DIGITS ALONE CANNOT SAY WHICH ───────────────────────────
|
|
71
|
+
//
|
|
72
|
+
// `TOKEN` matches digits only, so a six-digit hex colour is read as its leading digits and refused as a
|
|
73
|
+
// reference. An earlier sweep acted on exactly that reading and rewrote sixteen colour literals as issue
|
|
74
|
+
// text, two of them live mermaid `classDef` directives — so the documentation's diagrams rendered
|
|
75
|
+
// broken, and thirteen comments stated a value that was no longer there. Restoring them then hit this
|
|
76
|
+
// guard, whose refusal told the author to write the very text that had caused it.
|
|
77
|
+
//
|
|
78
|
+
// TWO RULES, and between them they settle every case without a table of exceptions:
|
|
79
|
+
//
|
|
80
|
+
// 1. A hex colour may contain a-f; an issue number is decimal. A token carrying a letter cannot be a
|
|
81
|
+
// reference whatever its length, and no reading of the digits is needed to know it.
|
|
82
|
+
// 2. For the all-digit case — three digits is both a short colour and a plausible issue number — the
|
|
83
|
+
// SITE settles it: a value whose property is a colour is a colour. Same rule and the same property
|
|
84
|
+
// list as the guard in `driver/test/prompt-payload-names-no-tracker-issue.test.mjs`, which already
|
|
85
|
+
// plants both and requires them told apart.
|
|
86
|
+
//
|
|
87
|
+
// This does NOT widen to bare digits in prose. A reference in a comment is still refused, which is the
|
|
88
|
+
// whole point of the check, and the arm asserts that direction too.
|
|
89
|
+
const HEX_COLOUR = /#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})\b/g;
|
|
90
|
+
const COLOUR_PROPERTY = /(?:^|[;{\s(,])(?:color|background|background-color|border|border-color|fill|stroke|outline|box-shadow|text-shadow)\s*:\s*$/i;
|
|
91
|
+
|
|
92
|
+
/** Strip hex colours, so what remains is only tokens that could be a reference. */
|
|
93
|
+
export const withoutColourValues = (line) => String(line).replace(HEX_COLOUR, (m, offset, whole) => {
|
|
94
|
+
if (/[a-fA-F]/.test(m.slice(1))) return ""; // letters ⇒ not a decimal number
|
|
95
|
+
return COLOUR_PROPERTY.test(whole.slice(0, offset)) ? "" : m; // all digits ⇒ the property decides
|
|
96
|
+
});
|
|
97
|
+
|
|
70
98
|
/** Strip the spans where a `#NNN` is an address rather than a reference. */
|
|
71
99
|
export const withoutLinkTargets = (line) => line
|
|
72
100
|
.replace(/\]\([^)]*\)/g, "]()") // markdown link targets, anchors included
|
|
@@ -76,7 +104,7 @@ export const withoutLinkTargets = (line) => line
|
|
|
76
104
|
/** Every offending token on one added line, or an empty array. */
|
|
77
105
|
export const offendingTokens = (path, line) => {
|
|
78
106
|
if (!isProse(path, line)) return [];
|
|
79
|
-
return [...withoutLinkTargets(line).matchAll(TOKEN)].map((m) => m[0]);
|
|
107
|
+
return [...withoutColourValues(withoutLinkTargets(line)).matchAll(TOKEN)].map((m) => m[0]);
|
|
80
108
|
};
|
|
81
109
|
|
|
82
110
|
const baseArg = () => {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
4
4
|
// authority-boundary-probe.mjs — DOES THE CLI OBEY THE BOUNDARY, AND DOES THE RUN SURVIVE IT?
|
|
5
5
|
//
|
|
6
|
-
//
|
|
6
|
+
// That acceptance, and the half of it CI structurally cannot reach: CI has no claude binary and no
|
|
7
7
|
// subscription, so `node --test` can only prove the hook DECIDES correctly. Whether `claude -p` HONOURS
|
|
8
8
|
// the decision — and whether the turn carries on afterwards instead of dying — is a property of the live
|
|
9
9
|
// CLI, and the only honest way to know it is to ask the live CLI.
|
|
@@ -38,7 +38,7 @@ const WORKSPACE_ROOT = argValue("--workspace-root") ?? envFrom(process.env, "CLE
|
|
|
38
38
|
// The default is the CANONICAL agent alone. It used to name two of this firm's people, which shipped
|
|
39
39
|
// their identities to every clone and told an installer nothing. Per-agent rosters are a
|
|
40
40
|
// property of a deployment, so they are passed: --agents a,b,c
|
|
41
|
-
const AGENTS = (argValue("--agents") ?? "
|
|
41
|
+
const AGENTS = (argValue("--agents") ?? "localagent").split(",").map((s) => s.trim()).filter(Boolean);
|
|
42
42
|
const APPLY = process.argv.includes("--apply");
|
|
43
43
|
|
|
44
44
|
function argValue(flag) {
|
|
@@ -31,12 +31,15 @@
|
|
|
31
31
|
// That last paragraph prints on every run, including a clean one, because a guard whose "clean" is
|
|
32
32
|
// near-meaningless and does not say so is worse than no guard: its presence reads as coverage.
|
|
33
33
|
//
|
|
34
|
-
// The remedy is the convention, not this script —
|
|
35
|
-
//
|
|
34
|
+
// The remedy is the convention, not this script — ADR-0005, "Cite the symbol, not the line": a symbol
|
|
35
|
+
// survives every move and a number survives none, and where the target is not a named symbol, quote a few
|
|
36
|
+
// words of it. This used to name CONTRIBUTING.md, which contains no such section — that record says in as
|
|
37
|
+
// many words that it SUPERSEDES CONTRIBUTING's instruction, so the pointer was to the superseded half. This guard cannot enforce that (the
|
|
36
38
|
// ruling explicitly declines a form guard without an allowlist for the ~800 existing citations), so it
|
|
37
39
|
// holds the decidable perimeter and names the gap.
|
|
38
40
|
|
|
39
41
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
42
|
+
import { execFileSync } from "node:child_process"; // — the ratchet reads a range; injected in tests
|
|
40
43
|
import { fileURLToPath } from "node:url";
|
|
41
44
|
import { join, dirname, basename } from "node:path";
|
|
42
45
|
|
|
@@ -102,7 +105,7 @@ const exemptTarget = (t) => EXEMPT_TARGETS.find((e) => e.target.test(t)) ?? null
|
|
|
102
105
|
* A citation this checker CANNOT resolve and a human has adjudicated anyway. One rule for every member:
|
|
103
106
|
* the entry names the citing FILE and the cited BASENAME, and it carries the reason resolution is
|
|
104
107
|
* impossible rather than merely hard. Anything ambiguous and undeclared FAILS the run — the bucket is
|
|
105
|
-
* not a backlog to hide in, which is what it was until
|
|
108
|
+
* not a backlog to hide in, which is what it was until the second pass emptied it.
|
|
106
109
|
*
|
|
107
110
|
* `citation-line-check.test.mjs` asserts every entry is REACHED — that it still matches a live ambiguous
|
|
108
111
|
* citation — not merely that its regex is well formed. That distinction is the defect this pass found in
|
|
@@ -156,7 +159,7 @@ export function indexByBasename(files) {
|
|
|
156
159
|
*
|
|
157
160
|
* "ambiguous" is a finding AND an error: a citation reading `SKILL.md:41` names fifteen possible files in
|
|
158
161
|
* this tree, so nothing here can judge it and nothing here ever did. That was its whole defect. Since
|
|
159
|
-
*
|
|
162
|
+
* That second pass the population is empty apart from AMBIGUOUS_DECLARED, and an undeclared one fails.
|
|
160
163
|
*/
|
|
161
164
|
export function resolveCited(cited, byBase, exists = (p) => existsSync(join(ROOT, p))) {
|
|
162
165
|
if (exists(cited)) return { state: "exact", path: cited };
|
|
@@ -370,6 +373,41 @@ function main() {
|
|
|
370
373
|
// — the no-symbol slice: a cited span that is entirely blank or brace-only.
|
|
371
374
|
const { misses: blankTarget, unshipped: blankUnshipped } = structuralMisses(citations, readLines);
|
|
372
375
|
|
|
376
|
+
// ── `--ratchet`: refuse a NEW citation that carries a line number and no symbol ────────────────────
|
|
377
|
+
//
|
|
378
|
+
// Separate mode rather than folded into the default run, because it answers about a RANGE and the rest
|
|
379
|
+
// of this script answers about the tree. Mixing them would make one exit code stand for two questions.
|
|
380
|
+
if (process.argv.includes("--ratchet")) {
|
|
381
|
+
const i = process.argv.indexOf("--base");
|
|
382
|
+
const base = i >= 0 ? process.argv[i + 1] : "origin/main";
|
|
383
|
+
const { error, lines } = addedLinesSince(base);
|
|
384
|
+
if (error) {
|
|
385
|
+
// A RANGE THAT COULD NOT BE READ IS NOT A RANGE THAT ADDED NOTHING, and 2 keeps the two apart —
|
|
386
|
+
// 1 already means "found something" here.
|
|
387
|
+
console.error(`${GUARD} --ratchet: ${error}`);
|
|
388
|
+
console.error(" That is this check failing to look, not a clean range. Nothing was judged.");
|
|
389
|
+
process.exit(2);
|
|
390
|
+
}
|
|
391
|
+
const bare = newBareCitations(lines);
|
|
392
|
+
console.log(`${GUARD} --ratchet: ${lines.length} added line(s) against ${base}, ${bare.length} new bare citation(s)`);
|
|
393
|
+
for (const b of bare) console.log(` ${b.file}:${b.line} cites ${b.cited}:${b.start} with no symbol\n ${b.text.slice(0, 110)}`);
|
|
394
|
+
if (bare.length) {
|
|
395
|
+
console.error("\nA citation carrying a line number and no symbol is checked for EXISTENCE and nothing");
|
|
396
|
+
console.error("else, so it drifts onto a different real line and every test here still passes.");
|
|
397
|
+
console.error("");
|
|
398
|
+
console.error("The documented form (ADR-0005) carries no line number at all:");
|
|
399
|
+
console.error(" `toolGroupsForStage()` in `gather-config.mjs`");
|
|
400
|
+
console.error("Where the target is not a named symbol, quote a few words of it. A line number is also");
|
|
401
|
+
console.error("accepted when a bare identifier sits directly beside it — `pipeline.mjs:875 recordsFromSearch`");
|
|
402
|
+
console.error("— because that one this script can check. Backticks around the symbol are NOT stepped over,");
|
|
403
|
+
console.error("so a line number with a backticked symbol still reads as bare.");
|
|
404
|
+
console.error("");
|
|
405
|
+
console.error("The existing corpus is not your problem: this judges only what the range ADDS.");
|
|
406
|
+
process.exit(1);
|
|
407
|
+
}
|
|
408
|
+
process.exit(0);
|
|
409
|
+
}
|
|
410
|
+
|
|
373
411
|
if (process.argv.includes("--json")) {
|
|
374
412
|
console.log(JSON.stringify({
|
|
375
413
|
files: corpus.length, citations: citations.length, resolved: resolved.length,
|
|
@@ -595,6 +633,87 @@ const CALLS = /^\s*\(/;
|
|
|
595
633
|
const OWN_NUMBER = /^\s*(?:at\s+\d|:\d)/;
|
|
596
634
|
|
|
597
635
|
/** The symbol-shaped tokens adjoining a citation, in BOTH grammars: `cite SYM` and `SYM (cite)`. PURE. */
|
|
636
|
+
// ── THE RATCHET: A NEWLY ADDED CITATION CARRIES A SYMBOL (tracker issue 125) ────────────────────────
|
|
637
|
+
//
|
|
638
|
+
// The blindness above is not closeable on the existing corpus. Of the line citations in this tree only a
|
|
639
|
+
// minority name a symbol beside the number, and the rest are checked for EXISTENCE and nothing more — a
|
|
640
|
+
// citation that drifted onto a different real line reads as correct to every test here. Repointing them by
|
|
641
|
+
// hand is not the repair: the two hand measurements recorded in BLINDNESS both found wrong lines
|
|
642
|
+
// introduced by exactly that kind of pass.
|
|
643
|
+
//
|
|
644
|
+
// So this closes the class GOING FORWARD, at the only moment the correct symbol is cheap to write — when
|
|
645
|
+
// the author still knows what they meant. Same shape as the catalogue and release-note ratchets: the
|
|
646
|
+
// existing population is left to convert by attrition, and the number that must not grow is the number of
|
|
647
|
+
// citations nothing can check.
|
|
648
|
+
//
|
|
649
|
+
// WHAT IS REFUSED IS NARROW, and the two questions the issue left open are answered here rather than
|
|
650
|
+
// assumed:
|
|
651
|
+
//
|
|
652
|
+
// · a line number WITH a symbol is fine. The symbol is what makes it checkable, and `symbolClaims`
|
|
653
|
+
// above already verifies it; forbidding the number as well would be stricter than the harm.
|
|
654
|
+
// · a citation with NO line number is fine, symbol or not. It cannot go stale from an edit above it,
|
|
655
|
+
// which is the whole failure. This is also the answer for a data file, a fixture or a generated
|
|
656
|
+
// table, where there is no symbol to name — cite the file, leave the line off.
|
|
657
|
+
//
|
|
658
|
+
// Refused, therefore, is exactly one shape: a NEW citation carrying a line number and no symbol.
|
|
659
|
+
//
|
|
660
|
+
// PURE, and the added lines are injected, so a test drives it without a git repository — a ratchet that
|
|
661
|
+
// can only run against the real tree cannot be shown to fail.
|
|
662
|
+
// THE RULE'S OWN DEFINITION IS EXEMPT, AND NAMED RATHER THAN PATTERN-MATCHED. Its specimens are bare
|
|
663
|
+
// citations on purpose — a test that cannot write the shape it refuses cannot exercise it — so scanning it
|
|
664
|
+
// puts the guard's own examples into the population it polices, and the ratchet refuses its own arrival.
|
|
665
|
+
// Caught by driving the check against a range containing it, not by review.
|
|
666
|
+
//
|
|
667
|
+
// The cost of naming a file is that a REAL bare citation added there also escapes. That is the same trade
|
|
668
|
+
// the reference-strip signatures make for the same reason, and it is preferable to a pattern, which would
|
|
669
|
+
// quietly widen to files nobody considered.
|
|
670
|
+
export const RATCHET_EXEMPT = ["driver/test/a-new-citation-carries-something-that-can-be-checked.test.mjs"];
|
|
671
|
+
|
|
672
|
+
export function newBareCitations(addedLines) {
|
|
673
|
+
const out = [];
|
|
674
|
+
for (const { file, line, text } of addedLines ?? []) {
|
|
675
|
+
if (RATCHET_EXEMPT.includes(file)) continue;
|
|
676
|
+
for (const m of String(text ?? "").matchAll(CITE_RE)) {
|
|
677
|
+
// The same discriminator the corpus scan uses: a second `:number` closing a paren is a V8 stack
|
|
678
|
+
// frame, not a citation. Reading them as citations would refuse a fixture that captured a trace.
|
|
679
|
+
if (/^:\d+\)/.test(String(text).slice(m.index + m[0].length))) continue;
|
|
680
|
+
if (symbolsBeside(String(text), m.index, m[0].length).length > 0) continue;
|
|
681
|
+
out.push({ file, line, cited: m[1], start: Number(m[2]), text: String(text).trim() });
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
return out;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* The lines a range ADDS, as `{ file, line, text }`. `run` is injected for the same reason as above.
|
|
689
|
+
*
|
|
690
|
+
* `--unified=0` so context lines are not read as additions — with context, every citation near an edit
|
|
691
|
+
* would be reported as new and the ratchet would refuse changes that added nothing.
|
|
692
|
+
*/
|
|
693
|
+
export function addedLinesSince(base = "origin/main", run = null) {
|
|
694
|
+
const exec = run ?? ((...a) => execFileSync("git", ["-C", ROOT, ...a], { encoding: "utf8", maxBuffer: 1e9 }));
|
|
695
|
+
let diff;
|
|
696
|
+
try { diff = exec("diff", "--unified=0", "--no-color", `${base}...HEAD`); }
|
|
697
|
+
catch (e) {
|
|
698
|
+
// A range that could not be read is not a range that added nothing, and the caller must not confuse them.
|
|
699
|
+
return { error: `could not diff ${base}...HEAD (${String(e?.message ?? e).split("\n")[0].slice(0, 90)})`, lines: [] };
|
|
700
|
+
}
|
|
701
|
+
const lines = [];
|
|
702
|
+
let file = null, next = 0;
|
|
703
|
+
for (const raw of diff.split("\n")) {
|
|
704
|
+
// The two file headers git writes, matched in full rather than by a "+++" prefix. An added line
|
|
705
|
+
// beginning with "++" arrives here as "+++...", so a prefix test drops it AND numbers every line
|
|
706
|
+
// after it in the hunk one low, because the line it skipped never advanced the counter. Both
|
|
707
|
+
// forms are exact: a deletion's header is the bare string, with no path and no timestamp.
|
|
708
|
+
if (raw.startsWith("+++ b/")) { file = raw.slice(6); continue; }
|
|
709
|
+
if (raw === "+++ /dev/null") { file = null; continue; }
|
|
710
|
+
const h = raw.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
|
711
|
+
if (h) { next = Number(h[1]); continue; }
|
|
712
|
+
if (raw.startsWith("+")) { lines.push({ file, line: next++, text: raw.slice(1) }); }
|
|
713
|
+
}
|
|
714
|
+
return { error: null, lines };
|
|
715
|
+
}
|
|
716
|
+
|
|
598
717
|
export function symbolsBeside(line, index, length) {
|
|
599
718
|
const after = String(line).slice(index + length).replace(SEP_AFTER, "");
|
|
600
719
|
const am = after.match(/^[A-Za-z_$][A-Za-z0-9_$]*/);
|
|
@@ -702,7 +821,7 @@ export function symbolMisses(citations, readLines) {
|
|
|
702
821
|
// are ranges that open on a blank line and then carry exactly the content they promise. Requiring EVERY
|
|
703
822
|
// line of the span to be empty drops both WITHOUT an exemption, and leaves no false positive to exempt.
|
|
704
823
|
// That matters more than the two rows: an exemption list here would be keyed on "this citation looks
|
|
705
|
-
// like prose about citations", which is the shape that hid
|
|
824
|
+
// like prose about citations", which is the shape that hid the drift inside its own carve-out.
|
|
706
825
|
//
|
|
707
826
|
// WHAT IT CANNOT SEE, and why this stays a slice. A citation that lands on the WRONG NON-BLANK LINE is
|
|
708
827
|
// invisible to it — that looks identical to a correct one. Three of the eleven citations repointed in
|
package/scripts/compare.mjs
CHANGED
|
@@ -83,7 +83,7 @@ const CONFIG_PARITY = {
|
|
|
83
83
|
};
|
|
84
84
|
|
|
85
85
|
// ── what these five deliberately do not reach ────────────────────────────────────────────────────────
|
|
86
|
-
// Recorded as not covered, never silently absent —
|
|
86
|
+
// Recorded as not covered, never silently absent — its own instruction.
|
|
87
87
|
const NOT_COVERED = [
|
|
88
88
|
"common law in a country that has none — Switzerland has no common-law rights system and none of the five points there, so the engine's behaviour when the grid has nothing to search is unexercised",
|
|
89
89
|
"the deliverable step — the client-format document produced at the lawyer's agent is outside tracker #462 and no scenario reaches it",
|
|
@@ -212,7 +212,7 @@ function findingTerritories(f) {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
/**
|
|
215
|
-
*
|
|
215
|
+
* That classification, on the frozen register plan: is a query THIS territory's own deep-dive, one
|
|
216
216
|
* that merely reaches it, or one restricted to nowhere?
|
|
217
217
|
*
|
|
218
218
|
* "Per-jurisdiction is not narrower than the scope. It is a query that names ONE territory and no
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// that touches disk, and it exists so the planted-divergence test can hand the checker an invented
|
|
8
8
|
// file instead of writing one into the tree.
|
|
9
9
|
//
|
|
10
|
-
// THE CORPUS IS DISCOVERED, NEVER ENUMERATED, and that is
|
|
10
|
+
// THE CORPUS IS DISCOVERED, NEVER ENUMERATED, and that is the hardest requirement rather than a
|
|
11
11
|
// preference: "plant a divergence in a NEW authoring layer — the check must find it structurally, not
|
|
12
12
|
// because the layer was enumerated." So the corpus is every tracked `.mjs` and `.md` under `driver/`,
|
|
13
13
|
// full stop. A new dispatch module, a new skill file, a seventh authoring surface nobody has thought
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
//
|
|
16
16
|
// `git ls-files`, via shared/tracked-files.mjs, because a directory walk lists a different set (build
|
|
17
17
|
// output, an editor backup, a contributor's scratch file) and because a guard that cannot see its
|
|
18
|
-
// corpus must SAY SO rather than report a clean zero.
|
|
18
|
+
// corpus must SAY SO rather than report a clean zero. That lesson, and CLAUDE.md's hard rule: an
|
|
19
19
|
// absence is a finding.
|
|
20
20
|
//
|
|
21
21
|
// node scripts/contract-dictation-scan.mjs report; exit 1 on any divergence
|
package/scripts/dead-names.mjs
CHANGED
|
@@ -45,7 +45,7 @@ export const GUARD = "dead-names (#853)";
|
|
|
45
45
|
// `clawdi-lisa` and `clawdi-lidia` are 's, not 's, and they are here rather than in a second
|
|
46
46
|
// scanner because the mechanism is identical: a name that must never reappear. They were per-person
|
|
47
47
|
// agent identities for individuals at this firm, shipped in an operator script's default roster, in a
|
|
48
|
-
// systemd unit watching their queues, and in two test fixtures.
|
|
48
|
+
// systemd unit watching their queues, and in two test fixtures. That out-of-scope note ruled `alex`
|
|
49
49
|
// and `sam` INVENTED, which is why those stay; these two were never covered by that ruling.
|
|
50
50
|
export const DEAD_NAME_RE = /lorestar|lore_(pool|url|flags)|prelim_lore|lorectl|loreurl|lorecontrols|trademark-lore|\blore\b|\baughra|clawdi-(lisa|lidia)/i;
|
|
51
51
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
//
|
|
6
6
|
// The question came from the codex round (18 Aug): an engine override is carried by the DRIVER
|
|
7
7
|
// ACTIVATION's environment, and an activation that never happens carries no environment. On the box this
|
|
8
|
-
// was first asked about, no runner process was running for any user and no
|
|
8
|
+
// was first asked about, no runner process was running for any user and no clearotron unit existed at system
|
|
9
9
|
// level — so every job enqueued would have sat there, and the round would have been fiction.
|
|
10
10
|
//
|
|
11
11
|
// Nothing here builds a drainer. ONE ALREADY SHIPS: `driver/systemd/prelim-driver.path` (inotify),
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
import { spawnSync } from "node:child_process";
|
|
31
31
|
import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
|
|
32
|
-
import { fileURLToPath } from "node:url";
|
|
32
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
33
33
|
import { join, dirname } from "node:path";
|
|
34
34
|
import { homedir, userInfo } from "node:os";
|
|
35
35
|
import { isEntrypoint } from "../shared/is-entrypoint.mjs"; // — one entry-point test, all spellings
|
|
@@ -132,7 +132,7 @@ export function watchedQueueDirs(unitText, home) {
|
|
|
132
132
|
//
|
|
133
133
|
// Reading the list without the reset is wrong in BOTH directions — it keeps globs the deployment
|
|
134
134
|
// has disowned, and (because the caller then compares against a superset) it can report a directory
|
|
135
|
-
// as watched that nothing watches. The second is
|
|
135
|
+
// as watched that nothing watches. The second is the original harm, produced by the guard built
|
|
136
136
|
// to prevent it.
|
|
137
137
|
if (!m[1].trim()) { out.length = 0; continue; }
|
|
138
138
|
// EXTENSION-AGNOSTIC. The queue watcher globs `*.json` and the outbox watcher globs `*.pending`;
|
|
@@ -223,7 +223,7 @@ export function runnerRunning() {
|
|
|
223
223
|
return { known: true, procs };
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
-
// ── THE OUTBOX IS THE SAME HAZARD, ONE LANE OVER (
|
|
226
|
+
// ── THE OUTBOX IS THE SAME HAZARD, ONE LANE OVER (the tail) ───────────────────────────────────────
|
|
227
227
|
//
|
|
228
228
|
// `prelim-outbox.path` carries the identical literal glob and says so in its own header: "this literal
|
|
229
229
|
// and the driver's `config.outboxDir` are two spellings of one fact with nothing checking them against
|
|
@@ -244,7 +244,7 @@ export async function preflight({ home = homedir(), root = ROOT } = {}) {
|
|
|
244
244
|
const unitPath = join(root, "driver", "systemd", "prelim-driver.path");
|
|
245
245
|
const unitText = existsSync(unitPath) ? readFileSync(unitPath, "utf8") : null;
|
|
246
246
|
|
|
247
|
-
const { config } = await import(join(root, "driver", "driver.config.mjs"));
|
|
247
|
+
const { config } = await import(pathToFileURL(join(root, "driver", "driver.config.mjs")).href);
|
|
248
248
|
const queueDirs = config.queueDirs ?? [];
|
|
249
249
|
const watched = unitText == null ? null : watchedQueueDirs(unitText, home);
|
|
250
250
|
|
|
@@ -39,7 +39,7 @@ import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
|
39
39
|
import { join } from "node:path";
|
|
40
40
|
import { driverDir } from "../shared/driver-dir.mjs"; //
|
|
41
41
|
// The seat-record reader, imported rather than re-derived: "does this run have work in it" must be the
|
|
42
|
-
// SAME question the retry instrument asks, or two tools disagree about one fact (
|
|
42
|
+
// SAME question the retry instrument asks, or two tools disagree about one fact ().
|
|
43
43
|
import { dispatchRows } from "../driver/seat-attempts.mjs";
|
|
44
44
|
import { isEntrypoint } from "../shared/is-entrypoint.mjs"; // — realpath both sides, or a symlinked invocation exits 0 silently
|
|
45
45
|
|
package/scripts/e2e.mjs
CHANGED
|
@@ -44,7 +44,7 @@ import { mcpToolCall } from "../driver/portal-mcp-client.mjs";
|
|
|
44
44
|
// resolve the depth the same way every other door does — never from a word the scenario file typed.
|
|
45
45
|
import { reportIdentityFor, ORDERABLE_PRODUCTS, RETIRED_PRODUCTS } from "../driver/search-policy.mjs";
|
|
46
46
|
// The queue's filename vocabulary, from the module that owns it. created that module because the
|
|
47
|
-
// vocabulary "has now been written down three times and the copies disagreed";
|
|
47
|
+
// vocabulary "has now been written down three times and the copies disagreed"; the first draft wrote it
|
|
48
48
|
// down twice more here, from memory, and false-alarmed on every prose sidecar of every live job. Sourced,
|
|
49
49
|
// so the next suffix the engine adds reaches this harness the day it lands. queue-markers.mjs is PURE —
|
|
50
50
|
// importing it pulls in nothing, which is why this file can have it and cannot have runner.mjs (that chain
|
|
@@ -57,10 +57,10 @@ import { isLiveQueueMarker, isQueueSidecar, liveQueueState, LIVE_QUEUE_STATES, T
|
|
|
57
57
|
// leave the real one to park tomorrow's re-run as a duplicate. usage-ledger.mjs is a pure leaf too
|
|
58
58
|
// (node:fs + node:path + queue-markers.mjs), so it drags no driver machinery in either.
|
|
59
59
|
import { matterLedgerPath } from "../driver/usage-ledger.mjs";
|
|
60
|
-
import { probeWorker } from "../driver/queue-watch-probe.mjs"; //
|
|
60
|
+
import { probeWorker } from "../driver/queue-watch-probe.mjs"; // the drain this deployment actually has
|
|
61
61
|
// Teardown asks whether a process is actually producing a run before it rewrites the record that says so.
|
|
62
62
|
import { claimLivenessForCodename, claimForbidsDestruction } from "../driver/claim-liveness.mjs";
|
|
63
|
-
// The store admission sweep (
|
|
63
|
+
// The store admission sweep (moved here from a bundled-store CI test when the bundled scenarios
|
|
64
64
|
// were deleted): every job block in the configured store must be treated by the doors exactly the way
|
|
65
65
|
// its scenario declares, and the check has to run where the store exists — CI cannot read it.
|
|
66
66
|
import { validateJob } from "../driver/enqueue-schema.mjs";
|
|
@@ -82,7 +82,7 @@ import { readReceipt, appendRound, stampRound, tokenFromRef, roundsFromRuns, mer
|
|
|
82
82
|
roundLetters, receiptPath, scenarioRefs as scenarioRefsOf, findRunsByRef as findRunsIn,
|
|
83
83
|
SCENARIO_FILE, byScenarioNumber, tierOf, SCENARIO_TIERS, DEFAULT_TIER }
|
|
84
84
|
from "../driver/e2e-rounds.mjs";
|
|
85
|
-
//
|
|
85
|
+
// That refusal — "is this data plane production" — sourced, because this file used to restate it and
|
|
86
86
|
// the two copies had ALREADY drifted, in both directions:
|
|
87
87
|
// CLEAROTRON_REPORTS_DIR=/srv/trademark-archive-dev the guard passes (it matches the archive as a path
|
|
88
88
|
// PREFIX, and its own test requires that a name merely resembling production's passes). The copy
|
|
@@ -403,7 +403,7 @@ export function lintScenarios(scenarios) {
|
|
|
403
403
|
//
|
|
404
404
|
// Deliberately here rather than at a selection site, because that is what gets the SCOPE right for
|
|
405
405
|
// nothing: `sweepStoreOrDie()` bare (cmdList) refuses on any scenario's finding, and
|
|
406
|
-
// `sweepStoreOrDie(id)` (cmdRun) refuses only on the named scenario's —
|
|
406
|
+
// `sweepStoreOrDie(id)` (cmdRun) refuses only on the named scenario's — the split, already
|
|
407
407
|
// implemented at the two call sites. A round that selects BY tier has to read every tier to choose,
|
|
408
408
|
// so a typo anywhere corrupts the selection rather than one entry; a run that named its scenario is
|
|
409
409
|
// answerable only for that one. Both fall out of where this line sits.
|
|
@@ -886,7 +886,7 @@ function enqueueViaCli(job) {
|
|
|
886
886
|
} finally { rmSync(dir, { recursive: true, force: true }); }
|
|
887
887
|
}
|
|
888
888
|
|
|
889
|
-
// EXPORTED for
|
|
889
|
+
// EXPORTED for the arm: the not-configured branch is the whole subject, and the only honest way to
|
|
890
890
|
// drive it is to call this function in a process with no MCP port in scope — the state a rebuilt box
|
|
891
891
|
// is actually in. Asserting on the source text instead would pass on a file that no longer runs it.
|
|
892
892
|
export async function enqueueViaMcp(job, { clientPrincipal = false, forwarder = null } = {}) {
|
|
@@ -894,7 +894,7 @@ export async function enqueueViaMcp(job, { clientPrincipal = false, forwarder =
|
|
|
894
894
|
// refusing one. A door that is not configured on this deployment never saw the job, so it holds no
|
|
895
895
|
// opinion about it: recording it as a refusal manufactures agreement on the refusal cases (a
|
|
896
896
|
// correctly-refusing door and an absent one produce the same line) and, on the admit cases, fires
|
|
897
|
-
//
|
|
897
|
+
// the "the one that ACCEPTED is the defect" rule at the door that behaved. This is that rule reaching
|
|
898
898
|
// the one transport failure that happens BEFORE any request: not-configured is could-not-ask.
|
|
899
899
|
if (!MCP_URL) return { ok: false, transport: true, status: null,
|
|
900
900
|
out: "no TRADEMARK_MCP_HTTP_PORT in scope — this door is not configured on this deployment, so it was never asked" };
|
|
@@ -1601,7 +1601,7 @@ function queueDrainState({
|
|
|
1601
1601
|
// THREE STATES, NOT TWO, and the third is the reason this is a function rather than a field read.
|
|
1602
1602
|
// A scenario that states nothing must read as CANNOT TELL — never as synthetic, and never as silence.
|
|
1603
1603
|
// Defaulting an absent label to "synthetic" would be a guess presented as a fact, and letting it print
|
|
1604
|
-
// nothing is
|
|
1604
|
+
// nothing is the defect exactly: a benchmark that printed only when the key was present rendered as
|
|
1605
1605
|
// silence, which reads exactly like a benchmark that was met. An unstated label is reported, every time.
|
|
1606
1606
|
export const MARK_PROVENANCE = { LIVE: "live", SYNTHETIC: "synthetic", UNSTATED: "unstated" };
|
|
1607
1607
|
|
package/scripts/env-audit.mjs
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// ── why this exists ──────────────────────────────────────────────────────────────────────────────
|
|
11
11
|
//
|
|
12
12
|
// `docs/architecture/05-config-governance.md` states its own maintenance rule: "adding a var anywhere
|
|
13
|
-
// in the repo means adding its row here".
|
|
13
|
+
// in the repo means adding its row here". That review found that rule has NO enforcement — the
|
|
14
14
|
// placeholder-default guard checks fallbacks, not existence — so it has been prose since it was
|
|
15
15
|
// written, and the surface has grown the whole time.
|
|
16
16
|
//
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
//
|
|
37
37
|
// ── what it deliberately does not do ─────────────────────────────────────────────────────────────
|
|
38
38
|
//
|
|
39
|
-
// It deletes nothing.
|
|
39
|
+
// It deletes nothing. That tier 2 (delete the dead) is explicitly not this, and the issue's own
|
|
40
40
|
// queue note says deleting toggles mid-verification moves the range again. This reports; a person
|
|
41
41
|
// decides.
|
|
42
42
|
|
|
@@ -108,7 +108,7 @@ const CODE_RE = /\.(mjs|js|cjs|ts)$/;
|
|
|
108
108
|
// above describes happening again. Converting the eight numeric getters from
|
|
109
109
|
// `Number(this.envValue("NAME") || d)` to `numericSetting("NAME")` moved the name out of a shape this
|
|
110
110
|
// scanner knew and into one it did not: the audit stopped seeing CLEAROTRON_MAX_CLAIM_AGE_MS and
|
|
111
|
-
// CLEAROTRON_CARD_CONCURRENCY, whose ONLY reads are accessor reads, and
|
|
111
|
+
// CLEAROTRON_CARD_CONCURRENCY, whose ONLY reads are accessor reads, and the product-read arm went red.
|
|
112
112
|
// It went red because that arm names those two variables — which is the whole reason it names them. A
|
|
113
113
|
// conversion narrows this guard silently, so both spellings land in the same commit as the conversion.
|
|
114
114
|
const ACCESSOR_RE = /\b(?:envValue|envOn|envGateOn|numericSetting|resolveNumericSetting)\s*\(\s*["']([A-Z][A-Z0-9_]*)["']|\benvFrom\s*\(\s*[^,()]+,\s*["']([A-Z][A-Z0-9_]*)["']/g;
|
|
@@ -154,7 +154,7 @@ const stripCommentLines = (text) => text.split("\n").filter((l) => !COMMENT_LINE
|
|
|
154
154
|
// — no `env`-prefixed regex can match a read where the name never appears beside an `env` token.
|
|
155
155
|
//
|
|
156
156
|
// THE BINDING IS SCREAMING_CASE AND THE LITERAL IS ENV-SHAPED, both required. `const label = "x"` is
|
|
157
|
-
// not an env binding, and neither is `const PREFIX = "
|
|
157
|
+
// not an env binding, and neither is `const PREFIX = "clearotron-"`. The pair is what makes this a
|
|
158
158
|
// declaration of an environment name rather than a string that happens to be uppercase.
|
|
159
159
|
const BINDING_RE = /(?<![.\w$])const\s+([A-Z][A-Z0-9_]*)\s*=\s*["']([A-Z][A-Z0-9_]{2,})["']/g;
|
|
160
160
|
|
|
@@ -230,7 +230,7 @@ export const SYSTEM_OWNED = new Set([
|
|
|
230
230
|
// — both arrived with the injected-`env` widening above, and both are set by the service
|
|
231
231
|
// manager rather than by any deployment of this product: systemd sets INVOCATION_ID (which is
|
|
232
232
|
// exactly what shared/env-local.mjs reads it to detect), and the session bus sets
|
|
233
|
-
// DBUS_SESSION_BUS_ADDRESS.
|
|
233
|
+
// DBUS_SESSION_BUS_ADDRESS. That body asserts the audit already excluded these two. It did not —
|
|
234
234
|
// they were absent from this list, and they only stayed out of the register because the scanner
|
|
235
235
|
// could not see the reads at all.
|
|
236
236
|
"INVOCATION_ID", "DBUS_SESSION_BUS_ADDRESS",
|
|
@@ -520,7 +520,7 @@ export function auditEnv(root = ROOT) {
|
|
|
520
520
|
// 1 CLEAROTRON_SEND_TOOL_PREFIX — genuinely dead, and this direction does not
|
|
521
521
|
// catch it either: its one surviving mention is a governance-doc line, and
|
|
522
522
|
// a mention is enough to spare a row. Under-firing is the cost of the
|
|
523
|
-
// trade, taken deliberately. It is
|
|
523
|
+
// trade, taken deliberately. It is the prose-sweep class.
|
|
524
524
|
//
|
|
525
525
|
// So SIX of ten deletions would have been wrong, two of them credential rows.
|
|
526
526
|
// Evidence used instead: the bare NAME, on a name boundary, anywhere in the
|
|
@@ -639,7 +639,7 @@ export function orphanRows(rows, mentioned) {
|
|
|
639
639
|
}
|
|
640
640
|
|
|
641
641
|
// The catalogues describe the contract; they are not readers of it. Include them and every row is its
|
|
642
|
-
// own evidence, which is the circularity
|
|
642
|
+
// own evidence, which is the circularity the "a check cannot use its own source as evidence" names.
|
|
643
643
|
// — `docs/architecture/env-set-in-production.txt` joins them, and the reason is the rule this set
|
|
644
644
|
// exists for. It is a LIST OF NAMES, committed as step 1's production evidence because a reviewer cannot
|
|
645
645
|
// make that read. Left in the corpus it becomes an alibi for every catalogue row at once: each row
|