clearotron 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +54 -1
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +53 -49
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +4 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +27 -11
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +58 -118
- package/bin/start.mjs +22 -25
- package/bin/stop.mjs +65 -3
- package/bin/update.mjs +7 -7
- package/bin/uspto-sync.mjs +1 -1
- package/build-info.json +2 -2
- package/docs/DELIVERY.md +6 -2
- package/docs/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +6 -3
- package/docs/architecture/05-config-governance.md +38 -5
- package/docs/architecture/06-operations-runbook.md +13 -1
- package/docs/architecture/09-security-and-data.md +1 -1
- package/docs/decisions/0004-documentation-structure.md +1 -1
- package/driver/CHANGELOG.md +65 -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 +1 -1
- package/driver/commonlaw-carry.mjs +1 -1
- package/driver/config-inventory.mjs +1 -1
- package/driver/connotation-search.mjs +12 -12
- package/driver/contract-audit.mjs +5 -5
- package/driver/contract-dictation-registry.mjs +4 -4
- package/driver/contract-dictation.mjs +2 -2
- package/driver/contract-e3-backlog.mjs +6 -6
- package/driver/contract-vocabulary.mjs +3 -3
- package/driver/corrections-feedforward.mjs +1 -1
- package/driver/coverage-form-io.mjs +2 -2
- package/driver/coverage-form.mjs +4 -4
- package/driver/coverage-ledger.mjs +3 -3
- package/driver/coverage-union.mjs +1 -1
- package/driver/declination-call.mjs +35 -3
- package/driver/declination-duty.mjs +1 -1
- package/driver/deliver-trigger.sh +3 -3
- package/driver/deploy-live-run-guard.mjs +6 -2
- package/driver/dev-portal.mjs +1 -1
- package/driver/disposition-call.mjs +4 -4
- package/driver/disposition-tool.mjs +4 -4
- package/driver/disposition-union.mjs +2 -2
- package/driver/doc-constants.mjs +1 -1
- package/driver/door-gates.mjs +2 -2
- package/driver/doubt-selection.mjs +2 -2
- package/driver/drainer-identity.mjs +1 -1
- package/driver/driver.config.mjs +63 -11
- package/driver/e2e-rounds.mjs +2 -2
- package/driver/effort-model.mjs +2 -2
- package/driver/engine/anthropic-agent.mjs +24 -24
- package/driver/engine/auth.mjs +1 -1
- package/driver/engine/common.mjs +1 -1
- package/driver/engine/deny-authority-write.mjs +1 -1
- package/driver/engine/jx-turn.mjs +1 -1
- package/driver/engine/mcp/clarivate-server.mjs +1 -1
- package/driver/engine/mcp/corsearch-server.mjs +1 -1
- package/driver/engine/mcp/declination-server.mjs +1 -1
- package/driver/engine/mcp/dispositions-server.mjs +1 -1
- package/driver/engine/mcp/euipo-server.mjs +1 -1
- package/driver/engine/mcp/fetch-server.mjs +1 -1
- package/driver/engine/mcp/free-tier-server.mjs +2 -2
- package/driver/engine/mcp/gather-config.mjs +11 -11
- package/driver/engine/mcp/perplexity-server.mjs +1 -1
- package/driver/engine/mcp/recording-server.mjs +8 -4
- package/driver/engine/mcp/signa-server.mjs +1 -1
- package/driver/engine/mcp/uspto-local-server.mjs +1 -1
- package/driver/engine/openai-agent.mjs +2 -2
- package/driver/engine-build.mjs +2 -2
- package/driver/enqueue-schema.mjs +2 -2
- package/driver/enqueue.mjs +1 -1
- package/driver/envelope-settle.mjs +1 -1
- package/driver/evidence-claim-invariant.mjs +2 -2
- package/driver/findings-model.mjs +8 -8
- package/driver/floor-duty.mjs +1 -1
- package/driver/form-neighbourhood.mjs +1 -1
- package/driver/framework.mjs +1 -1
- package/driver/gateway.mjs +28 -23
- package/driver/grounds-grammar.mjs +1 -1
- package/driver/hit-list.mjs +1 -1
- package/driver/jurisdiction-systems.mjs +1 -1
- package/driver/jx-lanes.mjs +1 -1
- package/driver/jx-units.mjs +1 -1
- package/driver/jx.mjs +3 -3
- package/driver/knockout-assess-record.mjs +5 -1
- package/driver/narrative-refutation-record.mjs +3 -3
- package/driver/numeric-setting.mjs +1 -1
- package/driver/owner-use-check.mjs +184 -0
- package/driver/package.json +2 -2
- package/driver/phase0.mjs +1 -1
- package/driver/pipeline-knockout.mjs +52 -4
- package/driver/pipeline.mjs +175 -62
- package/driver/placement-diff.mjs +2 -2
- package/driver/placement-form.mjs +4 -4
- package/driver/placement-union.mjs +1 -1
- package/driver/portal-acks.mjs +1 -1
- package/driver/portal-config-view.mjs +2 -2
- package/driver/portal-local-auth.mjs +1 -1
- package/driver/portal-report.mjs +6 -6
- package/driver/portal-service.mjs +15 -15
- package/driver/predelivery-lint.mjs +28 -10
- package/driver/prelim-variants-record.mjs +2 -2
- package/driver/profile-page.html +1 -1
- package/driver/profile-selection.mjs +1 -1
- package/driver/profile-service.mjs +2 -2
- package/driver/profiles.mjs +1 -1
- package/driver/progress.mjs +6 -6
- package/driver/provider-usage.mjs +1 -1
- package/driver/publish/demo-marking.mjs +1 -1
- package/driver/publish/index.mjs +47 -6
- package/driver/publish/knockout.mjs +36 -14
- package/driver/publish/parse.mjs +4 -4
- package/driver/publish/publish-inputs.mjs +2 -2
- package/driver/publish/register-presence.mjs +1 -1
- package/driver/publish/render-knockout.mjs +198 -31
- package/driver/publish/report-data.mjs +13 -3
- package/driver/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/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 +3 -3
- package/driver/skeptic-search.mjs +1 -1
- package/driver/skills/blind-frame/SKILL.md +1 -1
- package/driver/skills/case-law-citation/SKILL.md +2 -2
- package/driver/skills/knockout-assess/SKILL.md +10 -4
- package/driver/skills/prelim-search/SKILL.md +2 -2
- package/driver/skills/prelim-search/template-formatting.md +1 -1
- package/driver/skills/prelim-search/templates/email/generic.md +1 -1
- package/driver/skills/prelim-search/worked-examples.md +1 -1
- package/driver/skills/prelim-variants/SKILL.md +2 -2
- package/driver/stage-context.mjs +1 -1
- package/driver/stages-knockout.mjs +55 -4
- package/driver/stages.mjs +97 -40
- package/driver/stray-artifacts.mjs +2 -2
- package/driver/suite-census.json +146 -32
- package/driver/synthesis-record.mjs +1 -1
- package/driver/systemd/clearotron-client-mcp.service +1 -1
- package/driver/systemd/clearotron-portal.service +1 -1
- package/driver/systemd/render-units.mjs +1 -1
- package/driver/tokens.mjs +1 -1
- package/driver/tool-calls.mjs +1 -1
- package/driver/turnaround-bands.mjs +1 -1
- package/driver/unit-file-drift.mjs +1 -1
- package/driver/unit-inventory.mjs +121 -61
- package/driver/unit-state-verdict.mjs +20 -12
- package/driver/verify-knockout.mjs +10 -2
- package/driver/verify.mjs +12 -12
- package/driver/whatif-memo-run.mjs +46 -5
- package/driver/whatif-queue.mjs +1 -1
- package/driver/whatif-worker.mjs +1 -1
- package/mcp-server/CHANGELOG.md +4 -0
- package/mcp-server/README.md +3 -3
- package/mcp-server/http-server.mjs +44 -1
- package/mcp-server/key-socket.mjs +184 -0
- package/mcp-server/lib/audit-view.mjs +69 -2
- package/mcp-server/lib/brief.mjs +15 -0
- package/mcp-server/lib/driver.mjs +7 -1
- package/mcp-server/lib/events.mjs +1 -1
- package/mcp-server/lib/http-handler.mjs +1 -1
- package/mcp-server/lib/knockout.mjs +435 -0
- package/mcp-server/lib/ops.mjs +4 -4
- package/mcp-server/lib/options.mjs +1 -1
- package/mcp-server/lib/plan.mjs +1 -1
- package/mcp-server/lib/runs.mjs +1 -1
- package/mcp-server/lib/scrub.mjs +1 -1
- package/mcp-server/lib/whatif.mjs +3 -3
- package/mcp-server/mint-token.mjs +1 -1
- package/mcp-server/package.json +2 -2
- package/mcp-server/server.mjs +76 -11
- package/package.json +3 -3
- package/portal-ui/package.json +1 -1
- package/providers/_shared/enumerate.mjs +1 -1
- package/providers/_shared/ledger-path.mjs +3 -3
- package/providers/_shared/ledger.mjs +1 -1
- package/providers/_shared/result-shape.mjs +3 -3
- package/providers/_shared/term-shape.mjs +1 -1
- package/providers/corsearch/src/core.js +1 -1
- package/providers/jx-subclass/BUILDING.md +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +4 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
- package/scripts/README.md +1 -1
- package/scripts/added-reference-check.mjs +29 -1
- package/scripts/ai-page-render-check.mjs +1 -1
- package/scripts/authority-boundary-probe.mjs +1 -1
- package/scripts/backfill-started-at.mjs +1 -1
- package/scripts/citation-line-check.mjs +3 -3
- package/scripts/clearances-render-check.mjs +3 -3
- package/scripts/compare.mjs +2 -2
- package/scripts/composer-render-check.mjs +6 -6
- package/scripts/contract-dictation-scan.mjs +2 -2
- package/scripts/dead-names.mjs +1 -1
- package/scripts/drain-preflight.mjs +5 -5
- package/scripts/e2e-unread-terminals.mjs +1 -1
- package/scripts/e2e.mjs +8 -8
- package/scripts/env-audit.mjs +7 -7
- package/scripts/env-classify.mjs +139 -15
- package/scripts/freeze-example-run.mjs +3 -3
- package/scripts/head-arrived-gated.mjs +1 -1
- package/scripts/headless-page.mjs +51 -2
- package/scripts/home-render-check.mjs +2 -2
- package/scripts/live-surface-check.mjs +92 -19
- package/scripts/main-health.mjs +1 -1
- package/scripts/merge-presence-check.mjs +3 -3
- package/scripts/mint-suite-census.mjs +6 -6
- package/scripts/nightly-notice.mjs +1 -1
- package/scripts/portal-lifecycle-check.mjs +3 -3
- package/scripts/reconcile-runs.mjs +1 -1
- package/scripts/release-await-cut.mjs +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 +116 -0
- package/scripts/test-run.mjs +3 -3
- package/scripts/third-party-notices.mjs +3 -3
- package/scripts/travelling-predicates.mjs +3 -3
- package/scripts/unexecuted-asserts.mjs +2 -2
- package/scripts/verify-publishable.mjs +2 -2
- package/scripts/write-up-form-census.mjs +1 -1
- package/shared/access-audience.mjs +1 -1
- package/shared/brand.mjs +13 -13
- package/shared/citation-scan.mjs +1 -1
- package/shared/client-door.mjs +7 -7
- package/shared/driver-dir.mjs +1 -1
- package/shared/env-aliases.mjs +0 -48
- package/shared/env-local.mjs +1 -1
- package/shared/identifier-scan.mjs +3 -3
- package/shared/invocation.mjs +1 -1
- package/shared/names-in-force.mjs +2 -0
- package/shared/product-owned-names.mjs +1 -1
- package/shared/register-selection.mjs +1 -1
- package/shared/scope.mjs +5 -5
- package/shared/server-units.mjs +4 -4
- package/shared/store-in-repo.mjs +2 -2
- package/shared/suite-census.mjs +4 -4
- package/shared/tty-style.mjs +1 -1
- package/shared/uspto-index-size.mjs +1 -1
- package/shared/vacuous-pass.mjs +1 -1
- package/skills/clearotron-account/SKILL.md +42 -13
- package/driver/systemd/prelim-driver.path +0 -69
- package/driver/systemd/prelim-driver.service +0 -86
- package/driver/systemd/prelim-driver.timer +0 -14
- package/driver/systemd/prelim-outbox.path +0 -27
- package/driver/systemd/prelim-outbox.service +0 -37
- package/driver/systemd/prelim-outbox.timer +0 -21
- package/node_modules/exceljs/README_zh.md +0 -2878
- package/node_modules/exceljs/dist/LICENSE +0 -22
- package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
- package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
- package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
- package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
- package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
- package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
- package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
- package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
- package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
- package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
- package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
- package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
- package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
- package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
- package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
- package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
- package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
- package/node_modules/exceljs/dist/es5/index.js +0 -15
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
- package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
- package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
- package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
- package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
- package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
- package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
- package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
- package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.js +0 -59900
- package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
- package/node_modules/exceljs/dist/exceljs.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
- package/scripts/deploy-test.sh +0 -309
package/driver/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,68 @@
|
|
|
1
|
-
#
|
|
1
|
+
# clearotron-driver
|
|
2
|
+
|
|
3
|
+
## 0.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- df095a8: Fixed: The configuration audit now refuses when one of the files it reads is missing, instead of reporting that nothing sets the variables that file records. Its answer decides which settings look unused, so a file it could not read was being counted as a file with nothing in it.
|
|
8
|
+
- f05657c: New: An assistant on a clearance account can now answer "what if this were different" about a report already delivered. It writes a short memo reasoning over the evidence already gathered, instead of asking for a new search.
|
|
9
|
+
- d52cd98: Fixed: A scheduled deploy no longer updates the working copy while an experiment run is in progress. It now waits, as it already did for a clearance run.
|
|
10
|
+
- f05657c: Fixed: A client account asking about a mark in a knockout screen now receives the risk band, the reason for it and the findings behind it. It previously returned an empty answer.
|
|
11
|
+
- 38ce32f: New: A Knockout search now looks up what the owner of a registered right actually sells, and the report says where that answer came from. Before, the assessment inferred the owner's trade from the company name alone, then told you to go and obtain the registration's own goods list. The name is not evidence of the trade. It happened to read correctly on one search and would have read confidently wrong on the next.
|
|
12
|
+
|
|
13
|
+
Fixed: Where the lookup finds nothing, the report says so plainly and still delivers. An unanswered search is never written up as a clean negative, and a provider outage never withholds a report.
|
|
14
|
+
|
|
15
|
+
For operators: this adds one web search per promoted registered filing, deduplicated by owner and capped at three per searched name. A search with no registered right against it costs nothing extra.
|
|
16
|
+
- 57eaf24: Fixed: A knockout report no longer shows a register filing's risk band beside a line saying that filing carries no rating. The band shows when the reviewer gave one, and the line appears only when they did not.
|
|
17
|
+
- b1f188f: Fixed: The unit inventory again records why every shipped unit that runs on no box is still shipped. One entry lost its reason when its name was superseded.
|
|
18
|
+
- 3de0828: New: One engine process can now serve both people arriving through a tunnel and programs on the same machine holding an access key. It listens for the key on a local socket, which no tunnel can forward to, and the network door never accepts a key at all. Deployments that needed both used to run the process twice, on two ports, with two units to keep in step.
|
|
19
|
+
|
|
20
|
+
Fixed: The startup lines now say whether a local key path exists, and what its permissions are. An operator can see it without opening a unit file. A deployment with no key path is told that too, rather than left to infer it from silence.
|
|
21
|
+
|
|
22
|
+
For operators: set TRADEMARK_MCP_KEY_SOCKET to the socket path the local key door should listen on. It is created with owner and group access only. Leaving it unset changes nothing about an existing deployment. The door refuses to open without a grants file, or alongside the authentication bypass.
|
|
23
|
+
- 235cf07: Fixed: Stopping the demo now stops everything it started, including when the stop signal reaches only the command you can see rather than the whole terminal.
|
|
24
|
+
- be648b6: Fixed: The architecture diagrams in the public documentation render with their intended colours again, and thirteen code comments state the colour they meant.
|
|
25
|
+
- 97b7c96: Fixed: The deployment check now reports the services a box is actually running. It had been asking systemd about unit names left behind by a rename, so a healthy box reported nothing running.
|
|
26
|
+
- f05657c: Fixed: The "your screen is done" notice for a knockout search now goes to the person who ordered it, with the operator kept as a copy. It previously went to the operator alone, whoever had asked for the search.
|
|
27
|
+
- c4b6b58: Fixed: The link in your completion email and message now opens the report. It previously pointed at a path the site does not serve, so it led to a sign-in and then a dead page. This affected every delivered report on both search products, in the email, the chat notice and the assistant's own answer. The workbook link in the same email was always correct and is unchanged.
|
|
28
|
+
|
|
29
|
+
Fixed: The chat notice now goes to the person who ordered the search, with the operator keeping a copy they can switch off. Before, it went only to whoever runs the service, so the requester was never told their search had finished.
|
|
30
|
+
|
|
31
|
+
For operators: hold requesters' numbers in CLEAROTRON_REQUESTER_WHATSAPP, keyed by email address or by the handle a request arrives under. Where no number is held, the delivery record says so by name instead of quietly sending the notice to you. Set CLEAROTRON_WHATSAPP_OPERATOR_COPY=0 to stop receiving copies of other people's runs.
|
|
32
|
+
- bb1a409: New: A Knockout report now carries the whole assessment behind its ratings. You get the reviewer's notes and the reviewer's own opening read of each name. You also get the reasoning that holds a name at its rating, and what would move it. This was written during every search and reached only the audit workbook, so the report showed a rating without the thinking under it. The notes are marked as reference material rather than mixed into the findings.
|
|
33
|
+
|
|
34
|
+
New: A registered filing the search formed a view on now shows that rating and the read behind it. Before, the one registered right on a page was the only entry carrying no rating, beside softer uses that all carried one. That inverted what matters legally. A filing the search did not weigh still says so plainly.
|
|
35
|
+
- df6277c: Fixed: A live registration covering the goods you asked about is no longer left out of a report for want of room. It is reported, or the report says why it is distant.
|
|
36
|
+
- 9ba8cd0: Fixed: A what-if memo is now refused if it writes anywhere in the delivered run except its own memo folder, and the refusal names the file.
|
|
37
|
+
- 8c8e200: Fixed: A what-if question left queued when its run is archived now comes back with a reason, instead of never being answered.
|
|
38
|
+
- bb1a409: Fixed: The delivery record now states plainly when a report's write-up length and ranking rules could not be checked against the delivered text. It says the rules were applied to nothing on that run. Before, this was recorded as an unlabelled failed check. It looked like any other, so a run could deliver with those rules unverified and nobody would see it.
|
|
39
|
+
- 9ba8cd0: For operators: Each run record now says whether the model id it observed was a pinned snapshot or an alias the provider can repoint.
|
|
40
|
+
- aea4a4e: Fixed: The deployment check now says which checkout a service is running from even when its unit file does not declare one.
|
|
41
|
+
- bb1a409: New: The tools that show how a search reached its answer now work on a Knockout search. You can ask what it found, what it looked at, where it searched and came back empty, and read the delivered report itself. Until now they returned nothing at all for a Knockout search, so anyone asking how one of these results was reached saw a blank record.
|
|
42
|
+
|
|
43
|
+
New: The proof-of-search record answers on these searches. It lists what was searched and found nothing, which is what answers a challenge to a result. Where a tool has nothing to show for this kind of search, it now says so in words. An empty list reads as "we looked and found nothing".
|
|
44
|
+
- 14d6d28: Fixed: The demo and the install steps now start on native Windows, where they previously crashed on the first internal module they loaded.
|
|
45
|
+
|
|
46
|
+
## 0.3.0-beta.0
|
|
47
|
+
|
|
48
|
+
### Minor Changes
|
|
49
|
+
|
|
50
|
+
- bb1a409: New: A Knockout report now carries the whole assessment behind its ratings. You get the reviewer's notes and the reviewer's own opening read of each name. You also get the reasoning that holds a name at its rating, and what would move it. This was written during every search and reached only the audit workbook, so the report showed a rating without the thinking under it. The notes are marked as reference material rather than mixed into the findings.
|
|
51
|
+
|
|
52
|
+
New: A registered filing the search formed a view on now shows that rating and the read behind it. Before, the one registered right on a page was the only entry carrying no rating, beside softer uses that all carried one. That inverted what matters legally. A filing the search did not weigh still says so plainly.
|
|
53
|
+
- bb1a409: New: The tools that show how a search reached its answer now work on a Knockout search. You can ask what it found, what it looked at, where it searched and came back empty, and read the delivered report itself. Until now they returned nothing at all for a Knockout search, so anyone asking how one of these results was reached saw a blank record.
|
|
54
|
+
|
|
55
|
+
New: The proof-of-search record answers on these searches. It lists what was searched and found nothing, which is what answers a challenge to a result. Where a tool has nothing to show for this kind of search, it now says so in words. An empty list reads as "we looked and found nothing".
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- df6277c: Fixed: A live registration covering the goods you asked about is no longer left out of a report for want of room. It is reported, or the report says why it is distant.
|
|
60
|
+
- 9ba8cd0: Fixed: A what-if memo is now refused if it writes anywhere in the delivered run except its own memo folder, and the refusal names the file.
|
|
61
|
+
- 8c8e200: Fixed: A what-if question left queued when its run is archived now comes back with a reason, instead of never being answered.
|
|
62
|
+
- bb1a409: Fixed: The delivery record now states plainly when a report's write-up length and ranking rules could not be checked against the delivered text. It says the rules were applied to nothing on that run. Before, this was recorded as an unlabelled failed check. It looked like any other, so a run could deliver with those rules unverified and nobody would see it.
|
|
63
|
+
- 9ba8cd0: For operators: Each run record now says whether the model id it observed was a pinned snapshot or an alias the provider can repoint.
|
|
64
|
+
- aea4a4e: Fixed: The deployment check now says which checkout a service is running from even when its unit file does not declare one.
|
|
65
|
+
- 14d6d28: Fixed: The demo and the install steps now start on native Windows, where they previously crashed on the first internal module they loaded.
|
|
2
66
|
|
|
3
67
|
## 0.2.1
|
|
4
68
|
|
package/driver/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# clearotron-driver — deterministic driver for the prelim-search trademark workflow
|
|
2
2
|
|
|
3
3
|
Orchestration in **code**; the LLM does only judgment leaves. Each pipeline stage is **one blocking
|
|
4
4
|
engine turn** (default engine: `anthropic-agent`, shelling `claude -p` per stage); fan-out/fan-in/
|
|
@@ -26,7 +26,7 @@ integrator ──job JSON (enqueue CLI / start_run / queue file)──┐
|
|
|
26
26
|
|
|
27
27
|
## Per-agent execution (multi-queue)
|
|
28
28
|
|
|
29
|
-
A
|
|
29
|
+
A clearotron job runs **as the identity that forwarded it** — derived from the queue LOCATION it was
|
|
30
30
|
claimed from (`<workspacePrefix><agentId>/…/queue`, see `driver.config.mjs`), so there is no
|
|
31
31
|
forwarder→agent map to maintain. The run-dir sits in that identity's workspace and the delivery
|
|
32
32
|
packet names that identity as the reply route. **Publishing stays centralized** — `publish/` writes
|
package/driver/ask-ledger.mjs
CHANGED
|
@@ -82,7 +82,7 @@ export function planJoinFrom(planExecution) {
|
|
|
82
82
|
// KEY predates the instrument — "not recorded" — while one carrying the keys as null is a count the
|
|
83
83
|
// provider could not take. Reading the VALUES alone collapses those two into one sentence, which is
|
|
84
84
|
// the exact confusion exists to remove; `records: null` is indistinguishable from absent.
|
|
85
|
-
// The first cut of this did read the values, and it reported every pre- receipt as a failed
|
|
85
|
+
// The first cut of this did read the values, and it reported every pre-change receipt as a failed
|
|
86
86
|
// count. Bare qid strings are tolerated too — no driver ever wrote them, so that arm proved nothing.
|
|
87
87
|
const executed = new Map();
|
|
88
88
|
for (const x of planExecution?.executed ?? []) {
|
|
@@ -104,7 +104,7 @@ export function planJoinFrom(planExecution) {
|
|
|
104
104
|
* What a slice returned, in the reader's words — THREE-VALUED, and never a zero standing in for an
|
|
105
105
|
* absence (register-plan.mjs's join records why). `null` records with a finite count means the provider
|
|
106
106
|
* counted but the block carried no record list; both null means the receipt says nothing about the
|
|
107
|
-
* return, which is what every pre- run looks like. PURE.
|
|
107
|
+
* return, which is what every pre-change run looks like. PURE.
|
|
108
108
|
*/
|
|
109
109
|
export function returnedPhrase(info) {
|
|
110
110
|
if (!info) return "what it returned was not recorded";
|
|
@@ -127,7 +127,7 @@ export function returnedPhrase(info) {
|
|
|
127
127
|
*
|
|
128
128
|
* THE LEGITIMATE CLOSE IS PRESERVED, and it is the whole reason this keys on the RETURN rather than on
|
|
129
129
|
* execution: a probe that ran and found NOTHING has nothing to hand anyone, and closes exactly as it
|
|
130
|
-
* does today.
|
|
130
|
+
* does today. its own build named that trap before this rule existed.
|
|
131
131
|
*
|
|
132
132
|
* THREE STATES, and only one of them discharges:
|
|
133
133
|
*
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
//
|
|
25
25
|
// `_driver/` is the sharpest inclusion. It holds the frozen plan, the grid specs, the plan-execution
|
|
26
26
|
// receipt, the form sidecars and `run.jsonl` — and it sits inside `runDir`, which is granted READ+WRITE
|
|
27
|
-
// by design. Every diagnosis run on 2026-08-14 (
|
|
27
|
+
// by design. Every diagnosis run on 2026-08-14 () read those files as ground
|
|
28
28
|
// truth. A seat writing them would be forging the record the engine is judged by.
|
|
29
29
|
//
|
|
30
30
|
// `profilesDir` is DEFENSIVE, not a live hole: it appears in no `--add-dir`, so the file tools cannot
|
package/driver/call-capture.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// call-capture.mjs — the forensic record of what a seat SENT, one file per call, refusals included.
|
|
4
4
|
//
|
|
5
|
-
//
|
|
5
|
+
// That sibling. Every recording transport captures the payload
|
|
6
6
|
// BEFORE its decision, so the evidence survives a refusal. Each of them wrote that capture to a path
|
|
7
7
|
// derived from something that does not change between calls — a literal `call-001.json`, an axis name, a
|
|
8
8
|
// finding's ordinal — so a second call to the same subject DESTROYED the first's evidence. Measured on
|
package/driver/card-frame.mjs
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// had something of its own to anchor on.
|
|
19
19
|
//
|
|
20
20
|
// That is the day's defect shape in one stage — a decision taken on a surface token while the record
|
|
21
|
-
// underneath already said it — and it is what
|
|
21
|
+
// underneath already said it — and it is what the S2 ruling settled: "the mechanical card fields
|
|
22
22
|
// (headings, ids, links, driver-stamped values) move to code NOW — uncontested."
|
|
23
23
|
//
|
|
24
24
|
// ── WHY THE HEAD RULE IS THE WHOLE REVIEW QUESTION ──────────────────────────────────────────────────
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// THE DEFECT. `case-law-findings.md` is the only artifact case law produces, and its entire contract is
|
|
6
6
|
// `nonEmpty(c, 80)` — a non-empty check on prose. There is no citations ledger, no structured mirror, no
|
|
7
7
|
// per-proceeding record anywhere. So the per-record trace that exists for the register path and
|
|
8
|
-
// for common law (
|
|
8
|
+
// for common law () cannot be extended to case law at all: there is nothing on the other side
|
|
9
9
|
// of the join. That was found while scoping the record trace, and it is why closed into this issue.
|
|
10
10
|
//
|
|
11
11
|
// WHAT THAT COSTS. Two of the owner's three sign-off conditions for sending a case-law report to a
|
|
@@ -45,7 +45,7 @@ export function procStarttime(pid, readStat = undefined,
|
|
|
45
45
|
{ platform = process.platform, readPsStart = defaultReadPsStart } = {}) {
|
|
46
46
|
// AN INJECTED READER IS THE CALLER'S STATEMENT ABOUT HOW TO READ, and it outranks the platform.
|
|
47
47
|
//
|
|
48
|
-
// Measured on macOS (
|
|
48
|
+
// Measured on macOS (the verification run): the arm that pins the field-22
|
|
49
49
|
// parse hands this function its own `readStat` and asserts the parse. With the platform deciding
|
|
50
50
|
// first, that injection was silently ignored off Linux and the arm read `null` — the seam was there
|
|
51
51
|
// and nothing went through it. A caller that supplies a reader is not asking which box this is.
|
|
@@ -614,7 +614,7 @@ export function splitGridSpec(spec, { outputPaths = {}, dispositionsPaths = {} }
|
|
|
614
614
|
// — `dispositions_path` is DICTATED here, never inferred downstream. The grid tool renders it
|
|
615
615
|
// into the obligations block it hands the seat, and the validator reads the same file; deriving the
|
|
616
616
|
// name in two places is the drift this codebase has paid for twice. Absent ⇒ the tool names
|
|
617
|
-
// no file and the seat is judged on prose alone, which is exactly the pre- behaviour.
|
|
617
|
+
// no file and the seat is judged on prose alone, which is exactly the pre-change behaviour.
|
|
618
618
|
// — the half's OWN form path, ALWAYS set explicitly. The spread above carries the canonical
|
|
619
619
|
// spec's connotation object verbatim, and since the canonical spec started carrying its own
|
|
620
620
|
// dispositions_path a conditional override would let a half INHERIT the canonical path whenever the
|
|
@@ -491,7 +491,7 @@ export function commonLawCarryEvent({ trigger = null, artifact = null, reason =
|
|
|
491
491
|
|
|
492
492
|
// ── THE RECONCILIATION, AS TWO RATES WITH THEIR ARITHMETIC ATTACHED ───────────────────────
|
|
493
493
|
//
|
|
494
|
-
//
|
|
494
|
+
// That measurement: of 2116 retrieved common-law candidates, 1609 carried no ground at all, and 253
|
|
495
495
|
// of 292 candidate-bearing cells lacked the negative row the dictation owes each of them. The
|
|
496
496
|
// discriminator was never in doubt — 272 rows carry `step-stated` against 1609 `absent`, so the
|
|
497
497
|
// instrument distinguishes. Nothing compared it to anything.
|
|
@@ -388,7 +388,7 @@ export function caseLawInventory(env = process.env) {
|
|
|
388
388
|
// EUR-Lex reads through the engine's own fetch tool, so there is nothing to configure and nothing that
|
|
389
389
|
// can be missing. It is LISTED anyway: a reader counting case-law sources against a report that named
|
|
390
390
|
// four gaps must be able to find all four here, and a lane that is absent from this page is
|
|
391
|
-
// indistinguishable from one nobody has heard of.
|
|
391
|
+
// indistinguishable from one nobody has heard of. That fifth criterion.
|
|
392
392
|
rows.push({
|
|
393
393
|
key: "caselaw", label: "Case law and oppositions", provider: "eur-lex",
|
|
394
394
|
providerLabel: CASELAW_LABELS["eur-lex"],
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// citing the receipt. A PR/reputational section that ASSERTS a clean result must additionally cite a
|
|
19
19
|
// Connotation-search source line. A searched-clean (recorded queries, empty results) passes.
|
|
20
20
|
//
|
|
21
|
-
// ARMING (
|
|
21
|
+
// ARMING (owner's ruling 2026-08-04 — "arm on data, never on prose"): the disposition join, the
|
|
22
22
|
// recurrence floor and the did-the-search-run check all arm on `opts.recorded` being passed, which the
|
|
23
23
|
// caller keys on the grid-spec's `connotation.disposition_required` stamp — a structural fact the DRIVER
|
|
24
24
|
// writes and no model can redraft away. They used to arm on a phrase match over the model's own prose
|
|
@@ -138,7 +138,7 @@ export const MEANING_ANGLES_RE = /^[ \t]*(?:[-*]\s+)?meaning angles\s*[:—-]\s*
|
|
|
138
138
|
// gap row. Verified on E2E's preserved R1 run of 2026-08-13 (test build 4353a74): 61 dictated, 61 receipts, 0 gaps, one
|
|
139
139
|
// dictated query unrecorded and one recorded query never dictated — the same angle, minus the quote. The
|
|
140
140
|
// merge threw `deterministic`, the ladder correctly refused to retry, and the run died at common-law after
|
|
141
|
-
// 26m15s with nothing delivered and the whole gather already paid for.
|
|
141
|
+
// 26m15s with nothing delivered and the whole gather already paid for. That class, inverted: the driver
|
|
142
142
|
// corrupted a well-formed model output.
|
|
143
143
|
//
|
|
144
144
|
// THE RULE: peel an outer pair only when both ends carry the SAME quote character AND the interior carries
|
|
@@ -469,7 +469,7 @@ export function livePassages(snippet) {
|
|
|
469
469
|
export function usableSnippet(s) { return quoteWeight(s) >= QUOTE_MIN; }
|
|
470
470
|
|
|
471
471
|
// ── — WHY A QUOTE DID NOT BIND, NOT MERELY THAT IT DID NOT ──────────────────────────────────────
|
|
472
|
-
// `quoteJoins` is a predicate and stays one: its answer is the gate's, and
|
|
472
|
+
// `quoteJoins` is a predicate and stays one: its answer is the gate's, and the comment thread withdrew
|
|
473
473
|
// loosening it. What was missing is the REASON, and the reason is the whole.
|
|
474
474
|
//
|
|
475
475
|
// R6 (Full country search into China) died after four dispatches, byte-identical, on
|
|
@@ -1326,7 +1326,7 @@ export function renderConnotationObligations(ob, { ledgerPath = "your half ledge
|
|
|
1326
1326
|
// The ordinal is 1-based and per-row, matching `receipt_index` on the form exactly — the seat is
|
|
1327
1327
|
// never asked to hold two different numbering schemes at once.
|
|
1328
1328
|
//
|
|
1329
|
-
// THE REAL IDS STAY.
|
|
1329
|
+
// THE REAL IDS STAY. That acceptance is that the gate cannot fail a seat for an obligation the
|
|
1330
1330
|
// tool result never named, and these are what a failure names. What was removed is the METAVARIABLE
|
|
1331
1331
|
// and the instruction to cite one — a model shown `R-XXXXXXXX` writes `R-RECEIPT`, whereas a model
|
|
1332
1332
|
// shown a list of real ids it is told not to type has nothing to pattern-match.
|
|
@@ -1493,7 +1493,7 @@ export function meaningSweepReceiptsInstruction({
|
|
|
1493
1493
|
//
|
|
1494
1494
|
// Keyed on the OBLIGATIONS now, which is the thing the sentence is actually about. Same family as
|
|
1495
1495
|
// the rest of this bundle: a decision taken on a surface token while the thing itself says the
|
|
1496
|
-
// opposite (
|
|
1496
|
+
// opposite (the axis outcome, the status code, the trailing default, the deleted arm).
|
|
1497
1497
|
...(mayOwnNoQueries ? ["Your half may own zero meaning queries. If so the grid tool lists you no"
|
|
1498
1498
|
+ " obligations, and recording nothing is the complete and correct outcome for you — do not invent"
|
|
1499
1499
|
+ " rulings and do not create any dispositions file."] : []),
|
|
@@ -1525,7 +1525,7 @@ export function renderDispositionTable(rows, ob) {
|
|
|
1525
1525
|
// The park broke that premise. A parked row is undecided AND the stage completes, so the document IS
|
|
1526
1526
|
// delivered — and `ruling` is null on it, so this filter silently dropped it. The reader received a
|
|
1527
1527
|
// table that looks complete, with the one obligation nobody could decide simply absent. No gap, no
|
|
1528
|
-
// marker, nothing to notice. That is
|
|
1528
|
+
// marker, nothing to notice. That is the lying receipt reached by the shortest path there is.
|
|
1529
1529
|
//
|
|
1530
1530
|
// Rendered as its OWN block rather than as rows of the ruling table, deliberately: an undecided row
|
|
1531
1531
|
// sitting in a column headed "Ruling" is read as a ruling, whatever the cell says.
|
|
@@ -1595,7 +1595,7 @@ const NO_POLICED_SECTION = "(no PR / reputational / connotation section)";
|
|
|
1595
1595
|
// that did not RUN is a different failure from a sweep that was not ruled on, and keeping them apart is
|
|
1596
1596
|
// what makes the warm lane safe (gateway.mjs WARM_ELIGIBLE_RE).
|
|
1597
1597
|
//
|
|
1598
|
-
//
|
|
1598
|
+
// That lesson survives the collapse and is the reason `form_damaged` is not folded into `no_ruling`:
|
|
1599
1599
|
// the gate must never destroy a completed clearance by conflating "did not do the work" with "wrote the
|
|
1600
1600
|
// answer in a shape that did not bind". Under the form the second class is a two-field correction the
|
|
1601
1601
|
// seat can finish, and the union means the rest of its work cannot be lost while it makes it.
|
|
@@ -1622,7 +1622,7 @@ const NO_POLICED_SECTION = "(no PR / reputational / connotation section)";
|
|
|
1622
1622
|
//
|
|
1623
1623
|
// It is its own reason and not a `detail` on `no_ruling` because the two have different remedies and the
|
|
1624
1624
|
// hint is routed on the token: "add a ruling" sent to a seat that has ruled is a closed loop.
|
|
1625
|
-
// CARRIES THE SAME ARGUMENT ONE CLAUSE FURTHER, ON THE EVIDENCE THAT
|
|
1625
|
+
// CARRIES THE SAME ARGUMENT ONE CLAUSE FURTHER, ON THE EVIDENCE THAT the FIX DID NOT REACH.
|
|
1626
1626
|
// R6 died three times on `no_ruling=75` over a 75-row form. The seat held a 144-line findings document it
|
|
1627
1627
|
// had just written, was told "75 rows carry no ruling", saw 75 rulings in the document in front of it, and
|
|
1628
1628
|
// changed nothing. It had written THE WRONG ARTIFACT: the disposition form was the deliverable and the
|
|
@@ -1631,7 +1631,7 @@ const NO_POLICED_SECTION = "(no PR / reputational / connotation section)";
|
|
|
1631
1631
|
// findable. `no_ruling` fires identically whether a row carries no ruling token, a ruling with no
|
|
1632
1632
|
// receipt, or NOTHING AT ALL because the form was never opened, and those have different remedies.
|
|
1633
1633
|
//
|
|
1634
|
-
// THE SPLIT IS STRICTLY NARROWER, exactly as
|
|
1634
|
+
// THE SPLIT IS STRICTLY NARROWER, exactly as the was. Every state below failed before and fails now;
|
|
1635
1635
|
// `no_ruling` survives as the residual so nothing can fall out of the vocabulary. The whole-population
|
|
1636
1636
|
// collapse states of the retired hand-edited form (`form_untouched`, `form_unparseable`) died with the
|
|
1637
1637
|
// form path — their subject matter is carried by the call audit's own states below, read from the run's
|
|
@@ -1852,7 +1852,7 @@ export function obligationRows(ob, { spotChecks = QUOTE_SPOT_CHECKS } = {}) {
|
|
|
1852
1852
|
// `segmentBinding` through the same `snippetSegments`. One derivation, both ends — the display and the
|
|
1853
1853
|
// check cannot disagree, which they would the moment either recomputed its own split.
|
|
1854
1854
|
//
|
|
1855
|
-
//
|
|
1855
|
+
// That defect is the one this avoids, arriving from the other direction: a seat ordered to set a
|
|
1856
1856
|
// field it was never shown the values for. `receipt_index` is safe precisely because the candidate list
|
|
1857
1857
|
// is in front of the seat; a segment ordinal is only safe on the same terms.
|
|
1858
1858
|
//
|
|
@@ -1917,7 +1917,7 @@ export function obligationRows(ob, { spotChecks = QUOTE_SPOT_CHECKS } = {}) {
|
|
|
1917
1917
|
/**
|
|
1918
1918
|
* Find meaning-sweep obligations the seat has not ruled on, and a dictated sweep that never ran.
|
|
1919
1919
|
*
|
|
1920
|
-
* ARMED ON DATA, NEVER ON PROSE (
|
|
1920
|
+
* ARMED ON DATA, NEVER ON PROSE (owner's ruling 2026-08-04). `opts.recorded` being passed is the
|
|
1921
1921
|
* whole arming condition and it is UNCHANGED by — the caller keys it on the grid-spec's own
|
|
1922
1922
|
* `connotation.disposition_required` stamp, a structural fact the DRIVER writes and no model can redraft
|
|
1923
1923
|
* away. Two consequences, both deliberate and both load-bearing:
|
|
@@ -2066,7 +2066,7 @@ export function findConnotationViolations(commonLawContent, prRiskCount = 0, { r
|
|
|
2066
2066
|
//
|
|
2067
2067
|
// The order is load-bearing: this is reached ONLY when the row is otherwise ruled, so a genuinely
|
|
2068
2068
|
// unruled row can never be reported as a quote problem. `quote_unbound` cannot mask missing work —
|
|
2069
|
-
// it is strictly narrower than the state it splits off from, which is what
|
|
2069
|
+
// it is strictly narrower than the state it splits off from, which is what the warning demands.
|
|
2070
2070
|
const otherwiseRuled = s
|
|
2071
2071
|
&& RULING_SET.has(String(s.ruling ?? "").trim().toLowerCase())
|
|
2072
2072
|
&& String(s.note ?? "").trim()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
|
-
// contract-audit.mjs — the machinery behind
|
|
3
|
+
// contract-audit.mjs — the machinery behind the E1, E2 and E3 checks.
|
|
4
4
|
//
|
|
5
5
|
// PURE and OFFLINE, like coverage-ledger.mjs and findings-model.mjs: it reads source text and the
|
|
6
6
|
// declarations, and it computes. Nothing here runs on a clearance — no pipeline path imports it and no
|
|
@@ -92,7 +92,7 @@ export function arm1Unaccounted(stages) {
|
|
|
92
92
|
/**
|
|
93
93
|
* ARM 2 — a declared element no validator token speaks about. A RATCHET, not a red build.
|
|
94
94
|
*
|
|
95
|
-
* The owner's ruling (
|
|
95
|
+
* The owner's ruling (2026-08-13) is four conditions, and they are the ruling rather than
|
|
96
96
|
* suggestions: the baseline is PER STAGE and carries the ELEMENT NAMES (it is the audit object, not a
|
|
97
97
|
* bare count); CI fails on any per-stage INCREASE so a new hole cannot hide behind a fix elsewhere; arm 1
|
|
98
98
|
* is exempt from the ratchet; and wave 1's moves are expected to move the number.
|
|
@@ -157,10 +157,10 @@ const ARROW_TOKEN_RE = /=>\s*[`"']([a-z][a-z0-9]*(?:_[a-z0-9]+)+)/g;
|
|
|
157
157
|
// nothing re-deriving them — `acceptMatterFrame` mints eight tokens against a row documenting three.
|
|
158
158
|
const REASON_TOKEN_RE = /reason:\s*[`"']([a-z][a-z0-9]*(?:_[a-z0-9]+)+)/g;
|
|
159
159
|
|
|
160
|
-
//
|
|
160
|
+
// A CITED SITE MUST BE A MINT. The extractor records the FIRST line a pattern matched, and the
|
|
161
161
|
// patterns read comment text as readily as code: `no_status` was cited at coverage-form.mjs:802, the
|
|
162
162
|
// JSDoc `@returns {Array<{reason:"no_status"|"form_damaged", …` annotation seventeen lines above the line
|
|
163
|
-
// that writes it. Every
|
|
163
|
+
// that writes it. Every such ruling cites its mint, so a citation drawn from a sentence about the code
|
|
164
164
|
// is a ruling about a sentence.
|
|
165
165
|
//
|
|
166
166
|
// Comment-ONLY lines, never a trailing `//` after code — a token minted on a line that also carries a
|
|
@@ -363,7 +363,7 @@ export function stageSourceBlocks(stagesSource) {
|
|
|
363
363
|
}
|
|
364
364
|
|
|
365
365
|
/**
|
|
366
|
-
* MECHANICAL **AND** UNSPOKEN-FOR — the highest-value target set for
|
|
366
|
+
* MECHANICAL **AND** UNSPOKEN-FOR — the highest-value target set for the moves.
|
|
367
367
|
*
|
|
368
368
|
* An element in this set is not the model's judgment AND no validator polices it: nothing catches it
|
|
369
369
|
* going wrong, and nothing about it needs a model. Every one is a candidate for the moves, and the set
|
|
@@ -90,7 +90,7 @@ export function knownToolNames() {
|
|
|
90
90
|
* The intersection is fail-closed on the PROVIDER axis — signa exposes two register tools where
|
|
91
91
|
* corsearch exposes eight — and it duly produced 19 hits saying the register doctrine orders
|
|
92
92
|
* `register_enumerate`, which signa does not carry. Every one of those is true and none of them is
|
|
93
|
-
*: they are findings about a vendor's capability envelope, which
|
|
93
|
+
*: they are findings about a vendor's capability envelope, which the deferral contract already
|
|
94
94
|
* owns and states on the coverage form. Folding them in here would bury the grant/doctrine mismatch
|
|
95
95
|
* this contract exists for under a vendor-capability report nobody asked E12 for.
|
|
96
96
|
*/
|
|
@@ -101,9 +101,9 @@ export function grantedToolsFor(stage) {
|
|
|
101
101
|
return out;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
// ──
|
|
104
|
+
// ── the members: two were known, TEN are real ────────────────────────────────────────────────────
|
|
105
105
|
//
|
|
106
|
-
// E3's precedent, and
|
|
106
|
+
// E3's precedent, and the rule under it: "a lint that greenlights every existing hole certifies the
|
|
107
107
|
// problem" — so the lint holds the line and the BACKLOG names what is already there, each entry saying
|
|
108
108
|
// which move removes it. rejects "a whitelist of the two known members as the route to green", and
|
|
109
109
|
// this is not that: it is the measured population, which is FIVE TIMES the two members was filed
|
|
@@ -209,7 +209,7 @@ export function contracts() {
|
|
|
209
209
|
//
|
|
210
210
|
// SCOPED TO THE BACKTICKED FIELD NAME, and the loose form was measured before choosing: `/\banchor\b/`
|
|
211
211
|
// fires 52 times across the served corpus against 10 for this pattern, because `anchor` is also a link
|
|
212
|
-
// anchor (
|
|
212
|
+
// anchor (the subject) and a variant anchor. A pattern whose extra 42 hits would have to be
|
|
213
213
|
// excused is a pattern kept green by exemptions rather than by fixes — the whitelist route
|
|
214
214
|
// forbids, arriving as a regex instead of a path filter. `anchor-owed` is in because the corrective
|
|
215
215
|
// ladder ORDERS it in exactly that spelling.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// and computes. Nothing here runs on a clearance. The impure edge — building the corpus out of the
|
|
7
7
|
// tracked tree — is scripts/contract-dictation-scan.mjs, and the split is not tidiness:
|
|
8
8
|
//
|
|
9
|
-
//
|
|
9
|
+
// That hardest acceptance is "plant a divergence in a NEW authoring layer — the check must find it
|
|
10
10
|
// STRUCTURALLY, not because the layer was enumerated". A checker that reads the tree itself can only
|
|
11
11
|
// be tested by writing a file into the working tree, which is dirty, fights the repo-hygiene guards,
|
|
12
12
|
// and — because `git ls-files` is the corpus — may not even be visible to the check being tested.
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
//
|
|
53
53
|
// Whether `/` opens a regex or divides is decided by the previous significant character, which is the
|
|
54
54
|
// standard heuristic and is exact for everything in this tree (a `/` after a value divides; after
|
|
55
|
-
// `(
|
|
55
|
+
// `(= : [ ! & | ? { } ; return` it opens a pattern).
|
|
56
56
|
const REGEX_PRECEDERS = new Set(["(", ",", "=", ":", "[", "!", "&", "|", "?", "{", "}", ";", "\n", "+", "-", "*", "%", "<", ">", "~", "^"]);
|
|
57
57
|
|
|
58
58
|
/**
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// E3 is "structure is returned, never emitted as text": CI fails a stage message containing a literal
|
|
6
6
|
// JSON skeleton, an "EXACTLY these keys" clause, or a dictated line shape a parser re-parses. 74 such
|
|
7
7
|
// sites exist today across the 19 stages and the skill files they read, so E3 cannot simply go red —
|
|
8
|
-
// and it must not simply go green either.
|
|
8
|
+
// and it must not simply go green either. That judging note applies verbatim:
|
|
9
9
|
//
|
|
10
10
|
// "a lint that greenlights every existing hole certifies the problem."
|
|
11
11
|
//
|
|
@@ -390,7 +390,7 @@ export const E3_BACKLOG = [
|
|
|
390
390
|
kind: "dictated-line-shape",
|
|
391
391
|
// ── (a) THE ORIGINAL SUBJECT WAS DELETED BY DESIGN — DISCHARGED, NOT FAILED. This row quoted
|
|
392
392
|
// "ARM 2 — a run with NO coverage form … Write one row per coverage unit | Coverage unit | Status |
|
|
393
|
-
// Reason |". M6 (
|
|
393
|
+
// Reason |". M6 (2026-08-14) deleted the code arm and (cdf38676) deleted this
|
|
394
394
|
// skill-file half two days later — exactly the both-sites deletion this row's removedByMove
|
|
395
395
|
// demanded. `git grep "ARM 2"` on the skill file returns nothing. Its evidence sat in
|
|
396
396
|
// E3_EVIDENCE_UNRESOLVED from the day the checker landed; per the ruling the row is
|
|
@@ -435,7 +435,7 @@ export const E3_BACKLOG = [
|
|
|
435
435
|
reparsedBy: "driver/verify.mjs validators.frameDiff + driver/pipeline.mjs runSupplementalSweeps (the parser REFUSES a firing variant directive that dictates nothing dispatchable)",
|
|
436
436
|
removedByMove: "NOTHING ON THE #850 PLAN REMOVES THIS",
|
|
437
437
|
},
|
|
438
|
-
// DISCHARGED by
|
|
438
|
+
// DISCHARGED by the third conversion. The row described SKILL.md's "Then ALSO save the STRUCTURED
|
|
439
439
|
// diff … a JSON OBJECT with EXACTLY these keys" skeleton, and that order is gone: the seat calls
|
|
440
440
|
// `record_frame_diff` and the driver serializes the object. What replaced it in the doc is a field list
|
|
441
441
|
// for a typed call, which is not a dictated skeleton — the schema owns those names, and a seat cannot
|
|
@@ -791,7 +791,7 @@ export const E3_BACKLOG = [
|
|
|
791
791
|
// The third is the one worth pausing on: its `removedByMove` said "M2 — the quote half only; the closed
|
|
792
792
|
// three-file enum survives". The enum did not survive the transport, because the transport removed the
|
|
793
793
|
// FIELD it lived in rather than validating it — a schema that cannot express a bad value beats a
|
|
794
|
-
// validator that rejects one, which is
|
|
794
|
+
// validator that rejects one, which is the ruling applied one lane over.
|
|
795
795
|
];
|
|
796
796
|
|
|
797
797
|
/** Entries with no move on the plan that removes them. */
|
|
@@ -804,7 +804,7 @@ export const E3_UNPLANNED = E3_BACKLOG.filter((e) => e.removedByMove === "NOTHIN
|
|
|
804
804
|
* The registry's failure mode was that a MOVE could delete a dictation and leave the row: the count
|
|
805
805
|
* then overstates the work, and the next agent spends a conversion slot on a hole already filled. Two
|
|
806
806
|
* instances existed when this was written — M6's register-digest arm (deleted 2026-08-14, row survived)
|
|
807
|
-
* and synthesis's disposition list (
|
|
807
|
+
* and synthesis's disposition list (deleted the same morning by the agent adding this check).
|
|
808
808
|
* Both are gone; this list is what remains.
|
|
809
809
|
*
|
|
810
810
|
* A BLANKET ASSERTION WAS THE OBVIOUS BUILD AND IT WOULD HAVE BEEN NOISE. Measured before choosing:
|
|
@@ -865,7 +865,7 @@ export const E3_EVIDENCE_UNRESOLVED = [
|
|
|
865
865
|
/**
|
|
866
866
|
* THE PER-SURFACE CENSUS, PINNED EXACTLY IN BOTH DIRECTIONS.
|
|
867
867
|
*
|
|
868
|
-
*
|
|
868
|
+
* That urgency claim is that `tool-response` GROWS — one surface at a time, each move taking a row out
|
|
869
869
|
* of sight while the count stays plausible. A ceiling on that number would fail upward exactly as the E3
|
|
870
870
|
* ceiling did: a surface that shrank would pass silently and leave room for a move nobody
|
|
871
871
|
* recorded. So this is exact. A migration that moves a row from `stage-message` to `tool-response` turns
|
|
@@ -155,7 +155,7 @@ export const VOCABULARY = [
|
|
|
155
155
|
// red on any that no row covers. That is the census working the way the previous conversion's gap
|
|
156
156
|
// taught it to — skeptic's nine tokens were raised for two conversions before anything could see them.
|
|
157
157
|
{ token: "reportoverview_", stages: ["report-overview"], site: "driver/report-overview-record.mjs acceptReportOverview", family: "driver/report-overview-record.mjs", dynamic: "D3" },
|
|
158
|
-
// Conversion 5's transport family. Declared in the SAME commit as the module —
|
|
158
|
+
// Conversion 5's transport family. Declared in the SAME commit as the module — the extractor reads
|
|
159
159
|
// the acceptance boundary, so `report-card-record.mjs` is read for the `reason:` shape and the E2
|
|
160
160
|
// soundness tripwire sees every `reportcard_*` token the moment it exists.
|
|
161
161
|
{ token: "reportcard_", stages: ["report-card"], site: "driver/report-card-record.mjs acceptReportCard", family: "driver/report-card-record.mjs", dynamic: "D3" },
|
|
@@ -396,7 +396,7 @@ export const TRIPWIRE_OUT_OF_SCOPE = [
|
|
|
396
396
|
* nothing.
|
|
397
397
|
*
|
|
398
398
|
* WHY NOT A VOCABULARY ROW. A row asserts "this stage emits this token", and for all nineteen of these
|
|
399
|
-
* that assertion is false.
|
|
399
|
+
* that assertion is false. its own judging condition forbids writing it: *no row claims a stage emits
|
|
400
400
|
* a token that stage cannot emit*.
|
|
401
401
|
*
|
|
402
402
|
* WHY NOT A BARE EXEMPTION. An out-of-scope rule excuses a token and asserts nothing, so it cannot fail.
|
|
@@ -541,7 +541,7 @@ export const COVERED_SOURCES = [
|
|
|
541
541
|
*/
|
|
542
542
|
|
|
543
543
|
/**
|
|
544
|
-
* The tables whose rows carry a citation — the population
|
|
544
|
+
* The tables whose rows carry a citation — the population the symbol arms walk.
|
|
545
545
|
*
|
|
546
546
|
* Named once, here, rather than retyped in the test: a fifth table added later and missed by a hand-typed
|
|
547
547
|
* list would be unchecked while every arm stayed green. The test asserts this map's own membership too,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// corrections-feedforward.mjs — the reviewer's flags reach the corrective pass as DATA, and the recheck
|
|
4
4
|
// is handed what the driver OBSERVED rather than being asked to re-read two documents.
|
|
5
5
|
//
|
|
6
|
-
//
|
|
6
|
+
// That first acceptance criterion is that a BLOCKING-verdict full re-run becomes structurally
|
|
7
7
|
// impossible. `docs/design/clearance-critical-path.md` §4 bounds how that can be built: refutation cannot
|
|
8
8
|
// run before synthesis (`stageInputs["narrative-refutation"]` includes the narrative, and dependencyOrder
|
|
9
9
|
// derives the edge mechanically), so the lever available is the CHANNEL the reviewer already writes into
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
// written by runDigest on every pass that will actually run, is already the arming key for the off-enum
|
|
15
15
|
// gate, and is already declared in stage-context.VALIDATOR_SIDECARS. adds `form_required: true` and
|
|
16
16
|
// `form_path` to it rather than minting a second stamp, so there is one answer to "was a form required
|
|
17
|
-
// on this run" and archived runs — which carry either no sentinel at all or a pre- one with no
|
|
17
|
+
// on this run" and archived runs — which carry either no sentinel at all or a pre-change one with no
|
|
18
18
|
// `form_required` — leave the whole coverage-form arm OFF and never flip a replay verdict.
|
|
19
19
|
//
|
|
20
|
-
// THE WRITE ORDER IS LOAD-BEARING AND IT IS STAMP FIRST.
|
|
20
|
+
// THE WRITE ORDER IS LOAD-BEARING AND IT IS STAMP FIRST. That form write is best-effort and only
|
|
21
21
|
// note()s on failure, and its own comment names the outcome it fears: "an absence reading as a pass,
|
|
22
22
|
// which is the one outcome this file exists to refuse". It is reachable — a full disk fails as "artifact
|
|
23
23
|
// absent", not as a disk error. Writing the FORM first and the stamp second reproduces that hole: a
|
package/driver/coverage-form.mjs
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
// PURE — no node imports, so it tests offline, exactly like coverage-ledger.mjs and connotation-search.mjs
|
|
23
23
|
// (whose headers state the same rule for the same reason). `shortId` is IMPORTED from connotation-search
|
|
24
24
|
// rather than re-implemented: it is a generic fnv1a64 id stamp, and a second copy of an id function is
|
|
25
|
-
// two calculations kept in step, which is
|
|
25
|
+
// two calculations kept in step, which is the defect.
|
|
26
26
|
//
|
|
27
27
|
// ONE CALCULATION, NOT TWO. `openBlocksByAxis` (register-plan.mjs) computes the open crowd blocks — the
|
|
28
28
|
// same C2..C7 conditions the deleted gate computed, unchanged — and it is called EXACTLY ONCE per pass,
|
|
@@ -108,7 +108,7 @@ export const SEAT_ROW_FIELDS = Object.freeze(["kind", "axis", "unit", "status",
|
|
|
108
108
|
/**
|
|
109
109
|
* WHAT A SEAT ROW OWES, written INTO the accumulator (and told to the seat in the dispatch brief and
|
|
110
110
|
* the tool's own refusals — the seat no longer opens this file). The allowed axis set is not prose
|
|
111
|
-
* about the file, it is a field OF the file:
|
|
111
|
+
* about the file, it is a field OF the file: the finding was "a fact obeyed as a failure and
|
|
112
112
|
* ignored as an input", and a closed vocabulary the seat must hit and is never shown is exactly that.
|
|
113
113
|
* PURE data.
|
|
114
114
|
*
|
|
@@ -474,7 +474,7 @@ export function coverageFormRows({ skeleton = [], activeAxes = null, plan = null
|
|
|
474
474
|
// the receipt should be able to tell which of the two a run carried.
|
|
475
475
|
deferred_offices: (Array.isArray(plan?.deferred_coverage) ? plan.deferred_coverage : []).length,
|
|
476
476
|
// AN ABSENCE IS A FINDING, RECORDED IN THE ARTIFACT. An axis whose band would not parse
|
|
477
|
-
// contributes NO open-block rows, exactly as the pre- gate's per-axis catch did — a band
|
|
477
|
+
// contributes NO open-block rows, exactly as the pre-change gate's per-axis catch did — a band
|
|
478
478
|
// parse defect is refused one stage earlier by validators.registerUnit. Naming the axes here
|
|
479
479
|
// means the gap is visible on the form a reader opens instead of being a silent zero.
|
|
480
480
|
bands_unreadable: [...(bandsUnreadable ?? [])],
|
|
@@ -568,7 +568,7 @@ export function coverageAbsenceGaps(parsed) {
|
|
|
568
568
|
}
|
|
569
569
|
|
|
570
570
|
/**
|
|
571
|
-
* The sentence a lawyer reads where the ledger would be. NEVER an empty section:
|
|
571
|
+
* The sentence a lawyer reads where the ledger would be. NEVER an empty section: the lesson one lane
|
|
572
572
|
* over — a heading with nothing under it asserts an absence it cannot explain, and a reader cannot tell
|
|
573
573
|
* it from a run that swept nothing. This says which material was missing and, therefore, exactly what
|
|
574
574
|
* the rest of the report does and does not rest on.
|
|
@@ -108,7 +108,7 @@ export const CROWD_RULING_UNIT_GRAMMAR = `<axis> / ${CROWD_RULING_TOKEN} (<N> me
|
|
|
108
108
|
// was accepted, carried through the union, passed the coverage gate, and blocked the run three gates
|
|
109
109
|
// later over a ruling the seat had made. Both readers now call this, so call time and delivery time
|
|
110
110
|
// cannot disagree about what a count is. That is the point of the function, not a tidiness: two copies
|
|
111
|
-
// of this regex would let the refusal and the block drift apart, which is
|
|
111
|
+
// of this regex would let the refusal and the block drift apart, which is the defect.
|
|
112
112
|
//
|
|
113
113
|
// THREE ANSWERS, and the middle one is the whole reason the return is not a boolean:
|
|
114
114
|
// null — the cell rules no crowd. Every other coverage row, and the overwhelming majority.
|
|
@@ -500,11 +500,11 @@ export function parseCoverageLedgerJson(raw, { allowedAxes = REGISTER_AXES, acti
|
|
|
500
500
|
return rows;
|
|
501
501
|
}
|
|
502
502
|
|
|
503
|
-
// ──
|
|
503
|
+
// ── `renderCoverageLedgerJson` IS DELETED, AND THE DIRECTION WITH IT ─────────────────────────
|
|
504
504
|
//
|
|
505
505
|
// Map #3 code-derived this JSON FROM the model's `## Coverage ledger` prose, which was an improvement
|
|
506
506
|
// (the model stopped authoring the JSON) that left the real source of truth where it was: a markdown
|
|
507
|
-
// table the model wrote.
|
|
507
|
+
// table the model wrote. The DRIVER-WRITTEN coverage form is the source and both the table
|
|
508
508
|
// and this JSON are renders of it — coverage-form.renderCoverageLedgerJsonFromForm. There is no
|
|
509
509
|
// prose→JSON direction left to keep, and keeping one would be the legacy path this build has none of.
|
|
510
510
|
//
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
// is. This file mints no row, no id, no unit label and no definition of "settled": `coverageFormRows`
|
|
22
22
|
// and `rowIsSettled` both come from coverage-form.mjs — the same code the GATE judges with. A union that
|
|
23
23
|
// preserved a status the gate would refuse, or dropped one it would accept, would make the outstanding
|
|
24
|
-
// count mean two different things in two places, which is
|
|
24
|
+
// count mean two different things in two places, which is the defect exactly.
|
|
25
25
|
|
|
26
26
|
import { coverageFormRows, rowIsSettled, seatFields, formRowKey, seatRows, SEAT_ROW_CONTRACT } from "./coverage-form.mjs";
|
|
27
27
|
|