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
|
@@ -102,7 +102,7 @@ const engineMaxBufferChars = () => Math.max(1024, Number(process.env.CLEAROTRON_
|
|
|
102
102
|
// `gemini-flash: "sonnet"`, `deepseek-v4-pro: "opus"` and `azure: "sonnet"`, and the fall-through below
|
|
103
103
|
// mapped ANY unrecognised alias to "sonnet". So `--model gemini` ran sonnet while the telemetry logged
|
|
104
104
|
// `google/gemini-3.1-pro-preview` (gateway stamps `resolveModel(<requested alias>)`), and every
|
|
105
|
-
// attribution downstream of that row — the A/B arm, the token rollup,
|
|
105
|
+
// attribution downstream of that row — the A/B arm, the token rollup, the billing classes — was
|
|
106
106
|
// keyed to a model that never ran. Nothing said so, because a substitution has no error to report.
|
|
107
107
|
//
|
|
108
108
|
// The four cross-provider aliases were already dead before this change: the model-failover chain was
|
|
@@ -237,7 +237,7 @@ export function absolutizeSkillRefs(message, skillsDir, resolve = null) {
|
|
|
237
237
|
//
|
|
238
238
|
// ANTHROPIC-ONLY, AND MEASURED RATHER THAN ASSUMED. The obvious next step is to apply the same rule to
|
|
239
239
|
// openai-agent's `--add-dir` (buildCodexArgs pushes the identical root), and it would accomplish nothing:
|
|
240
|
-
// that engine spawns with `cwd = resolveSpawnCwd({cwd, runDir})` — the RUN DIR (
|
|
240
|
+
// that engine spawns with `cwd = resolveSpawnCwd({cwd, runDir})` — the RUN DIR (deliberately) —
|
|
241
241
|
// under `--sandbox workspace-write`, which makes cwd a writable root on its own. Dropping the flag there
|
|
242
242
|
// would remove a grant the seat still holds by another door and let this comment claim an isolation the
|
|
243
243
|
// engine does not have. Codex-side isolation is a cwd question, and a separate decision.
|
|
@@ -377,7 +377,7 @@ export function writeBoundarySettings({ skillsRoots = [], profilesDir = null, ru
|
|
|
377
377
|
return JSON.stringify({
|
|
378
378
|
hooks: {
|
|
379
379
|
PreToolUse: [{
|
|
380
|
-
//
|
|
380
|
+
// Bash is in the matcher because seats have it and it walked past this hook entirely.
|
|
381
381
|
// What the Bash arm can and cannot do is stated at its declaration in deny-authority-write.mjs;
|
|
382
382
|
// it is a detector, and naming it here does not make it a boundary.
|
|
383
383
|
matcher: "Write|Edit|MultiEdit|NotebookEdit|Bash",
|
|
@@ -401,7 +401,7 @@ export function synthesizeEnvelope({ resultEvent, usage, killed }) {
|
|
|
401
401
|
|
|
402
402
|
export const anthropicAgentEngine = {
|
|
403
403
|
name: "anthropic-agent",
|
|
404
|
-
//
|
|
404
|
+
// WHAT THIS ENGINE GUARANTEES ABOUT SEAT WRITES, said out loud in the run record.
|
|
405
405
|
// `deny-authority-write.mjs` is a `claude -p` PreToolUse hook, so it refuses a seat's writes into the
|
|
406
406
|
// doctrine tree, the profile store and `<runDir>/_driver/` at the moment of the write. That is a real
|
|
407
407
|
// boundary and this engine has it.
|
|
@@ -409,7 +409,7 @@ export const anthropicAgentEngine = {
|
|
|
409
409
|
async runTurn({ message, model, thinking, timeoutSec, resumeRef, mcpConfig, allowedTools, cwd, skillsDir, skillsGrantRoots, profilesDir, resolveSkill, runDir, seatWrites = null, stallSec, progressFiles } = {}) {
|
|
410
410
|
if (!message) throw new Error("anthropic-agent.runTurn: message is required");
|
|
411
411
|
const { args, input, grantNote } = buildClaudeArgs({ message, model, thinking, resumeRef, mcpConfig, allowedTools, cwd, skillsDir, skillsGrantRoots, profilesDir, resolveSkill, runDir, seatWrites });
|
|
412
|
-
//
|
|
412
|
+
// the cross-check speaks. Driver stderr is what an operator reads, and it is where the other
|
|
413
413
|
// drift notices in this engine already land ([ledger], [env-aliases], [queue-watch]).
|
|
414
414
|
if (grantNote) process.stderr.write(`${grantNote}\n`);
|
|
415
415
|
const t0 = Date.now();
|
|
@@ -435,7 +435,7 @@ export const anthropicAgentEngine = {
|
|
|
435
435
|
// inheriting that would load the dev-assistant instructions into every stage (context pollution +
|
|
436
436
|
// cost). It also avoids the EACCES when the inherited cwd is unreadable by the runner's user.
|
|
437
437
|
//
|
|
438
|
-
//
|
|
438
|
+
// cwd is a granted WRITE root here (file tools are confined to cwd + --add-dir), so it is
|
|
439
439
|
// the run dir when there is one. See resolveSpawnCwd in common.mjs for why, and for what it deletes.
|
|
440
440
|
const spawnCwd = resolveSpawnCwd({ cwd, runDir });
|
|
441
441
|
// stdin is a PIPE (not "ignore"): the prompt rides stdin, not a `-p` argv element, so it is never
|
|
@@ -446,7 +446,7 @@ export const anthropicAgentEngine = {
|
|
|
446
446
|
// Detached makes claude its own process-group leader, so the watchdog's kills reach the whole tree.
|
|
447
447
|
try { child = spawn(claudeBin(), args, { stdio: ["pipe", "pipe", "pipe"], cwd: spawnCwd, env: spawnEnv(), detached: true }); }
|
|
448
448
|
catch (e) { return resolve(errResult(t0, e, resumeRef)); }
|
|
449
|
-
//
|
|
449
|
+
// THE SECOND SPAWN PATH, and it has to record too. This engine does not go
|
|
450
450
|
// through runStreamingChild; wiring one and assuming the other follows is the exact defect shape
|
|
451
451
|
// 2122 was raised on the same day (the demo banner reached the clearance renderer and not the
|
|
452
452
|
// knockout one). Best effort, never fatal.
|
|
@@ -525,7 +525,7 @@ export const anthropicAgentEngine = {
|
|
|
525
525
|
// (A repeat of an already-recorded path is NOT truncation — nothing is lost.)
|
|
526
526
|
const READS_CAP = 500;
|
|
527
527
|
let readsTruncated = false;
|
|
528
|
-
// ──
|
|
528
|
+
// ── THE TWO NUMBERS THAT MAKE A SLOW TURN A DIAGNOSIS RATHER THAN AN INFERENCE ────────
|
|
529
529
|
//
|
|
530
530
|
// `tokensPerSec` says so itself: "the denominator still contains the turn's own tool waits… it
|
|
531
531
|
// records the ratio; it does not diagnose it." Establishing that a slow stage was WAITING rather
|
|
@@ -543,7 +543,7 @@ export const anthropicAgentEngine = {
|
|
|
543
543
|
let toolCalls = 0;
|
|
544
544
|
let toolWaitMs = 0;
|
|
545
545
|
let toolAskedAt = null;
|
|
546
|
-
//
|
|
546
|
+
// WHAT THE WAIT IS MADE OF, keyed by the tool(s) that caused it.
|
|
547
547
|
//
|
|
548
548
|
// The total alone cannot answer the question it was collected for. "Exclude tool wait from the kill
|
|
549
549
|
// clock because a turn waiting on a tool is the harness working" is TRUE of `register_execute_plan`
|
|
@@ -554,7 +554,7 @@ export const anthropicAgentEngine = {
|
|
|
554
554
|
// sorted set joined by "+". Every millisecond is attributed exactly once and the values sum to
|
|
555
555
|
// `toolWaitMs` — a per-name split would double-count a concurrent ask and quietly break that identity.
|
|
556
556
|
let toolAskedNames = null;
|
|
557
|
-
//
|
|
557
|
+
// WHICH CHUNK an ask arrived in. Every line in one stdout chunk is parsed in
|
|
558
558
|
// one synchronous loop, so they all share a single Date.now(). If an ask and its result land in
|
|
559
559
|
// the SAME chunk, the parent was not running between them and the gap it measures is 0 — for a
|
|
560
560
|
// wait that really happened. Reproduced deterministically by blocking this process's event loop:
|
|
@@ -595,7 +595,7 @@ export const anthropicAgentEngine = {
|
|
|
595
595
|
const openAsks = []; // ask records still outstanding, oldest first
|
|
596
596
|
const askById = new Map(); // tool_use_id → its ask record
|
|
597
597
|
let periodStart = null; // when the current outstanding-SET period began
|
|
598
|
-
let periodChunk = null; // the chunk it began in —
|
|
598
|
+
let periodChunk = null; // the chunk it began in — the unmeasurable flag
|
|
599
599
|
let anonSeq = 0; // ids are on the wire, but never assume: synthesize if absent
|
|
600
600
|
const periodKey = () =>
|
|
601
601
|
[...new Set(openAsks.flatMap((r) => r.names))].sort().join("+");
|
|
@@ -709,7 +709,7 @@ export const anthropicAgentEngine = {
|
|
|
709
709
|
progress();
|
|
710
710
|
}
|
|
711
711
|
else if (ev.type === "user") {
|
|
712
|
-
//
|
|
712
|
+
// the result of the ask above. Only counted when an ask is outstanding, so a `user`
|
|
713
713
|
// event with no preceding tool_use adds nothing rather than charging the turn for a gap it
|
|
714
714
|
// never spent waiting.
|
|
715
715
|
// Which ask is this the result OF? The id on the wire answers it. Falling back to the
|
|
@@ -776,7 +776,7 @@ export const anthropicAgentEngine = {
|
|
|
776
776
|
const watchdog = setInterval(() => {
|
|
777
777
|
artifactProgress();
|
|
778
778
|
const now = Date.now();
|
|
779
|
-
//
|
|
779
|
+
// THE STARTUP DEBT. tracker issue 1692 widened the deadline below until the first byte but left this
|
|
780
780
|
// clock's ORIGIN at spawn, so the startup interval stayed on the meter: the moment the grace let
|
|
781
781
|
// go, progIdle already WAS the whole boot, and any NOPROG shorter than startup had expired before
|
|
782
782
|
// the child was observed at all. The kill then landed on the next tick, before the ask could reach
|
|
@@ -784,7 +784,7 @@ export const anthropicAgentEngine = {
|
|
|
784
784
|
// Releasing a clock is not starting one: the first byte is this clock's origin, not its green light.
|
|
785
785
|
const progFrom = firstOutputAt === null ? lastProgress : Math.max(lastProgress, firstOutputAt);
|
|
786
786
|
const idle = now - lastMove, progIdle = now - progFrom;
|
|
787
|
-
// ──
|
|
787
|
+
// ── STARTUP IS NEITHER SILENCE NOR WORK ──────────────────────────────────────────────
|
|
788
788
|
// Every clock here USED TO start at SPAWN, so until the child's first byte they were all timing
|
|
789
789
|
// process startup: an idle clock that had not yet seen silence, and an active clock that had not
|
|
790
790
|
// yet seen work. Past tense deliberately — tracker issue 1780 finished this, and the sentence stayed true of
|
|
@@ -800,7 +800,7 @@ export const anthropicAgentEngine = {
|
|
|
800
800
|
// kill it NOW, well below the wall, and record it as a STALL — never let the ceiling raise turn
|
|
801
801
|
// into extended stall burn, and never let this kill read as "the stage needed more time".
|
|
802
802
|
else if (progIdle >= (started ? NOPROG : Math.max(NOPROG, GRACE))) { stallKill = true; noProgressKill = true; killed = true; killTree(); }
|
|
803
|
-
// ──
|
|
803
|
+
// ── THE CEILING MEASURES ACTIVE TIME, NOT ELAPSED ────────────────────────────────────
|
|
804
804
|
//
|
|
805
805
|
// Owner ruling: "there isnt such thing as a hung model. it always delivers something or fails."
|
|
806
806
|
// So this ceiling exists for the harness's own failure modes, not to budget the model, and a turn
|
|
@@ -824,7 +824,7 @@ export const anthropicAgentEngine = {
|
|
|
824
824
|
// quantity: a long turn has three causes — tool latency, a generation stall, and sheer VOLUME
|
|
825
825
|
// (one healthy stage ran 40.9 minutes at a normal rate producing 186k tokens) — and nothing that
|
|
826
826
|
// keys on elapsed can tell them apart.
|
|
827
|
-
//
|
|
827
|
+
// measured from the FIRST BYTE, never from spawn. Startup is not active time either, and
|
|
828
828
|
// against a tight pin it was the whole budget — a 900ms spawn hit a 500ms ceiling having done
|
|
829
829
|
// nothing at all, and the turn died carrying `hardWall` with zero tool calls to explain it.
|
|
830
830
|
else if (started && activeElapsedMs({ wall: now - firstOutputAt, toolWaitMs, toolAskedAt, now }) >= hardMs) {
|
|
@@ -840,7 +840,7 @@ export const anthropicAgentEngine = {
|
|
|
840
840
|
child.stdout.on("data", (d) => {
|
|
841
841
|
if (settled || overflow) return;
|
|
842
842
|
if (firstOutputAt === null) firstOutputAt = Date.now(); // #1692 — the child has spoken; startup is over
|
|
843
|
-
chunkSeq += 1; //
|
|
843
|
+
chunkSeq += 1; // see toolAskedChunk
|
|
844
844
|
chunkBytes = d.length;
|
|
845
845
|
chunkGapMs = prevChunkAt === null ? 0 : Date.now() - prevChunkAt;
|
|
846
846
|
prevChunkAt = Date.now();
|
|
@@ -852,7 +852,7 @@ export const anthropicAgentEngine = {
|
|
|
852
852
|
});
|
|
853
853
|
child.stderr.on("data", (d) => {
|
|
854
854
|
if (settled || overflow) return;
|
|
855
|
-
//
|
|
855
|
+
// STDERR DOES NOT START THE CLOCKS, and this line used to. This engine's protocol is
|
|
856
856
|
// stream-json on STDOUT; stderr carries node warnings and CLI notices, which a child can emit
|
|
857
857
|
// before it has done anything at all. Treating one as "the child has spoken" ended the grace and
|
|
858
858
|
// — since tracker issue 1780, which made the first byte the progress clock's ORIGIN — started that clock too,
|
|
@@ -870,7 +870,7 @@ export const anthropicAgentEngine = {
|
|
|
870
870
|
child.on("error", (e) => { if (settled) return; settled = true; clearInterval(watchdog); resolve(errResult(t0, e, resumeRef)); });
|
|
871
871
|
child.on("close", (code) => settle(code));
|
|
872
872
|
function settle(code) {
|
|
873
|
-
//
|
|
873
|
+
// the turn is over; the record must not outlive it, and is cleared only if
|
|
874
874
|
// it still names THIS child.
|
|
875
875
|
clearEngineChild(runDir, child?.pid);
|
|
876
876
|
if (settled) return; settled = true;
|
|
@@ -889,7 +889,7 @@ export const anthropicAgentEngine = {
|
|
|
889
889
|
// defect from the inside.
|
|
890
890
|
const endedAt = Date.now();
|
|
891
891
|
const wall = (endedAt - t0) / 1000;
|
|
892
|
-
//
|
|
892
|
+
// THE TWO CLOCKS MUST TILE THE WALL, in every case including the one that matters.
|
|
893
893
|
//
|
|
894
894
|
// A turn killed mid-tool-call has an OPEN ask that `toolWaitMs` has not closed. Reporting the
|
|
895
895
|
// unclosed accumulator left `activeMs + toolWaitMs` short of the wall by exactly that gap — and
|
|
@@ -924,7 +924,7 @@ export const anthropicAgentEngine = {
|
|
|
924
924
|
const stderrOut = overflow
|
|
925
925
|
? (stderr + `\nanthropic-agent output overflow: stdout/stderr exceeded ${maxBuffer} chars — killed the tree and failed the turn (truncated tail never parsed)`)
|
|
926
926
|
: noProgressKill
|
|
927
|
-
//
|
|
927
|
+
// THE SPECIMEN RIDES THE FAILURE, because the broken state expires. This kill has
|
|
928
928
|
// twice reddened `main` from a test whose ANTI-VACUITY check failed — the turn died having
|
|
929
929
|
// opened no tool ask — and neither the box's ambient load nor a full-suite run reproduces
|
|
930
930
|
// it on demand. So the discriminating bit is recorded HERE, where the kill happens, rather
|
|
@@ -962,11 +962,11 @@ export const anthropicAgentEngine = {
|
|
|
962
962
|
// from this list is unreliable and the consumer must downgrade it to "not observed").
|
|
963
963
|
reads: [...reads], readsTruncated,
|
|
964
964
|
toolCalls, toolWaitMs: settledToolWaitMs, // #1111 — two integers, no content
|
|
965
|
-
//
|
|
965
|
+
// ms from spawn to the child's FIRST byte, or null when it never spoke. RECORDING
|
|
966
966
|
// ONLY: nothing branches on it. A recording field is protected by a test or by nothing, so
|
|
967
967
|
// engine.anthropic.test.mjs pins it — deleting it must red something.
|
|
968
968
|
firstByteMs: firstOutputAt === null ? null : Math.round(firstOutputAt - t0),
|
|
969
|
-
//
|
|
969
|
+
// WHICH CLOCK RAN OUT, and WHAT the wait was made of.
|
|
970
970
|
//
|
|
971
971
|
// The hard wall measures ELAPSED, and elapsed includes time the model spent waiting on tools
|
|
972
972
|
// rather than generating. A wall kill whose elapsed is mostly tool wait is a different event from
|
|
@@ -982,7 +982,7 @@ export const anthropicAgentEngine = {
|
|
|
982
982
|
// "this record predates the gauge".
|
|
983
983
|
activeMs: Math.max(0, Math.round(wall * 1000) - settledToolWaitMs),
|
|
984
984
|
toolWaitByTool: { ...toolWaitByTool },
|
|
985
|
-
//
|
|
985
|
+
// the asks whose wait this process COULD NOT MEASURE, because the ask and
|
|
986
986
|
// its result were delivered in one chunk. An ARRAY is a measurement (possibly `[]`: measured,
|
|
987
987
|
// nothing unmeasurable), following toolWaitByTool's own rule that absence and "cannot report"
|
|
988
988
|
// must not look alike. `toolWaitMs` and the per-tool split are untouched.
|
package/driver/engine/auth.mjs
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
// spelling list let the OpenAI half decide how an Anthropic run bills. deleted the old names, so
|
|
21
21
|
// there is one variable, only the selected engine is ever consulted, and the hazard has no route left.
|
|
22
22
|
//
|
|
23
|
-
// And deliberately written OUT at each site rather than through a helper:
|
|
23
|
+
// And deliberately written OUT at each site rather than through a helper: the guard in
|
|
24
24
|
// `env-governance.test.mjs` finds a product read by the literal `env.NAME`, so a helper taking the
|
|
25
25
|
// name as an argument makes both reads invisible to it — measured, it turned them harness-only and
|
|
26
26
|
// put both names on the "no longer read by product code" list. The repetition is what keeps them
|
package/driver/engine/common.mjs
CHANGED
|
@@ -157,7 +157,7 @@ export function runStreamingChild({
|
|
|
157
157
|
// timeout; NaN/≤0 clamps to 660s so the wall never silently disables. A non-positive or unparseable
|
|
158
158
|
// PIN falls through to that derivation for the same reason — a pin is an instrument, never an off
|
|
159
159
|
// switch. Without it the floor here is 61 SECONDS at the shortest, which is why this clock had no arm
|
|
160
|
-
// and why
|
|
160
|
+
// and why the grace never reached the line below: no test could drive it without sitting for a
|
|
161
161
|
// minute.
|
|
162
162
|
const pinnedHard = Number(process.env.CLEAROTRON_HARD_MS);
|
|
163
163
|
const hardMs = pinnedHard > 0 ? pinnedHard : (Number(timeoutSec) > 0 ? Number(timeoutSec) + 60 : 660) * 1000;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
//
|
|
11
11
|
// ── WHY A HOOK, AND NOT THE THING YOU WOULD TRY FIRST ────────────────────────────────────────────────
|
|
12
12
|
//
|
|
13
|
-
//
|
|
13
|
+
// That incident was a live clearance writing two files into the skills tree. The obvious reading is
|
|
14
14
|
// "a seat did something it should not". Reading the grant layer first says otherwise: `buildClaudeArgs`
|
|
15
15
|
// grants that tree with `--add-dir`, WHICH HAS NO READ-ONLY FORM, under `--permission-mode acceptEdits`
|
|
16
16
|
// which auto-approves Write/Edit so each stage can save its output without prompting. The tree was
|
|
@@ -78,7 +78,7 @@ export function readJxTuple(tuple, { vendor, authMode, engine }) {
|
|
|
78
78
|
const usage = u ? { input: u.input ?? 0, output: u.output ?? 0, cacheRead: u.cacheRead ?? 0,
|
|
79
79
|
cacheWrite: u.cacheWrite ?? 0, total: u.total ?? 0 }
|
|
80
80
|
: null;
|
|
81
|
-
// The model that actually served the turn, never the alias we asked for —
|
|
81
|
+
// The model that actually served the turn, never the alias we asked for — the criterion 4 is that
|
|
82
82
|
// the receipt names who did the native-language work, and an alias does not name anyone. Both adapters
|
|
83
83
|
// populate it (anthropic-agent from the assistant/init events, openai-agent from `ev.model`).
|
|
84
84
|
const model = tuple?.modelWire ?? null;
|
|
@@ -38,7 +38,7 @@ const API_KEY = process.env.CLARIVATE_API_KEY || "";
|
|
|
38
38
|
const BASE = process.env.CLARIVATE_API_BASE || DEFAULT_BASE;
|
|
39
39
|
const tctx = (kind) => ({
|
|
40
40
|
kind,
|
|
41
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
41
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
42
42
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
|
|
43
43
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
44
44
|
});
|
|
@@ -13,7 +13,7 @@ import { proposeSupplemental } from "./supplemental.mjs";
|
|
|
13
13
|
const COOKIE = process.env.CORSEARCH_SESSION_KEY || "";
|
|
14
14
|
const tctx = (kind) => ({
|
|
15
15
|
kind,
|
|
16
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
16
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
17
17
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
|
|
18
18
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
19
19
|
});
|
|
@@ -65,7 +65,7 @@ function loadDeclinationSpec(runDir) {
|
|
|
65
65
|
|
|
66
66
|
async function record_declination(params) {
|
|
67
67
|
// `CLEAROTRON_BAND_RUN_DIR` at CALL TIME, and there is no `run_dir` parameter — the run is not the seat's
|
|
68
|
-
// to name.
|
|
68
|
+
// to name. That lesson, where an invented fallback sat two lines under a promise never to guess.
|
|
69
69
|
const runDir = String(process.env.CLEAROTRON_BAND_RUN_DIR ?? "");
|
|
70
70
|
if (!runDir) {
|
|
71
71
|
return { error: "this server was started without a run — the driver wires it per run; there is no parameter for it and this tool never guesses one" };
|
|
@@ -66,7 +66,7 @@ import { MAX_ROWS_PER_CALL } from "../../disposition-call.mjs";
|
|
|
66
66
|
// can have. Here the serialization is ours, so the class is gone rather than caught.
|
|
67
67
|
//
|
|
68
68
|
// THE SPEC PATH IS THE SEAT'S ONLY PATH ARGUMENT, and it is the same driver-written file the grid tool
|
|
69
|
-
// was given.
|
|
69
|
+
// was given. That rule: the path is the DRIVER'S, taken from the spec it wrote. Two derivations of one
|
|
70
70
|
// filename is the drift that cost weeks.
|
|
71
71
|
async function record_dispositions(params) {
|
|
72
72
|
const { grid_spec_path, rows } = params ?? {};
|
|
@@ -46,7 +46,7 @@ const AUTH = {
|
|
|
46
46
|
};
|
|
47
47
|
const tctx = (kind) => ({
|
|
48
48
|
kind,
|
|
49
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
49
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
50
50
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "",
|
|
51
51
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
52
52
|
});
|
|
@@ -30,7 +30,7 @@ serve({
|
|
|
30
30
|
const ctrl = new AbortController();
|
|
31
31
|
const timer = setTimeout(() => ctrl.abort(), TIMEOUT_MS);
|
|
32
32
|
try {
|
|
33
|
-
const res = await fetch(url, { redirect: "follow", signal: ctrl.signal, headers: { "user-agent": "cordillera-
|
|
33
|
+
const res = await fetch(url, { redirect: "follow", signal: ctrl.signal, headers: { "user-agent": "cordillera-clearotron-fetch/0.1" } });
|
|
34
34
|
const body = await res.text();
|
|
35
35
|
const text = body.length > MAX_CHARS ? body.slice(0, MAX_CHARS) + `\n…[truncated at ${MAX_CHARS} chars]` : body;
|
|
36
36
|
return { isError: res.ok ? undefined : true, text: `HTTP ${res.status} ${res.statusText} — ${url}\n\n${text}` };
|
|
@@ -42,7 +42,7 @@ const AUTH = null;
|
|
|
42
42
|
|
|
43
43
|
const tctx = (kind) => ({
|
|
44
44
|
kind,
|
|
45
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
45
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
46
46
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "",
|
|
47
47
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
48
48
|
});
|
|
@@ -56,7 +56,7 @@ const CAPABILITY_OFFICES = CAPABILITIES.offices.covered.join("+");
|
|
|
56
56
|
// it a third. It did. This is that third site, and it went on requiring USPTO_LOCAL_DB after the other
|
|
57
57
|
// two stopped.
|
|
58
58
|
//
|
|
59
|
-
// The cost was total. On an EU-only box
|
|
59
|
+
// The cost was total. On an EU-only box the whole path worked — preflight passed, the plan compiled
|
|
60
60
|
// with the US split off as a disclosed deferral, the EU entry was executable — and then EVERY register_*
|
|
61
61
|
// tool the seat called was refused here, so the EU half never ran. Everything upstream was right and
|
|
62
62
|
// nothing downstream happened, which is the least legible way for a fix to fail.
|
|
@@ -79,7 +79,7 @@ export const REGISTER_SERVERS = {
|
|
|
79
79
|
// register_search / register_record_fetch — served since the thin days.
|
|
80
80
|
// register_enumerate — SERVED and now granted. built the page loop on the shared kernel;
|
|
81
81
|
// capabilities.js records the bounds it runs against as live-probed 2026-08-17 (pageSize 100 is the
|
|
82
|
-
// API's hard refusal, verified at 200/250/500). This is the tool
|
|
82
|
+
// API's hard refusal, verified at 200/250/500). This is the tool the owner-window ceiling is
|
|
83
83
|
// passed into (OWNER_SCOPED_WINDOW → ceilingFor → makeEnumerate), so withholding it put that
|
|
84
84
|
// criterion out of reach of any round.
|
|
85
85
|
// register_execute_plan — SERVED and now granted. Two corrective-ladder hints name it unconditionally
|
|
@@ -188,7 +188,7 @@ export const REGISTER_SERVERS = {
|
|
|
188
188
|
// (server-tools-granted-or-stated.test.mjs: every record tool has exactly one granting stage).
|
|
189
189
|
const RECORDING_SERVER = "recording-server.mjs";
|
|
190
190
|
const RECORDING = Object.freeze({
|
|
191
|
-
// FIRST OCCUPANT — blind-frame (
|
|
191
|
+
// FIRST OCCUPANT — blind-frame (the transport, wired by, dictation deleted by).
|
|
192
192
|
//
|
|
193
193
|
// `seatWrites: false` is the half, and it is the only thing that closes the regression door BY
|
|
194
194
|
// CONSTRUCTION rather than by prose. Once the driver writes blind-frame-model.json, nothing this stage is
|
|
@@ -686,7 +686,7 @@ const LOCAL = {
|
|
|
686
686
|
"unit-note": { script: "unit-note-server.mjs", tools: ["record_unit_note"] },
|
|
687
687
|
// ── RECORDING — DERIVED from the registry above, one entry per stage, in registry order ──────────
|
|
688
688
|
//
|
|
689
|
-
// These rows were hand-written here until
|
|
689
|
+
// These rows were hand-written here until the collapse. They are LAST in this object on purpose:
|
|
690
690
|
// LOCAL_SERVER_SCRIPTS below is `Object.values(LOCAL).map(...)`, so insertion order is part of its
|
|
691
691
|
// value, and `recording-server.mjs` appearing TWICE is the evidence both keys resolve to the one
|
|
692
692
|
// module. recording-grant-preservation.test.mjs pins that array verbatim, duplicates included.
|
|
@@ -695,7 +695,7 @@ const LOCAL = {
|
|
|
695
695
|
};
|
|
696
696
|
|
|
697
697
|
// The scripts LOCAL grants, DERIVED. Exported because the server census would otherwise recite them, and
|
|
698
|
-
// a recited list is one more population to keep in sync by hand —
|
|
698
|
+
// a recited list is one more population to keep in sync by hand — the census derived the register
|
|
699
699
|
// half from REGISTER_SERVERS and hardcoded this half, so wiring a new local server left it reading as
|
|
700
700
|
// ungranted. Derive both halves or neither.
|
|
701
701
|
export const LOCAL_SERVER_SCRIPTS = Object.freeze(Object.values(LOCAL).map((e) => e.script));
|
|
@@ -873,7 +873,7 @@ export function buildGatherMcpConfig(groups = [], { sessionKey, agent, runDir, r
|
|
|
873
873
|
// There is no production caller to break: `driver/gateway.mjs` is the only non-test call site in the
|
|
874
874
|
// tree and it always passes the run it is dispatching for. A caller that reaches this without one has
|
|
875
875
|
// a defect a refusal names immediately, instead of a record body somewhere its run will never look.
|
|
876
|
-
// ORDER MATTERS: resolve the register provider FIRST.
|
|
876
|
+
// ORDER MATTERS: resolve the register provider FIRST. That "CLEAROTRON_DATABASE is not set"
|
|
877
877
|
// is the more fundamental refusal and the one an operator acts on, so it must still come out ahead of
|
|
878
878
|
// this one — a box with neither a provider nor a run should be told about the provider.
|
|
879
879
|
if (localKeys.has("register")) {
|
|
@@ -964,7 +964,7 @@ export function toolGroupsForStage(name = "") {
|
|
|
964
964
|
// the issue predicts, on the one matter where the confirmation step was most clearly indicated (four
|
|
965
965
|
// `loaded` meaning rulings, see).
|
|
966
966
|
//
|
|
967
|
-
// This changes engine behaviour and ships `status:merged-awaiting-e2e`, which
|
|
967
|
+
// This changes engine behaviour and ships `status:merged-awaiting-e2e`, which the out-of-scope block
|
|
968
968
|
// anticipates in as many words. The scoping is doctrine's, not the grant's: SKILL.md already caps it at
|
|
969
969
|
// one probe per review and requires the query and its result recorded verbatim.
|
|
970
970
|
// ── THE ONE BRANCH THAT RETURNS RETRIEVAL *AND* RECORDING, and it has to be here ────────────────
|
|
@@ -1027,7 +1027,7 @@ export function toolGroupsForStage(name = "") {
|
|
|
1027
1027
|
//
|
|
1028
1028
|
// NOT a prefix test, for either form. A prefix would hand the grant to any future stage whose name
|
|
1029
1029
|
// merely began with a recording stage's. The base row must SAY it fans out — declaration, not
|
|
1030
|
-
// inference, the same principle as
|
|
1030
|
+
// inference, the same principle as the declared phase.
|
|
1031
1031
|
for (const [sep, flag] of SUFFIX_FORMS) {
|
|
1032
1032
|
const at = name.lastIndexOf(sep);
|
|
1033
1033
|
if (at <= 0) continue;
|
|
@@ -1153,7 +1153,7 @@ export function recordAxisFor(name = "") {
|
|
|
1153
1153
|
// gains `--mcp-config`, `--strict-mcp-config` AND `--allowedTools` where it previously had none. That is
|
|
1154
1154
|
// a change in KIND and the right one — these stages become constrained for the first time — but it must
|
|
1155
1155
|
// be asserted at the argv level, not inferred from this map.
|
|
1156
|
-
// FIRST OCCUPANT — blind-frame (
|
|
1156
|
+
// FIRST OCCUPANT — blind-frame (the transport, wired here). SECOND — skeptic.
|
|
1157
1157
|
//
|
|
1158
1158
|
// The safety basis is a SAMPLE and is stated as one: O3c measured blind-frame at 0 Bash calls across 15
|
|
1159
1159
|
// attempts, alone among the eleven tool-free stages. That is why it converted first. On attempt 16 a
|
|
@@ -1189,7 +1189,7 @@ export const RECORDING_STAGES = Object.freeze(Object.fromEntries(
|
|
|
1189
1189
|
//
|
|
1190
1190
|
// ── DELIBERATELY NOT DERIVED FROM THE REGISTRY, unlike the four declarations above it ──────────────
|
|
1191
1191
|
//
|
|
1192
|
-
//
|
|
1192
|
+
// That collapse made the LOCAL entries, the group resolution, the stage→group map and RECORDING_STAGES
|
|
1193
1193
|
// derive from one registry. This table did NOT move, and the reason is the whole value of it: O1 asserts
|
|
1194
1194
|
// the resolved grant EQUALS this row. Derive it from the same registry the grant derives from and O1
|
|
1195
1195
|
// compares a value with itself — a guard turned tautology inside the PR that was meant to strengthen it.
|
|
@@ -1211,7 +1211,7 @@ export const RECORDING_TOOLS = Object.freeze({
|
|
|
1211
1211
|
"mcp__recording-matter-frame__search_run_artifacts"]),
|
|
1212
1212
|
skeptic: Object.freeze(["Read", "mcp__recording-skeptic__record_skeptic",
|
|
1213
1213
|
"mcp__recording-skeptic__search_run_artifacts"]),
|
|
1214
|
-
//
|
|
1214
|
+
// That third conversion. `Read` and its one record tool: the stage's reads are its two named input
|
|
1215
1215
|
// files, which the seeded grant serves, and it gets no search tool because a stage with an enumerable
|
|
1216
1216
|
// read set does not need one. BY HAND, like every row here — deriving it from the registry would make
|
|
1217
1217
|
// O1 compare a value with itself.
|
|
@@ -1370,7 +1370,7 @@ export function seatWritesForGroups(groups = []) {
|
|
|
1370
1370
|
}
|
|
1371
1371
|
|
|
1372
1372
|
/**
|
|
1373
|
-
* THE ENUMERATION, derived and not hand-listed (
|
|
1373
|
+
* THE ENUMERATION, derived and not hand-listed (the third proof requirement).
|
|
1374
1374
|
*
|
|
1375
1375
|
* A naive grep for `seatWrites: false` returns TEN hits and the population is EIGHT: two of the hits are
|
|
1376
1376
|
* comment text — one in the blind-frame FIRST OCCUPANT note, one in `allowedToolsFor`'s own
|
|
@@ -135,7 +135,7 @@ function tellObligations(spec, ledgerJson) {
|
|
|
135
135
|
}, null, 2) + "\n",
|
|
136
136
|
);
|
|
137
137
|
// B — NO SEAT-FACING FORM IS WRITTEN, ANY MORE, BY ANYONE. The -era write-back that lived here
|
|
138
|
-
// (a union of the seat's file bytes into a rebuilt seat-facing form, plus
|
|
138
|
+
// (a union of the seat's file bytes into a rebuilt seat-facing form, plus the whose-bytes referee)
|
|
139
139
|
// died with the form path: the seat records rulings only through `record_dispositions`, the
|
|
140
140
|
// accumulator in `_driver/` is the one copy and the tool is its writer mid-turn. What the seat needs
|
|
141
141
|
// at this moment — the obligations, the candidates, the positions and the recording route — is all in
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
//
|
|
25
25
|
// `CLEAROTRON_BAND_RUN_DIR`, read at CALL TIME. `serverEnv()` (gather-config.mjs:162) sets it for every local
|
|
26
26
|
// server, not only band. There is no `run_dir` parameter and there must not be one — the lesson is
|
|
27
|
-
//
|
|
27
|
+
// the earlier one, where an invented `CLEAROTRON_RUN_DIR` fallback sat two lines under a sentence promising the tool
|
|
28
28
|
// never guesses a run. Call time rather than module load: stdio-server.mjs:29-33 states why for this
|
|
29
29
|
// exact variable.
|
|
30
30
|
// ── THE SECOND CAPABILITY CLASS: A SCOPED READ, and why it does not break the sentence above ────────
|
|
31
31
|
//
|
|
32
|
-
// `search_run_artifacts` is the skeptic's sanctioned read surface (
|
|
32
|
+
// `search_run_artifacts` is the skeptic's sanctioned read surface (the ratification hold, unlock
|
|
33
33
|
// path 1): a literal substring search over the calling run's OWN artifact tree, replacing the Bash
|
|
34
34
|
// reads O3c measured the stage using. It still dials nothing and writes nothing — the category's
|
|
35
35
|
// promise is about RETRIEVAL and writes, and a read bounded to CLEAROTRON_BAND_RUN_DIR widens neither.
|
|
@@ -464,7 +464,7 @@ serve({
|
|
|
464
464
|
value: { type: "string", description: "The search term itself — never a label, never an enumeration." },
|
|
465
465
|
// THE CANONICAL ENUM, imported — never a second copy. `parseVariantManifestModel` refuses
|
|
466
466
|
// anything outside it, so a hand-typed list here could drift into promising a category the
|
|
467
|
-
// parser rejects.
|
|
467
|
+
// parser rejects. That brief reads the same constant.
|
|
468
468
|
category: { type: "string", enum: [...VARIANT_CATEGORIES] },
|
|
469
469
|
rationale: { type: "string" },
|
|
470
470
|
romanization: { type: "string", description: "Latin-script form. NON-LATIN VALUES ONLY — a romanisation on a Latin value is refused as an orphan." },
|
|
@@ -848,7 +848,7 @@ serve({
|
|
|
848
848
|
// The reviewer is the report's only check, and it wrote its own review as prose. Everything
|
|
849
849
|
// downstream then parsed that prose back: the verdict token, the flag list, the `[kind:]`/`[on:]`
|
|
850
850
|
// channels, and the count that decides whether a BLOCKING is degenerate. The seat chose the
|
|
851
|
-
// enumeration style, so the parse could miss it —
|
|
851
|
+
// enumeration style, so the parse could miss it — the lettered flags were invisible
|
|
852
852
|
// for exactly that reason. Handing values makes the style the driver's, so a flag the parse cannot
|
|
853
853
|
// see stops being possible rather than being detected afterwards.
|
|
854
854
|
//
|
|
@@ -1120,6 +1120,10 @@ serve({
|
|
|
1120
1120
|
properties: {
|
|
1121
1121
|
recordId: { type: "string", description: "Copied VERBATIM from the filings you were given." },
|
|
1122
1122
|
read: { type: "string", description: "What you concluded about THIS filing." },
|
|
1123
|
+
// Declared here for the reason the comment above gives: `additionalProperties: false`
|
|
1124
|
+
// means an undeclared key is a contradiction between the prose and the schema, and the
|
|
1125
|
+
// seat resolves it whichever way it happens to trust.
|
|
1126
|
+
band: { type: "string", description: "OPTIONAL — how you rate THIS filing, in the framework's own band words. Send it when you formed a view on the filing itself; the card prints it as that filing's rating. Omit it and your read still prints, with no rating claimed." },
|
|
1123
1127
|
},
|
|
1124
1128
|
},
|
|
1125
1129
|
},
|
|
@@ -17,7 +17,7 @@ const API_KEY = process.env.SIGNA_API_KEY || "";
|
|
|
17
17
|
const BASE = process.env.SIGNA_BASE_URL || DEFAULT_BASE;
|
|
18
18
|
const tctx = (kind) => ({
|
|
19
19
|
kind,
|
|
20
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
20
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
21
21
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
|
|
22
22
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
23
23
|
});
|
|
@@ -43,7 +43,7 @@ const DB_PATH = process.env[DEFAULT_DB_ENV] || "";
|
|
|
43
43
|
const AUTH = { dbPath: DB_PATH };
|
|
44
44
|
const tctx = (kind) => ({
|
|
45
45
|
kind,
|
|
46
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
46
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
47
47
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
|
|
48
48
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
49
49
|
});
|
|
@@ -446,7 +446,7 @@ function settleTuple({ r, ev, resumeRef }) {
|
|
|
446
446
|
killed, wall: r.wall,
|
|
447
447
|
stdout: text, stderr: stderrOut, laneWaitMs: 0,
|
|
448
448
|
json, usage,
|
|
449
|
-
// MODEL GAUGE (
|
|
449
|
+
// MODEL GAUGE (): the id codex recorded for this turn — from its session rollout under
|
|
450
450
|
// this run's own CODEX_HOME, since the event stream states none. Still two states and never one:
|
|
451
451
|
// null = "this engine did not report", never the requested tier wearing the word "actual".
|
|
452
452
|
// gateway.mjs records the absence as modelBasis:"unknown".
|
|
@@ -478,7 +478,7 @@ function settleTuple({ r, ev, resumeRef }) {
|
|
|
478
478
|
mcpRefused: mcpToolGauge(ev).mcpToolCallsRefused > 0 || undefined,
|
|
479
479
|
rateLimited: rateLimited || undefined,
|
|
480
480
|
rateLimitBasis: rateLimited ? "text-match" : undefined,
|
|
481
|
-
// resetsAtBasis (
|
|
481
|
+
// resetsAtBasis (2026-08-20): same honesty as rateLimitBasis one line up, for the reset
|
|
482
482
|
// CLOCK rather than the classification. codex states its reset as human prose with NO timezone
|
|
483
483
|
// ("try again at Aug 22nd, 2026 9:06 AM"), so the ISO we derive is a reading of that prose in the
|
|
484
484
|
// box's own zone — never a provider fact. Absent when no hint was found, exactly as `resetsAt` is.
|
package/driver/engine-build.mjs
CHANGED
|
@@ -87,11 +87,11 @@ export function resetEngineCommit() { cached = undefined; source = undefined; re
|
|
|
87
87
|
// So attribution has been a reflog reconstruction: join a checkout's reflog against each run's
|
|
88
88
|
// `startedAt`. That reconstruction expires with the reflog, cannot survive a re-clone, is wrong for
|
|
89
89
|
// every run made while the checkout sat detached, and mixes a local-time reflog against UTC stamps.
|
|
90
|
-
// It decided three certifications in one morning (
|
|
90
|
+
// It decided three certifications in one morning () and produced two near-miss
|
|
91
91
|
// wrong rulings in two days.
|
|
92
92
|
//
|
|
93
93
|
// A SIBLING, NOT A WIDER RETURN TYPE. `engineCommit()` keeps its bare-string contract exactly:
|
|
94
|
-
//
|
|
94
|
+
// That guard pins its import line by regex AND pins the literal `engineCommit: engineCommit` in
|
|
95
95
|
// the publisher, four consumers read the string, and `scripts/freeze-example-run.mjs` asserts in prose
|
|
96
96
|
// that it "is cached to one value and cannot differ between the two". Widening it would break all of
|
|
97
97
|
// that to add a field only one new caller wants.
|
|
@@ -663,7 +663,7 @@ export function validateJob(job, { atClaim = false } = {}) {
|
|
|
663
663
|
// Every other check in this build lives at one or two of them: `checkClearanceScopeRules` runs at the
|
|
664
664
|
// runner, the portal and plan_run but at neither start_run nor the CLI; the mark budget and the
|
|
665
665
|
// availability gate run at the runner alone. A rule placed at a door is a rule the other doors do not
|
|
666
|
-
// have, and
|
|
666
|
+
// have, and the acceptance test is that all three refuse the same request in the same words.
|
|
667
667
|
//
|
|
668
668
|
// WHAT IS JUDGED HERE: everything the REQUEST states. Each of the offering's illegal shapes is visible
|
|
669
669
|
// without resolving anything — a narrowed Global preliminary, a two-country Full country search, a
|
|
@@ -983,7 +983,7 @@ export const EXAMPLE_JOB = {
|
|
|
983
983
|
// deliveryRoute: "portal", // OPTIONAL: "email" (default) or "portal" — a portal-route packet
|
|
984
984
|
// is mark_sent by the courier WITHOUT an email send.
|
|
985
985
|
// parentRunId: "novapulse-cedar", // OPTIONAL escalation lineage: the run this one escalates from
|
|
986
|
-
// (e.g. a knockout HIGH mark → this
|
|
986
|
+
// (e.g. a knockout HIGH mark → this clearotron). Recorded, not yet resolved.
|
|
987
987
|
projectKey: "console-ecosystem", // spec 62 (OPTIONAL): the PROJECT/engagement under the customer whose
|
|
988
988
|
// overlay (its own marketplaces/classes/sector/posture) rates this
|
|
989
989
|
// matter; omit ⇒ runs on the customer profile. Unknown key ⇒ clarify.
|
package/driver/enqueue.mjs
CHANGED
|
@@ -245,7 +245,7 @@ async function main(argv) {
|
|
|
245
245
|
try { job = assembleFromFlags(flags); } catch (e) { fail(`could not assemble the job: ${e.message}`); }
|
|
246
246
|
if (!job.forwarder) fail("missing --forwarder — the requester/reply-routing key; the delivery packet needs it to route the report (there is deliberately no default)", 2);
|
|
247
247
|
// THE EARLY --product CHECK IS GONE, and its deletion is the fix. It fired before validateJob and said
|
|
248
|
-
// the same thing in different words — `--product "
|
|
248
|
+
// the same thing in different words — `--product "clearotron"` rather than `product "clearotron"`, and without
|
|
249
249
|
// the `(or omit it for the account's default)` clause, which is the one clause that tells a requester
|
|
250
250
|
// the field is optional. So the CLI's real answer to a typo was not the shared one, and a test that
|
|
251
251
|
// started at assembleFromFlags could never see it. validateJob refuses it now, in the sentence every
|
|
@@ -196,7 +196,7 @@ export async function settleReceipt({ P, plan, receipt, dispatch = null, rejoin
|
|
|
196
196
|
|
|
197
197
|
/**
|
|
198
198
|
* The settled facts a digest dispatch needs, as a message section — mechanical only, quoting the executor's
|
|
199
|
-
* own reason. Every digest pass gets this, not just the first:
|
|
199
|
+
* own reason. Every digest pass gets this, not just the first: the dispatch hint reaches FRESH dispatches
|
|
200
200
|
* by construction (stageOnce ignores `extra` when opts.followup is set), and the flush passes it misses are
|
|
201
201
|
* exactly where the evidence run burned 2,908 seconds failing the same validator twice more.
|
|
202
202
|
*
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
// reading only the claim misses it: the increase is in the evidence stamp.
|
|
27
27
|
//
|
|
28
28
|
// THE LADDER ALREADY EXISTS, so this introduces no vocabulary. `basis` is the run's own certainty
|
|
29
|
-
// ordering and
|
|
29
|
+
// ordering and the demotion is its enforcement; `basis-derivation.json` records every demotion with
|
|
30
30
|
// its reason and its uri. Arm B is a comparison against an artifact the driver already writes, which is
|
|
31
31
|
// why it needs no fetch ledger and no new plumbing.
|
|
32
32
|
//
|
|
33
|
-
// REPORTS, NEVER THROWS. The caller decides what a violation costs —
|
|
33
|
+
// REPORTS, NEVER THROWS. The caller decides what a violation costs — the lesson is that a guard
|
|
34
34
|
// which can kill a run is a guard that eventually kills a run over its own false positive.
|
|
35
35
|
|
|
36
36
|
/** The run's own certainty ordering for a meter's basis. Higher is more certain. */
|