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
|
@@ -81,7 +81,7 @@ export const DISPOSITIONS = ["adversarial", "coexistence-partner", "distinguishe
|
|
|
81
81
|
// FLOOR 6 and was written as this MOVING constant, which was the same number on the day it was written.
|
|
82
82
|
// Bumping here alone would have made every archived v6 run — v6 shipped 2026-08-03, so real delivered
|
|
83
83
|
// matters carry it — republish through pool-admin doRepublish with the ground-grouped reasoned
|
|
84
|
-
// negatives silently replaced by the pre- region-grouped section. Not a crash: a substance change to
|
|
84
|
+
// negatives silently replaced by the pre-change region-grouped section. Not a crash: a substance change to
|
|
85
85
|
// a report already sent to a client, which is what the render freeze exists to catch. MEASURED at the
|
|
86
86
|
// break: 34,722 → 36,466 body bytes on a three-negative v6 fixture. That line now reads `>= 6`.
|
|
87
87
|
//
|
|
@@ -168,8 +168,8 @@ export const ACTION_KINDS = [...CONDITION_KINDS, ...ADVISORY_KINDS];
|
|
|
168
168
|
export const CLIENT_TIER_BY_COMPOSITE = { 1: "LOW", 2: "MANAGEABLE", 3: "MEDIUM", 4: "HIGH", 5: "VERY HIGH" };
|
|
169
169
|
|
|
170
170
|
// ── doc 50 — band mode (schema_version 4): the framework in force rates the matter ────────────────────
|
|
171
|
-
// A v4 finding carries `band` — one of the frozen framework manifest's ordered band words (
|
|
172
|
-
// "Medium", the Generic default says "Moderate",
|
|
171
|
+
// A v4 finding carries `band` — one of the frozen framework manifest's ordered band words (one ladder
|
|
172
|
+
// says "Medium", the Generic default says "Moderate", another has a "Low") — and NO composite/level/
|
|
173
173
|
// dispute_type (one rating authority; the retired scale is FORBIDDEN, not just optional). Presentation
|
|
174
174
|
// joins on the band's TONE (a closed enum in the manifest) so 4-band and 5-band ladders both land on the
|
|
175
175
|
// existing badge/gauge ramps without any per-framework code.
|
|
@@ -539,7 +539,7 @@ export function sentenceCaseLead(s) {
|
|
|
539
539
|
return str.slice(0, m[1].length) + m[2].toUpperCase() + str.slice(m[1].length + m[2].length);
|
|
540
540
|
}
|
|
541
541
|
|
|
542
|
-
// ──
|
|
542
|
+
// ── THE ONE BOUND AN ASK STILL HAS, AND THE ONLY ONE ─────────────────────────────────────────
|
|
543
543
|
// The verdict statement renders in index cells, run status, the report hero, the email headline and the
|
|
544
544
|
// xlsx Verdict row — one row each, so an unbounded first condition would swallow the row. This is the
|
|
545
545
|
// last surface in the product that shortens an ask, and it is the honest one: `clipClause` marks the cut
|
|
@@ -813,7 +813,7 @@ const onlyKeys = (obj, allowed, tokenFor) => {
|
|
|
813
813
|
* | finding_bears_on_invalid:<ordinal> | finding_disposition_invalid:<v> | finding_impact_invalid:<ordinal>
|
|
814
814
|
* | finding_deadline_invalid:<ordinal> | finding_deadline_key_unknown:<key> | finding_deadline_date_missing:<ordinal>
|
|
815
815
|
* | findings_context_note_invalid | findings_context_note_key_unknown:<key> | findings_context_note_type_invalid:<v>
|
|
816
|
-
* | findings_net_chained:<ordinal> (
|
|
816
|
+
* | findings_net_chained:<ordinal> (v7 only — PLURAL on purpose; see validateNetShape)
|
|
817
817
|
* (the composite>=3 NON-EMPTY-source gate for use_check/own_rights is raised by the caller in verify.mjs —
|
|
818
818
|
* this parser only enforces SHAPE: object / key-allowlist / source-is-a-string. Both fields are OPTIONAL.)
|
|
819
819
|
*
|
|
@@ -1210,7 +1210,7 @@ export function parseFindingsJsonLenient(raw, opts = {}) {
|
|
|
1210
1210
|
// A1: a withdrawn finding is a non-mergeable singleton — folding a LIVE filing into a
|
|
1211
1211
|
// withdrawn base (or vice versa) would either resurrect a killed conflict or silently kill a live
|
|
1212
1212
|
// one. The `~withdrawn~` suffix keeps it in its own group without touching live-group keys.
|
|
1213
|
-
// ── A LATIN NORMALISER STANDING WHERE A COMPARISON SHOULD BE (
|
|
1213
|
+
// ── A LATIN NORMALISER STANDING WHERE A COMPARISON SHOULD BE (the class, third site) ─────────────
|
|
1214
1214
|
//
|
|
1215
1215
|
// `[^a-z0-9]` folds a CJK, Cyrillic or Arabic value to the EMPTY STRING, and this key is built from two
|
|
1216
1216
|
// of them. Measured on origin/main before the fix:
|
|
@@ -1642,7 +1642,7 @@ function validateBand(f, ord, mode) {
|
|
|
1642
1642
|
// · FACTS AND ASSESSMENT, NEVER AN ACTION PRESCRIPTION. The reader is a lawyer who layers their own
|
|
1643
1643
|
// advice on top. The house prose contract already rules prescriptions out everywhere; on this field
|
|
1644
1644
|
// it is checked, because it is the sentence most likely to drift into advice.
|
|
1645
|
-
// · A CONCLUSION, NEVER A CHAIN (
|
|
1645
|
+
// · A CONCLUSION, NEVER A CHAIN (2026-08-06). See validateNetShape below for the ruling, the two
|
|
1646
1646
|
// mechanical markers it refuses, and why it is the one net rule that had to be version-gated.
|
|
1647
1647
|
// · STILL NO LENGTH MAXIMUM, and now for a second reason. It never came from the validator (a model
|
|
1648
1648
|
// told to be brief writes a shorter sentence and drops a fact), and build 1.3 deletes the renderer's
|
|
@@ -1670,7 +1670,7 @@ const PRESCRIPTION_RE = /\b(we recommend|we advise|we suggest|you should|should
|
|
|
1670
1670
|
// · NOT A QUALITY JUDGMENT. "Does this read as a conclusion" is the lawyer's call and the reviewer
|
|
1671
1671
|
// stage's; code cannot make it without re-judging the finding, which is the rules-engine failure
|
|
1672
1672
|
// this codebase keeps refusing.
|
|
1673
|
-
// · NOT THE WORD "so".
|
|
1673
|
+
// · NOT THE WORD "so". That prose names "a semicolon, an arrow, or the word so", but a word match is
|
|
1674
1674
|
// not mechanical: it fires on "also", "so-called", "so long as the owner". Punctuation cannot be
|
|
1675
1675
|
// mistaken for anything else, and the prose rule survives in synthesis-rules.md where a reader
|
|
1676
1676
|
// applies judgment to it.
|
|
@@ -1910,7 +1910,7 @@ function recordUrlOrigin(value) {
|
|
|
1910
1910
|
* `"not a url"` and `mailto:…` at this site — a documented decision that the host gate does not judge
|
|
1911
1911
|
* them. A blanket not-a-URL rule refutes it silently. So this refuses exactly the shapes names:
|
|
1912
1912
|
* a fragment (addresses THIS document, never a record), a bare path (names no host), and whitespace
|
|
1913
|
-
* (a value that is only shaped like one). Anything else is still
|
|
1913
|
+
* (a value that is only shaped like one). Anything else is still the to rule on.
|
|
1914
1914
|
*
|
|
1915
1915
|
* That leaves `mailto:…` and free text composing a live-but-wrong href rather than a dead anchor. It is
|
|
1916
1916
|
* a real gap and it is NOT this issue's class; recorded on rather than widened into here.
|
|
@@ -2275,7 +2275,7 @@ export function validateKnockoutFinding(f, idx, seenOrdinals = new Set(), opts =
|
|
|
2275
2275
|
throw new Error(`knockout_finding_band_invalid:${kshort(f.band)} (this run's framework "${manifest.framework_key}" rates in EXACTLY these words: ${manifest.bands.map((b) => b.label).join(" / ")})`);
|
|
2276
2276
|
f.band = canonical;
|
|
2277
2277
|
}
|
|
2278
|
-
// THE CONCLUSION SENTENCE —
|
|
2278
|
+
// THE CONCLUSION SENTENCE — the contract, unchanged, on the other product. One rule, one gate: a
|
|
2279
2279
|
// knockout card and a clearance card are read by the same lawyer in the same week.
|
|
2280
2280
|
if (typeof f.net !== "string" || !f.net.trim())
|
|
2281
2281
|
throw new Error(`knockout_finding_net_missing:${ord} (every knockout finding carries the one conclusion sentence the card leads with — see synthesis-rules.md "The finding sentence")`);
|
|
@@ -2441,6 +2441,56 @@ export function knockoutFindingViews(mark, { manifest = null } = {}) {
|
|
|
2441
2441
|
* Derived through knockoutFindingViews rather than re-deriving that fallback here — one projection
|
|
2442
2442
|
* decides what a finding's number is, and this cell cannot disagree with the sheet it points into.
|
|
2443
2443
|
*/
|
|
2444
|
+
// ── THE REVIEWER'S NOTES: WHAT EACH ONE IS ABOUT (tracker issues 331 A.4, 333 rule 5) ───────────────
|
|
2445
|
+
//
|
|
2446
|
+
// The knockout page prints a note about the REQUEST at the top, above the conflicts, and a note about
|
|
2447
|
+
// the NAME under that name's cards. A note saying the screen may have been scoped to the wrong market
|
|
2448
|
+
// is the most consequential line on the page and it used to sit under roughly 1,900 words.
|
|
2449
|
+
//
|
|
2450
|
+
// THE READER LIVES HERE BECAUSE TWO MODULES NEED THE SAME ANSWER. The renderer sorts the notes; the
|
|
2451
|
+
// predelivery lint warns a writer whose note will sort the way they did not intend. Two copies of this
|
|
2452
|
+
// regex would drift, and the drift would be silent — the page would file a note one way while the
|
|
2453
|
+
// reviewer told the writer it went the other.
|
|
2454
|
+
//
|
|
2455
|
+
// IT SORTS ON WHAT THE NOTE TALKS ABOUT, and the doctrine is written to match: a note about the request
|
|
2456
|
+
// NAMES the request. The word set spans both vocabularies deliberately — "dispatch" and "instructed"
|
|
2457
|
+
// are what runs written before tracker issue 333 say, "the request" and "was asked" are what runs
|
|
2458
|
+
// written after it say — so one reader serves the archive and the new doctrine at once.
|
|
2459
|
+
export const REQUEST_NOTE_WORDS = /\b(?:dispatch|the request|the requester|instructed|was asked)\b/i;
|
|
2460
|
+
|
|
2461
|
+
// Subjects that belong to the ASKING rather than to the name. A note on one of these that never names
|
|
2462
|
+
// the request will be filed under the name, which is why the lint flags it rather than the page
|
|
2463
|
+
// guessing: the fix is one clause in the note, and only its writer can add it.
|
|
2464
|
+
export const REQUEST_SUBJECT_WORDS =
|
|
2465
|
+
/\b(?:customer industry|client(?:'s)? (?:own )?(?:prior|earlier) use|prior use|intended goods|the goods we|wrong market|described as an? )/i;
|
|
2466
|
+
|
|
2467
|
+
/** One note, in either shape, as { text, about }. `about` is null when nothing has classified it. */
|
|
2468
|
+
export function knockoutNoteView(n) {
|
|
2469
|
+
if (n && typeof n === "object" && !Array.isArray(n)) {
|
|
2470
|
+
const about = String(n.about ?? "").trim().toLowerCase();
|
|
2471
|
+
return { text: String(n.text ?? n.note ?? "").trim(), about: about === "request" || about === "name" ? about : null };
|
|
2472
|
+
}
|
|
2473
|
+
return { text: String(n ?? "").trim(), about: null };
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
/**
|
|
2477
|
+
* A mark's notes, split into the two places the page prints them.
|
|
2478
|
+
*
|
|
2479
|
+
* The rater's own `about` wins outright where one is given; only an unclassified note meets the word
|
|
2480
|
+
* reader. That precedence is the whole design: it means a run written under a doctrine that no longer
|
|
2481
|
+
* uses these words is answered without them.
|
|
2482
|
+
*/
|
|
2483
|
+
export function splitKnockoutNotes(mark) {
|
|
2484
|
+
const all = (Array.isArray(mark?.purpleNotes) ? mark.purpleNotes : []).map(knockoutNoteView).filter((v) => v.text);
|
|
2485
|
+
const request = [];
|
|
2486
|
+
const name = [];
|
|
2487
|
+
for (const v of all) {
|
|
2488
|
+
const isRequest = v.about ? v.about === "request" : REQUEST_NOTE_WORDS.test(v.text);
|
|
2489
|
+
(isRequest ? request : name).push(v.text);
|
|
2490
|
+
}
|
|
2491
|
+
return { request, name, all: all.map((v) => v.text) };
|
|
2492
|
+
}
|
|
2493
|
+
|
|
2444
2494
|
export function knockoutFindingRange(mark) {
|
|
2445
2495
|
const ords = knockoutFindingViews(mark).map((v) => v.ordinal).sort((a, b) => a - b);
|
|
2446
2496
|
const markName = String(mark?.name ?? "").trim();
|
package/driver/flag-snapshot.mjs
CHANGED
|
@@ -318,6 +318,26 @@ export function postureDisagreement(snapshot, live) {
|
|
|
318
318
|
"silent-output-change — a different engine answers differently and nobody is told");
|
|
319
319
|
differ("billing mode", snapshot.engine?.billing?.mode ?? null, live.engine?.billing?.mode ?? null,
|
|
320
320
|
"what a run costs, and who it is billed to");
|
|
321
|
+
// THE FIELD THAT DECIDES WHETHER A SEARCH CAN START, and the one this comparison could not see.
|
|
322
|
+
//
|
|
323
|
+
// The configuration page reads the LIVE posture and the New clearance screen reads this capture, so a
|
|
324
|
+
// box where they differ on this one boolean draws a green Engine row on one screen while the other
|
|
325
|
+
// replaces its start button with "no search engine is attached". That is not a hypothetical: it is
|
|
326
|
+
// what an outside user photographed, and he gave up on the product because the greener screen looked
|
|
327
|
+
// more authoritative. Both readings were correct about their own question and nothing compared them.
|
|
328
|
+
//
|
|
329
|
+
// Worse than silence, before this line: `disagrees` came back `[]` — which this page renders as "the
|
|
330
|
+
// last run ran under this same configuration". The one field they actually disagreed on was not in the
|
|
331
|
+
// comparison, so the page positively affirmed agreement while the two surfaces contradicted each other.
|
|
332
|
+
// STRINGS, NOT THE BOOLEANS THEMSELVES. Every other row here compares names and modes, so the browser
|
|
333
|
+
// contract parses `capture` and `live` with `asString` — handed `false` it yields null, and the row
|
|
334
|
+
// would reach the page with its two values blank and only the effect sentence left. The words are also
|
|
335
|
+
// the better answer for a reader: "found" against "not found" says it without a legend.
|
|
336
|
+
const found = (v) => (v === true ? "found" : v === false ? "not found" : null);
|
|
337
|
+
differ("engine program", found(snapshot.engine?.binaryPresent), found(live.engine?.binaryPresent),
|
|
338
|
+
"whether a NEW search can start — the engine that last ran and this deployment do not agree that the "
|
|
339
|
+
+ "engine program can be found, so one screen offers a search the other refuses. Restart the engine "
|
|
340
|
+
+ "service so it re-reads its PATH, or install the CLI where the service can see it");
|
|
321
341
|
|
|
322
342
|
// Flags: compare only names BOTH sides declare, for the same reason `differ` skips absent values —
|
|
323
343
|
// a build that adds a flag must not read as every older capture disagreeing with it.
|
package/driver/floor-duty.mjs
CHANGED
|
@@ -93,7 +93,7 @@ export const FLOOR_DUTY_STAGE = "placement-inquiry";
|
|
|
93
93
|
* the chance to place the floor or name it with a ground.
|
|
94
94
|
*
|
|
95
95
|
* SAFE TO RE-RUN, and that is measured rather than hoped: the placement form is UNIONED into an
|
|
96
|
-
* accumulator before it is judged and `placements.json` is rendered from the accumulator (
|
|
96
|
+
* accumulator before it is judged and `placements.json` is rendered from the accumulator (after an
|
|
97
97
|
* incident where a killed attempt's finished tiers were thrown away). A second pass merges; it does not
|
|
98
98
|
* start from nothing.
|
|
99
99
|
*
|
|
@@ -483,7 +483,7 @@ export function floorSeeds(manifestMd, { model = null, mark = "" } = {}) {
|
|
|
483
483
|
//
|
|
484
484
|
// It is NOT fixed by romanising. variantCompletenessGaps' per-script floor validates and never
|
|
485
485
|
// generates, on the stated principle that the moment code mints a search term, judgment has moved into
|
|
486
|
-
// the funnel — and that was
|
|
486
|
+
// the funnel — and that was its own reason for excluding non-rule-based transliteration. A
|
|
487
487
|
// romanisation is a minted term. So the deterministic floor genuinely does not exist for this mark, and
|
|
488
488
|
// the honest move is to say which mark, and why, where a reader will see it.
|
|
489
489
|
if (!seeds.length) {
|
package/driver/framework.mjs
CHANGED
|
@@ -97,12 +97,12 @@ export function parseFrameworkManifest(raw) {
|
|
|
97
97
|
return m;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
/** Load + parse the manifest sitting beside a framework .md. rootDir is the
|
|
100
|
+
/** Load + parse the manifest sitting beside a framework .md. rootDir is the clearotron-driver dir (the dir
|
|
101
101
|
* skills/ paths are relative to — the same base reads() uses). */
|
|
102
102
|
// `rootDir` may be a string (legacy: join against it) OR a resolver function taking the manifest's
|
|
103
103
|
// skills-relative path and returning an absolute one — the layered overlay-over-base lookup
|
|
104
104
|
// (driver.config.resolveSkillPath). The driver MUST resolve a framework exactly as the agent does, or the
|
|
105
|
-
// two read different files: that divergence is what killed
|
|
105
|
+
// two read different files: that divergence is what killed a test account's first run (framework_manifest_missing
|
|
106
106
|
// against the bundled tree while the agent was pointed at the config store).
|
|
107
107
|
export function loadFrameworkManifest(rootDir, fwPath) {
|
|
108
108
|
const rel = manifestPathFor(fwPath);
|
package/driver/gateway.mjs
CHANGED
|
@@ -13,7 +13,8 @@ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, statSync, wri
|
|
|
13
13
|
import { join, dirname, basename } from "node:path";
|
|
14
14
|
import { driverDir } from "../shared/driver-dir.mjs"; //
|
|
15
15
|
import { tmpdir } from "node:os";
|
|
16
|
-
import { config, resolveModel, modelFamily, envOn, envGateOn } from "./driver.config.mjs";
|
|
16
|
+
import { config, resolveModel, modelFamily, modelSnapshotKind, envOn, envGateOn, preflightEngineBinary } from "./driver.config.mjs";
|
|
17
|
+
import { probeCliVersion } from "./engine/cli-version.mjs";
|
|
17
18
|
import { stageLog, runLog, note, outputMeta } from "./log.mjs";
|
|
18
19
|
// — the closed disposition set has ONE author; this file dictates it and must not retype it.
|
|
19
20
|
import { DISPOSITIONS, POSITION_REQUIRED_DISPOSITIONS } from "./findings-model.mjs";
|
|
@@ -42,7 +43,7 @@ import { FINDINGS_FILE as REGISTER_FINDINGS_FILE, refusalsFor as registerDigestR
|
|
|
42
43
|
// file edit, and this table is what the warm patch reads to know that. It grows by one row per conversion,
|
|
43
44
|
// so its membership IS the conversion record — and a stage absent from it still gets the write-mode tails,
|
|
44
45
|
// correctly, because its seat still holds Write.
|
|
45
|
-
// EXPORTED for
|
|
46
|
+
// EXPORTED for the agreement guard, which derives each recording stage's artifact from this table
|
|
46
47
|
// rather than from a second hand-written list: stage → its granted record tool → the row whose `tool`
|
|
47
48
|
// matches → the basename. A conversion that adds the grant and forgets the row leaves the guard unable to
|
|
48
49
|
// name an artifact for that stage, and it fails there rather than quietly checking one direction less.
|
|
@@ -577,7 +578,7 @@ export function selectEngine() {
|
|
|
577
578
|
// move-blindness this repo has counted seven instances of.
|
|
578
579
|
//
|
|
579
580
|
// What died here with the form path (2026-08-17 owner ruling, delete-not-gate): reading the seat's file
|
|
580
|
-
// as a SUBMISSION, preserving it, refereeing whose bytes it held (
|
|
581
|
+
// as a SUBMISSION, preserving it, refereeing whose bytes it held (the isDriverOwnBytes machinery) and
|
|
581
582
|
// rewriting the seat-facing copy. The seat writes no file, so there is no submission to read, no bytes
|
|
582
583
|
// to referee, and no seat-facing copy to keep in step. The capture duty moved to the receiver
|
|
583
584
|
// (disposition-tool.mjs captureCall — the payload as handed to the process, indexed before the work).
|
|
@@ -618,14 +619,14 @@ export function syncDispositionForm(files) {
|
|
|
618
619
|
let spec = null;
|
|
619
620
|
try { spec = JSON.parse(readFileSync(specPath, "utf8")); }
|
|
620
621
|
catch {
|
|
621
|
-
// No spec sidecar ⇒ a pre- archived resume: nothing dictated, nothing owed, nothing to count.
|
|
622
|
+
// No spec sidecar ⇒ a pre-change archived resume: nothing dictated, nothing owed, nothing to count.
|
|
622
623
|
// A spec that EXISTS and does not parse is a different fact: the stage owes a sweep whose state
|
|
623
624
|
// cannot be counted, and reading that as "owes nothing" would resume a session the veto exists to
|
|
624
625
|
// refuse. The validator fails such a run on grid_spec_unreadable in its own lane.
|
|
625
626
|
return existsSync(specPath) ? { countable: false } : null;
|
|
626
627
|
}
|
|
627
628
|
const formPath = spec?.connotation?.dispositions_path;
|
|
628
|
-
// No dictated path ⇒ a pre- spec (an archived run being resumed). Nothing to count, and the
|
|
629
|
+
// No dictated path ⇒ a pre-change spec (an archived run being resumed). Nothing to count, and the
|
|
629
630
|
// gate has nothing to judge either — the two agree by construction.
|
|
630
631
|
if (!formPath || spec?.connotation?.disposition_required !== true) return null;
|
|
631
632
|
let recorded = null;
|
|
@@ -1142,6 +1143,25 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1142
1143
|
const modelRequested = engine.resolveModelId ? engine.resolveModelId(model) : resolveModel(model);
|
|
1143
1144
|
const modelActual = (typeof turn.modelWire === "string" && turn.modelWire) ? turn.modelWire : null;
|
|
1144
1145
|
const modelBasis = modelActual ? "actual" : "unknown";
|
|
1146
|
+
// WHETHER THE OBSERVED ID NAMES A FIXED BUILD. `modelBasis: "actual"` says the provider answered,
|
|
1147
|
+
// not that the answer is pinned: two of the three tiers come back as undated aliases the provider
|
|
1148
|
+
// may repoint, and recorded beside a dated one they read identically. null when there is nothing to
|
|
1149
|
+
// judge, never collapsed into "alias".
|
|
1150
|
+
const modelSnapshot = modelSnapshotKind(modelActual);
|
|
1151
|
+
// WHICH BUILD OF THE TOOL SERVED THIS TURN. `modelSnapshot` above answers "did the model move";
|
|
1152
|
+
// this answers "did the tool move", and the two have one symptom — a run whose judgment differs from
|
|
1153
|
+
// last week's. Captured at dispatch rather than read back afterwards, because the binary a reader
|
|
1154
|
+
// could probe later is not necessarily the one that ran.
|
|
1155
|
+
//
|
|
1156
|
+
// Written as an object with its own `probe` field, so an unreadable version is a RECORDED state
|
|
1157
|
+
// rather than a missing one. Omitting it on failure would collapse "asked and could not say" into
|
|
1158
|
+
// "written before anybody asked", which is the distinction the field exists for. One spawn per
|
|
1159
|
+
// binary per process; a probe never throws, because taking down a dispatch to record a version
|
|
1160
|
+
// would be a worse defect than the gap it closes.
|
|
1161
|
+
const cli = (() => {
|
|
1162
|
+
try { return probeCliVersion(preflightEngineBinary(process.env)?.resolved ?? null); }
|
|
1163
|
+
catch (e) { return { version: null, probe: "unreadable", why: String(e?.message ?? e).slice(0, 160) }; }
|
|
1164
|
+
})();
|
|
1145
1165
|
if (modelActual) lastModelWire = modelActual; // — never overwritten with null
|
|
1146
1166
|
// The comparison is by FAMILY (driver.config modelFamily), because `--model haiku` legitimately comes
|
|
1147
1167
|
// back as `claude-haiku-4-5-20251001`. THREE-VALUED: null when either side names no family this
|
|
@@ -1337,7 +1357,7 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1337
1357
|
// turn did not report completion, and completeness of its write is exactly what is unknown.
|
|
1338
1358
|
// Still never applies to a rate-limit rejection either (0 tokens, nothing written).
|
|
1339
1359
|
const killClass = isTaintRow({ fail, code, killed, signals: turn.signals });
|
|
1340
|
-
// ONE artifact judgement, shared by both rescues below (
|
|
1360
|
+
// ONE artifact judgement, shared by both rescues below (the rule: never a second, drifting copy of
|
|
1341
1361
|
// the contract). Present + written by THIS attempt (the per-attempt snapshot — an inherited file and
|
|
1342
1362
|
// equally an earlier attempt's file never rescue a failed turn) + passes the stage's own validator.
|
|
1343
1363
|
const attemptWroteTruth = () => {
|
|
@@ -1477,7 +1497,7 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1477
1497
|
// and `rate_limited` drive retry policies this must not override. `modelMismatch` is journalled on
|
|
1478
1498
|
// the row either way, so the mismatch is never lost — only the classification defers.
|
|
1479
1499
|
//
|
|
1480
|
-
// Default-ON gate through `envGateOn` (
|
|
1500
|
+
// Default-ON gate through `envGateOn` (the rule): `CLEAROTRON_MODEL_WIRE_CHECK=0` disarms it without
|
|
1481
1501
|
// a deploy if a provider ever starts reporting an id this build's family regex misreads. Disarming
|
|
1482
1502
|
// silences the REFUSAL, never the record — `modelActual`/`modelMismatch` keep landing on every row.
|
|
1483
1503
|
if (modelMismatch === true && !fail && envGateOn("CLEAROTRON_MODEL_WIRE_CHECK")) {
|
|
@@ -1545,7 +1565,7 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1545
1565
|
// how a stale build-stage note came to describe a live field as dead. Measured on preserved runs
|
|
1546
1566
|
// whose engine commit is byte-identical to this file: the R5 register-unit attempt row of 08-12
|
|
1547
1567
|
// carries {input:8349, output:18374, cacheRead:1805815, cacheWrite:96608, total:1929146}. Every
|
|
1548
|
-
// figure in
|
|
1568
|
+
// figure in its own table is a verbatim read of these rows — the issue was minted BY reading
|
|
1549
1569
|
// the field this comment called null. The shape is `mapUsage`'s canonical
|
|
1550
1570
|
// {input, output, cacheRead, cacheWrite, total}, written by both engines
|
|
1551
1571
|
// (anthropic-agent.mjs mapUsage, openai-agent.mjs from turn.completed).
|
|
@@ -1570,7 +1590,8 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1570
1590
|
// modelMismatch — true/false when both sides name a family, null when either does not.
|
|
1571
1591
|
// Written even on the rows where they are null, so "this engine cannot report" stays visibly
|
|
1572
1592
|
// different from "this record predates the gauge".
|
|
1573
|
-
modelActual, modelBasis, modelMismatch,
|
|
1593
|
+
modelActual, modelBasis, modelSnapshot, modelMismatch,
|
|
1594
|
+
cliVersion: cli.version, cliVersionProbe: cli.probe, ...(cli.why ? { cliVersionWhy: cli.why } : {}),
|
|
1574
1595
|
// W3 billing telemetry: which engine ran + the RESOLVED billing mode (subscription vs api-key). This
|
|
1575
1596
|
// records INTENT (the mode the engine was configured to bill under), not independent billing evidence
|
|
1576
1597
|
// — the actual proof is the provider console (claude's stream also reports apiKeySource; codex does
|
|
@@ -1696,7 +1717,7 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1696
1717
|
stdoutTail: (fail && !json) ? streamDigest(turn.stdout) || undefined : undefined,
|
|
1697
1718
|
});
|
|
1698
1719
|
// AD-4 — `attempt` lands on run.jsonl too (ADDITIVE: _driver/<stage>.jsonl keeps the full per-attempt
|
|
1699
|
-
// detail and
|
|
1720
|
+
// detail and the harness keeps reading it there; run.jsonl gets the lean per-attempt spine it never
|
|
1700
1721
|
// had — its readers previously saw one "stage" event with attempts:N and no causes, and the knockout
|
|
1701
1722
|
// lane logs no stage events at all, so run.jsonl alone could not distinguish "no retries happened"
|
|
1702
1723
|
// from "retries not recorded here"). Best-effort like every telemetry write.
|
|
@@ -1705,7 +1726,8 @@ async function runStageLadder(name, opts, stageCodexHome = null) {
|
|
|
1705
1726
|
event: "attempt", stage: name, attempt, of: maxRetries + 1, ok: !fail, fail: fail ?? null,
|
|
1706
1727
|
//: the spine carries the same pair as the per-stage log, or the two disagree about what
|
|
1707
1728
|
// ran. `model` stays the requested resolution (its existing readers); `modelActual` is the wire.
|
|
1708
|
-
model: modelRequested, modelActual, modelBasis, modelMismatch,
|
|
1729
|
+
model: modelRequested, modelActual, modelBasis, modelSnapshot, modelMismatch,
|
|
1730
|
+
cliVersion: cli.version, cliVersionProbe: cli.probe, ...(cli.why ? { cliVersionWhy: cli.why } : {}),
|
|
1709
1731
|
wrote, warm: warm || undefined, warmEscalated: attempt === warmEscalatedAt || undefined,
|
|
1710
1732
|
rescued: rescued ?? undefined, killed: killed || undefined,
|
|
1711
1733
|
quiescentMs: Number.isFinite(quiescentMs) ? Math.round(quiescentMs) : undefined, // — see the per-stage row
|
|
@@ -1999,7 +2021,7 @@ export function correctiveMessage(baseMessage, attempt, lastFail, expectFile, {
|
|
|
1999
2021
|
if (!maxTok && !/^(invalid_file|missing_file)/.test(inner)) return baseMessage;
|
|
2000
2022
|
const files = (Array.isArray(expectFile) ? expectFile : [expectFile]).filter(Boolean);
|
|
2001
2023
|
const names = files.map(rel).join(", ");
|
|
2002
|
-
// DIRECTION (b) — THE COLD CORRECTIVE IS A REPAIR SURFACE, AND
|
|
2024
|
+
// DIRECTION (b) — THE COLD CORRECTIVE IS A REPAIR SURFACE, AND the SWEEP STOPPED AT THE WARM ONE.
|
|
2003
2025
|
//
|
|
2004
2026
|
// `warmPatchMessage` consults TOOL_WRITTEN_ARTIFACTS and turns a repair into a CALL. This composer did not,
|
|
2005
2027
|
// so a converted seat that hit the output ceiling was told to "CALL THE WRITE TOOL" for an artifact whose
|
|
@@ -2373,7 +2395,7 @@ export function correctionHint(lastFail, { gridLedgerName = "common-law-grid.jso
|
|
|
2373
2395
|
// — THE REPAIR RIDES THE TYPED TOOL, because the seat no longer holds Write or Edit. This used to
|
|
2374
2396
|
// end "Correct it in place — the file is the stage's only output", which after the conversion orders an
|
|
2375
2397
|
// act the grant denies: a failure on obedience, mid-round, on the first repair rung that fires. Same
|
|
2376
|
-
// shape as
|
|
2398
|
+
// shape as the ten anchor sites, caught before it shipped rather than after. The one-change
|
|
2377
2399
|
// invariant covers a dictation AND the ladder that corrects it.
|
|
2378
2400
|
hint = `the model is a set of VALUES you hand to the \`record_blind_frame\` tool: dominant_element, ` +
|
|
2379
2401
|
`variants[] (each {value, direction (add|drop|phonetic|homophone|neighbour|composite), rationale}), ` +
|
|
@@ -2830,7 +2852,7 @@ export function correctionHint(lastFail, { gridLedgerName = "common-law-grid.jso
|
|
|
2830
2852
|
return hint;
|
|
2831
2853
|
}
|
|
2832
2854
|
|
|
2833
|
-
// ──
|
|
2855
|
+
// ── the DEFERRED-SLICE BLOCK IS GONE ──────────────────────────────────────────────────────
|
|
2834
2856
|
//
|
|
2835
2857
|
// `deferredSlicesRequiredRows` composed a prose block listing every deferred qid and told the stage each
|
|
2836
2858
|
// one "must appear VERBATIM in a Coverage-ledger row". Its own doc block recorded why it had to ship
|
|
@@ -2945,7 +2967,7 @@ const MAX_FORM_REPAIRS = 2;
|
|
|
2945
2967
|
// wrote the quote. R6's four byte-identical attempts were not evidence that warm cannot fix this; they
|
|
2946
2968
|
// were evidence that the seat was told to fix something else. The token now names the state and the arm
|
|
2947
2969
|
// names the remedy, so there is something to change. A warm turn that STILL returns byte-identical output
|
|
2948
|
-
// is
|
|
2970
|
+
// is the subject, not this one, and is handled where byte-identical output is detected.
|
|
2949
2971
|
// connotation_* (the family, via CONNOTATION_FORM_TOKEN_SRC; 2026-08-01 ruling, carried through B's
|
|
2950
2972
|
// typed transport): WHY THESE ARE SAFE TO WARM. Every member is emitted only over an obligation set
|
|
2951
2973
|
// built from `recorded.filter(e => e.results.length)` — a violation is therefore PROOF the meaning sweep
|
|
@@ -3022,12 +3044,12 @@ const WARM_ELIGIBLE_RE = new RegExp(`^(missing_file|invalid_file:[^:]*:(use_chec
|
|
|
3022
3044
|
// instead of a resume, on every timeout, as a side effect of an attribution fix. A rename must not
|
|
3023
3045
|
// change what a failure costs.
|
|
3024
3046
|
//
|
|
3025
|
-
// The issue notes that
|
|
3047
|
+
// The issue notes that the argument applies: "the retry ladder cannot help a deterministic tool
|
|
3026
3048
|
// timeout — this failure class is an argument for the same disclosed-deferral treatment when the ladder
|
|
3027
3049
|
// is provably futile." That is a real question and it is NOT settled here. Two reasons to leave it:
|
|
3028
3050
|
// this issue's OTHER half raised the bridge cap, so a retry is no longer provably futile — R5's four
|
|
3029
3051
|
// attempts all died at a 300s cap that no longer applies; and turning a failure class into a disclosed
|
|
3030
|
-
// deferral is a doctrine change, which is
|
|
3052
|
+
// deferral is a doctrine change, which is the to make and not an attribution fix's.
|
|
3031
3053
|
|
|
3032
3054
|
// — a rejected draft may be CARRIED across a recovery park only when its repair is a PATCH, not a
|
|
3033
3055
|
// re-search. That is exactly the judgement WARM_ELIGIBLE_RE already encodes: the tokens meaning "the
|
|
@@ -3060,7 +3082,7 @@ export function warmEligible(fail, json) {
|
|
|
3060
3082
|
// predicate the gate judges with). It is DELIBERATELY NOT a token list. The first cut keyed this veto on
|
|
3061
3083
|
// TOTAL_DEFECT_TOKENS, a closed list of two form-path tokens — and when the typed transport armed, the
|
|
3062
3084
|
// failure tokens moved out of the list and the veto silently stood down with every assertion still green
|
|
3063
|
-
// (
|
|
3085
|
+
// (the hold). An enrolled-token veto is an ENUMERATED check: a future fifth token forgetting to
|
|
3064
3086
|
// enrol is the move-blindness this repo has counted seven instances of. The direct state keys the veto
|
|
3065
3087
|
// on the condition it exists for, and nothing has to remember to join.
|
|
3066
3088
|
//
|
|
@@ -3105,7 +3127,7 @@ export function vetoResumeRuledNone(attempt, state) {
|
|
|
3105
3127
|
// validation)": framediff_* → frame-diff.json, coverage_* → register-coverage-ledger.json, findings_*
|
|
3106
3128
|
// → findings.json, grid_* → the failing half's own ledger, named_band_* → <axis>-band.json.
|
|
3107
3129
|
//
|
|
3108
|
-
//
|
|
3130
|
+
// That in-dispatch repair has to know that, because it decides whether a repair LANDED by looking at
|
|
3109
3131
|
// a file's bytes — and looking at the expectFile after a sibling repair would read a compliant model's
|
|
3110
3132
|
// correct answer as "wrote nothing". Rather than re-deriving the routing in the gateway (two copies of
|
|
3111
3133
|
// one rule, drifting from the day they are written), the derivation is lifted here and BOTH callers use
|
|
@@ -3210,7 +3232,7 @@ export function warmPatchMessage(lastFail, expectFile, { supplementalLane = fals
|
|
|
3210
3232
|
// rulings reach the driver's accumulator only through `record_dispositions`, so a warm patch that
|
|
3211
3233
|
// ordered any file edit would aim the seat at an artifact it cannot affect — the two halves of one
|
|
3212
3234
|
// message disagreeing about where the work lands, which is the exact defect class the token split and
|
|
3213
|
-
//
|
|
3235
|
+
// That routing fixes each closed one layer up.
|
|
3214
3236
|
if (CONNOTATION_FORM_TOKEN_RE.test(lastFail ?? "") && files.length) {
|
|
3215
3237
|
// The ABSOLUTE spec path, derived from the failing member's own output by exactly the rule
|
|
3216
3238
|
// gridLedgerNameFor states and for exactly the same reason: a warm patch carries no base prompt
|
|
@@ -3218,7 +3240,7 @@ export function warmPatchMessage(lastFail, expectFile, { supplementalLane = fals
|
|
|
3218
3240
|
// name — and a half must be aimed at ITS spec, never the canonical one.
|
|
3219
3241
|
const halfM = basename(String(files[0])).match(/^common-law-findings\.half-([a-z0-9]+)\.md$/);
|
|
3220
3242
|
const specPath = driverDir(dirname(files[0]), halfM ? `grid-spec.half-${halfM[1]}.json` : "grid-spec.json");
|
|
3221
|
-
// THE CLOSING SENTENCE IS PER STATE (
|
|
3243
|
+
// THE CLOSING SENTENCE IS PER STATE (the lesson, kept): "record every outstanding row" is right
|
|
3222
3244
|
// for a partial and WRONG for a quote defect, where every row is ruled and re-recording rulings is
|
|
3223
3245
|
// work already done. A truncated call's close must forbid the one compliance a wrongly-accused seat
|
|
3224
3246
|
// reaches for — re-deriving its rulings.
|
|
@@ -3250,7 +3272,7 @@ export function warmPatchMessage(lastFail, expectFile, { supplementalLane = fals
|
|
|
3250
3272
|
: `Do not stop until the tool's answer reports nothing outstanding.`);
|
|
3251
3273
|
}
|
|
3252
3274
|
const sibling = repairSiblingName(lastFail, files);
|
|
3253
|
-
// ── THE SIBLING BRANCH MUST NOT OUTRANK THE TOOL-WRITTEN ONE (
|
|
3275
|
+
// ── THE SIBLING BRANCH MUST NOT OUTRANK THE TOOL-WRITTEN ONE (third conversion) ────────────
|
|
3254
3276
|
//
|
|
3255
3277
|
// This branch orders "Re-save the COMPLETE corrected JSON at <sibling>", which is a hand-write. For
|
|
3256
3278
|
// frame-diff the sibling IS the tool-written artifact — `frame-diff.json`, with `frame-diff.md` as the
|
|
@@ -3312,7 +3334,7 @@ export function warmPatchMessage(lastFail, expectFile, { supplementalLane = fals
|
|
|
3312
3334
|
// "the turn wrote nothing" — the driver writes the file, so an absent model means the TOOL WAS NEVER
|
|
3313
3335
|
// CALLED. `blindframe_*` means the call arrived and its values failed the parser. One remedy: call it.
|
|
3314
3336
|
//
|
|
3315
|
-
// THE TOKEN-FAMILY LIST IS GONE (
|
|
3337
|
+
// THE TOKEN-FAMILY LIST IS GONE (third conversion), and its removal is the root-cause half. It
|
|
3316
3338
|
// read `/blindframe_|skeptic_/`, which is a second authoring of "which stages are converted" — one that
|
|
3317
3339
|
// this conversion would have had to extend with `framediff_`, and the next one with its own prefix,
|
|
3318
3340
|
// each time by somebody remembering. The right question is not which token fired but whether the
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// "Wikipedia article documenting 1871 race riot, negative historical violence event"
|
|
14
14
|
//
|
|
15
15
|
// Both are true. Neither says what could not be established. A charged judgment recorded without its
|
|
16
|
-
// grounds is the same shape as
|
|
16
|
+
// grounds is the same shape as the `step-silent`: the ledger has a label for the decision and
|
|
17
17
|
// cannot say why for any single one, so a reader cannot tell "correctly judged" from "silently
|
|
18
18
|
// asserted" — which are opposite repairs.
|
|
19
19
|
//
|
package/driver/hit-list.mjs
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
// The line drops `_query`/`_queries`/`screen` — 61% of a band row's bytes — and keeps the qid alone,
|
|
26
26
|
// because the completeness witness needs the join and nothing dismisses a record on its provenance.
|
|
27
27
|
|
|
28
|
-
import { countOrNull } from "./named-band.mjs"; //
|
|
28
|
+
import { countOrNull } from "./named-band.mjs"; // one copy of "a count I could not take is null, not zero"
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* THE FATES. A line ends with exactly one, and the set is closed so completeness is verifiable by
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// only systems we are confident of are listed; an UNKNOWN code returns null and every consumer
|
|
14
14
|
// leaves it UNLABELED — the system never guesses a legal system. ("Hybrid" realities — e.g. the
|
|
15
15
|
// UK's registration system alongside passing-off rights — are classified by where unregistered
|
|
16
|
-
// USE can defeat/coexist with a later registration, the property the
|
|
16
|
+
// USE can defeat/coexist with a later registration, the property the clearotron actually acts on.)
|
|
17
17
|
//
|
|
18
18
|
// PURE (no node imports) → tests offline.
|
|
19
19
|
|
package/driver/jx-lanes.mjs
CHANGED
|
@@ -128,7 +128,7 @@ export function scopeJurisdictions(job, profile) {
|
|
|
128
128
|
/**
|
|
129
129
|
* The POLICY decision: which lanes fire for this run, at what depth. Pure — env kill switches are the
|
|
130
130
|
* pipeline's business. Returns {} lanes when the searchPolicy doesn't carry the jxLanes component (a
|
|
131
|
-
* plain
|
|
131
|
+
* plain clearotron is byte-identical: no decision, no sidecar, nothing).
|
|
132
132
|
*
|
|
133
133
|
* decideJxLanes({ job, profile, searchPolicy }) →
|
|
134
134
|
* { lanes: { zh: { depth: "candidates"|"full", jurisdictions: ["CN",…], origin } }, scope: [...] }
|
package/driver/jx-units.mjs
CHANGED
|
@@ -352,7 +352,7 @@ export async function runJxSerpGrid(ctx, job, opts = {}, { runLog = () => {}, no
|
|
|
352
352
|
// "shadow-only, the run is unaffected" and carry no cause at all, while degradedCause beside it
|
|
353
353
|
// held `SerpAPI 429: Your account has run out of searches.` Measured, not hypothesised: an
|
|
354
354
|
// operator watching a real run learned a headline capability had failed and could not learn that
|
|
355
|
-
// the fix was a subscription top-up somebody could do in five minutes. That is
|
|
355
|
+
// the fix was a subscription top-up somebody could do in five minutes. That is the principle
|
|
356
356
|
// one layer down — a discriminator that reaches a field and not the sentence anybody reads.
|
|
357
357
|
note(shadowLaneNote("jx serp grid", "degraded", `${gaps.length}/${cellsIn.length} cells gapped: ${topCause}`,
|
|
358
358
|
`attempt ${st.attempts + 1}/${MAX_UNIT_ATTEMPTS}`));
|
package/driver/jx.mjs
CHANGED
|
@@ -123,7 +123,7 @@ export function deriveJxSliceStatement({ sidecar, units = null, env = process.en
|
|
|
123
123
|
continue;
|
|
124
124
|
}
|
|
125
125
|
// item 8 — the per-slice CLEAROTRON_JX_* arms are gone, so "armed" is now the ONE condition that
|
|
126
|
-
// survives: the lane not killed.
|
|
126
|
+
// survives: the lane not killed. That warning still applies to how it is read — laneArmed is the
|
|
127
127
|
// fail-open reader, and reading it through the old default-OFF `envOn` made every unset lane report
|
|
128
128
|
// not-armed on a run that had dispatched.
|
|
129
129
|
const armed = laneArmed(s.lane, env);
|
|
@@ -229,7 +229,7 @@ const flag = (name) => ["1", "true", "yes", "on"].includes(String(process.env[na
|
|
|
229
229
|
// — the private copy is gone; laneArmed (driver.config.mjs) is the one reader.
|
|
230
230
|
|
|
231
231
|
// ── The frozen lane decision: minted once (cold), read verbatim forever (a resume NEVER re-decides —
|
|
232
|
-
// the freezeProfile doctrine). Plain-
|
|
232
|
+
// the freezeProfile doctrine). Plain-clearotron runs never reach this (the caller gates on the component).
|
|
233
233
|
export function attachJxLanes(ctx) {
|
|
234
234
|
const sidecarPath = driverDir(ctx.run.runDir, "jx-lanes.json");
|
|
235
235
|
let raw = null;
|
|
@@ -473,7 +473,7 @@ export async function runJxCandidateFold(ctx, job, opts = {}, { runLog = () => {
|
|
|
473
473
|
// function has run, and rebuilding the block from three literal keys silently dropped them on any
|
|
474
474
|
// resume that still had a pending lane. The three keys this function owns are overwritten below it,
|
|
475
475
|
// so carrying the rest forward changes nothing else. Carry-forward beats drop-and-re-mint: the drop
|
|
476
|
-
// leaves a window in which the sidecar carries no statement at all, which reads as the pre- defect.
|
|
476
|
+
// leaves a window in which the sidecar carries no statement at all, which reads as the pre-change defect.
|
|
477
477
|
const fold = { ...(repairedFold ?? {}), executor: source, lanes: { ...(repairedFold?.lanes ?? {}) }, foldedAt: repairedFold?.foldedAt ?? null };
|
|
478
478
|
// criterion 4 — THE RECEIPT NAMES THE MODEL, NOT ONLY THE EXECUTOR.
|
|
479
479
|
//
|
|
@@ -154,7 +154,11 @@ const DECLARED = Object.freeze({
|
|
|
154
154
|
// "the lane that produced the record is a driver fact". The chip is derived from this joined list and
|
|
155
155
|
// from the finding's own receipted evidence — never from a word the seat typed about itself.
|
|
156
156
|
"marks.findings": ["ordinal", "name", "owner", "band", "net", "type", "evidence", "basis", "weighedFilings"],
|
|
157
|
-
|
|
157
|
+
// `band` is the rater's rating OF THAT FILING, optional, in the framework's own ladder words. It is
|
|
158
|
+
// declared here as well as in the tool schema because this allowlist — not the schema — is what the
|
|
159
|
+
// driver validates against: a key the seat sends and this list omits is refused, so the read would
|
|
160
|
+
// arrive banded and land unbanded with nothing saying why.
|
|
161
|
+
"marks.registerReads": ["recordId", "read", "band"],
|
|
158
162
|
"marks.negatives": ["term", "source", "note"],
|
|
159
163
|
});
|
|
160
164
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// The reviewer is the report's only check, and until now it wrote its own review as free prose with
|
|
6
6
|
// Write/Edit. Everything downstream then parsed that prose back out: the verdict token, the flag list,
|
|
7
7
|
// the optional `[kind:]` and `[on:]` channels, and the count that decides whether a BLOCKING is
|
|
8
|
-
// degenerate. The seat chose the enumeration style, so the parse could miss —
|
|
8
|
+
// degenerate. The seat chose the enumeration style, so the parse could miss — the lettered flags
|
|
9
9
|
// were invisible for exactly that reason, and records a second walk that could not see `**1.`.
|
|
10
10
|
//
|
|
11
11
|
// The seat now hands VALUES and the driver renders the document. The style becomes the driver's, so
|
|
@@ -179,7 +179,7 @@ export function acceptRefutation(params, { receiptPresent = false } = {}) {
|
|
|
179
179
|
// ADDED rather than repurposed: changing what `flags` means would move every reader silently, and a
|
|
180
180
|
// field with two meanings across a version boundary is the shape this repo keeps finding.
|
|
181
181
|
//
|
|
182
|
-
// WHY THE ARRAY HAS TO LEAVE THIS FUNCTION AT ALL (
|
|
182
|
+
// WHY THE ARRAY HAS TO LEAVE THIS FUNCTION AT ALL (T3b). The corrective pass builds
|
|
183
183
|
// its worklist by RE-PARSING the rendered markdown through `parseCorrections`. That parse is exactly
|
|
184
184
|
// what the conversion removed the need for — the flags were typed values a moment earlier — and it can
|
|
185
185
|
// miss, which is the defect the whole conversion exists to close. A consumer that reads the accepted
|
|
@@ -209,7 +209,7 @@ export function recordRefutation(runDir, received, { now = () => new Date().toIS
|
|
|
209
209
|
let captureFailed = cap.failed;
|
|
210
210
|
const capture = (outcome) => { if (!mergeCapture(cap.path, outcome)) captureFailed ??= "the outcome could not be merged into the capture"; };
|
|
211
211
|
|
|
212
|
-
// ✕ CAPTURED TWICE, AND THE SECOND WRITE IS THE POINT (
|
|
212
|
+
// ✕ CAPTURED TWICE, AND THE SECOND WRITE IS THE POINT (T3b).
|
|
213
213
|
//
|
|
214
214
|
// The capture ran ONCE, before validation, to a fixed filename — so a refused call and an accepted one
|
|
215
215
|
// left byte-identical evidence and nothing on disk said which. On a turn where the seat sends a
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
//
|
|
14
14
|
// THE TWO INPUTS ARE DIFFERENT QUESTIONS AND GET DIFFERENT ANSWERS:
|
|
15
15
|
//
|
|
16
|
-
// blank / unset / whitespace "not configured" (
|
|
16
|
+
// blank / unset / whitespace "not configured" (the documented spelling) — take the DEFAULT.
|
|
17
17
|
// a value that is not a number "configured wrong" — REFUSE, naming the variable and what it holds.
|
|
18
18
|
//
|
|
19
19
|
// There is no overlap between those inputs, so neither answer weakens the other.
|