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/scripts/deploy-test.sh
DELETED
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# deploy-test.sh — bring the TEST instance up to origin/main. Nobody types git pull.
|
|
3
|
-
#
|
|
4
|
-
# The dev→test→prod rule this implements: TEST auto-deploys from main; PROD never auto-deploys.
|
|
5
|
-
# Test is allowed to break — that is its job — so this needs no approval. Prod still moves only when
|
|
6
|
-
# Krzys says so.
|
|
7
|
-
#
|
|
8
|
-
# Refuses to act while a run is in flight: restarting services mid-run is how you turn a clearance into
|
|
9
|
-
# a stranded one, and the whole point of this instance is to observe runs to completion.
|
|
10
|
-
# ── tracker issue 1381: THIS FILE IS THE MASTER COPY, AND UNTIL NOW THERE WAS NOT ONE ────────────────────────────
|
|
11
|
-
#
|
|
12
|
-
# This script runs the test instance's only automatic deployment, hourly, and it was tracked in no
|
|
13
|
-
# repository at all. What stood in for version control was four backup files beside it, each from a
|
|
14
|
-
# different lane:
|
|
15
|
-
#
|
|
16
|
-
# deploy-test.sh.bak-pre-375-20260804-202628 42 lines
|
|
17
|
-
# deploy-test.sh.bak-pre-405-20260805-094520 71 lines
|
|
18
|
-
# deploy-test.sh.bak-eggface-20260819 97 lines
|
|
19
|
-
# deploy-test.sh.bak-ud2-20260819 129 lines
|
|
20
|
-
#
|
|
21
|
-
# Four editors, no history, no review, and no diff anybody can read after the fact — while the file
|
|
22
|
-
# encodes decisions that were expensive to learn: the in-flight refusal (tracker issue 375), the store sync running
|
|
23
|
-
# before the early exit (tracker issue 405), the arrival gate (tracker issue 1217), the detached-HEAD refusal and the ERR trap
|
|
24
|
-
# (tracker issue 1353). None of that survives a VM rebuild or a home-directory restore, and one lane overwriting
|
|
25
|
-
# another announces itself only as the deploy behaving differently.
|
|
26
|
-
#
|
|
27
|
-
# ── WHY THE PATHS ARE PARAMETERS AND NOT THE LITERALS THE BOX RUNS ───────────────────────────────────
|
|
28
|
-
#
|
|
29
|
-
# The live copy names `/home/testuser` in four places. tracker issue 644 forbids exactly that in tracked code — it is
|
|
30
|
-
# wrong under every other service account and in every public clone — and the only reason its guard did
|
|
31
|
-
# not already refuse this file is that the guard's walker reads .mjs/.js/.ts/.yml/.service and had never
|
|
32
|
-
# needed to read .sh. Tracking this verbatim would have put an operator's home into the repository
|
|
33
|
-
# through a blind spot rather than past a check. The walker now reads .sh too; see
|
|
34
|
-
# driver/test/deployment-hostnames.test.mjs.
|
|
35
|
-
#
|
|
36
|
-
# So the three locations are env-overridable and default off `$HOME`, which is generic: under the
|
|
37
|
-
# service account that runs the timer, $HOME resolves to exactly what the literals said.
|
|
38
|
-
#
|
|
39
|
-
# ── THE BOX RUNS A COPY DEPLOYED FROM THIS ONE, AND WHY IT IS A COPY ─────────────────────────────────
|
|
40
|
-
#
|
|
41
|
-
# tracker issue 1381 asks for two things that turn out to conflict: the box running "a copy deployed from the repo
|
|
42
|
-
# rather than the master copy", and ExecStart pointing "at the tracked path". Step 5 does the first.
|
|
43
|
-
# The second cannot be done, and the reason is a hazard rather than a preference — see step 5.
|
|
44
|
-
#
|
|
45
|
-
# The precondition the first half of tracker issue 1381 wrote for this step — "after the drift check has been quiet
|
|
46
|
-
# for a few ticks" — was UNSATISFIABLE and is withdrawn. The check ships in this file; the box ran the
|
|
47
|
-
# untracked copy, which never carried it. It had not run once in eight ticks, and its silence read
|
|
48
|
-
# exactly like agreement. A precondition only measurable after the act it gates is not a gate. What
|
|
49
|
-
# stood in for those quiet ticks: the two copies were diffed line-set against each other and differ by
|
|
50
|
-
# the four $HOME literals, their parameterisation and the drift-check block — nothing else, no lane's
|
|
51
|
-
# unrecorded edit. That is a stronger answer than quiet ticks could ever have given.
|
|
52
|
-
#
|
|
53
|
-
# Until then the box's copy is authoritative and this one is the reference — which the drift check will
|
|
54
|
-
# say out loud on its first run, because they differ by exactly the parameterisation above.
|
|
55
|
-
|
|
56
|
-
set -euo pipefail
|
|
57
|
-
|
|
58
|
-
# The three locations this script needs, none of them naming an account (tracker issue 644/tracker issue 1381). Defaults are off
|
|
59
|
-
# $HOME so the timer's own service account supplies them; override to run it anywhere else.
|
|
60
|
-
REPO_DIR="${DEPLOY_TEST_REPO:-$HOME/clearotron}"
|
|
61
|
-
QUEUE="${DEPLOY_TEST_QUEUE:-$HOME/trademark-test/queue}"
|
|
62
|
-
ENV_FILE="${DEPLOY_TEST_ENV:-$HOME/.env}"
|
|
63
|
-
|
|
64
|
-
cd "$REPO_DIR"
|
|
65
|
-
|
|
66
|
-
log() { echo "[deploy-test] $*"; }
|
|
67
|
-
|
|
68
|
-
# A FAILED TICK SAYS SO, IN THIS SCRIPT'S VOICE (tracker issue 1353). Without this, `set -e` exits silently and the
|
|
69
|
-
# only thing separating a red tick from a healthy SKIP is the unit's exit code, which nobody reads.
|
|
70
|
-
#
|
|
71
|
-
# The premise the issue was filed on was WRONG and the correction matters: the failing command's stderr
|
|
72
|
-
# DOES reach the journal — measured on the 14:00 tick of 2026-08-19, where git printed "You are not
|
|
73
|
-
# currently on a branch." in full. It arrives under the CHILD's PID with no [deploy-test] prefix, so
|
|
74
|
-
# anyone reading this script's own lines sees an abrupt stop and no reason, and concludes nothing was
|
|
75
|
-
# logged. An absence in a filtered view is not an absence.
|
|
76
|
-
#
|
|
77
|
-
# DISARMED AROUND EVERY DELIBERATE `set +e`, and that is not optional: the ERR trap fires even when
|
|
78
|
-
# `set -e` is off, so an armed trap would kill the script on the store sync's refusal — which this file
|
|
79
|
-
# already documents as that sync's NORMAL state. Measured before installing; it would have stopped every
|
|
80
|
-
# deploy on this box.
|
|
81
|
-
arm_err() { trap 'rc=$?; log "FAILED at line $LINENO (rc=$rc): ${BASH_COMMAND}"; log " that command'"'"'s own error is in the journal just above, under the child PID"; exit $rc' ERR; }
|
|
82
|
-
arm_err
|
|
83
|
-
|
|
84
|
-
# 5 — INSTALL THIS COPY AS THE ONE THE BOX RUNS NEXT TICK (tracker issue 1381). Defined here, called from the two
|
|
85
|
-
# places a tick can succeed: the "already current" exit and the end of a healthy deploy.
|
|
86
|
-
#
|
|
87
|
-
# WHY ExecStart POINTS AT A DEPLOYED COPY AND NOT AT THIS FILE. Bash reads a running script LAZILY,
|
|
88
|
-
# by byte offset. A `git pull` that rewrites the file bash is executing makes it resume at its old
|
|
89
|
-
# offset inside the NEW bytes. Measured 2026-08-20 in a sandbox: the run executed a fragment of a
|
|
90
|
-
# line (`ho: command not found`) and then a whole line the original file never contained. A unit
|
|
91
|
-
# pointed at this path would be one deploy away from running spliced commands, so tracker issue 1381's row asking
|
|
92
|
-
# for exactly that is refused on evidence. What that row WANTED — "so the two cannot silently
|
|
93
|
-
# diverge" — is this step plus the drift check at step 0, which is the honest way to get it.
|
|
94
|
-
#
|
|
95
|
-
# RENAME, NEVER COPY-IN-PLACE, for the same reason. `cp` over the target truncates and rewrites the
|
|
96
|
-
# same inode — the hazard above. `mv` swaps the directory entry and leaves the running shell's inode
|
|
97
|
-
# alone; the same reproduction then ran clean through its own last line. The temp file is created
|
|
98
|
-
# beside the target so the rename stays inside one filesystem and is therefore atomic.
|
|
99
|
-
#
|
|
100
|
-
# WHAT THE DRIFT CHECK MEASURES AFTER THIS. Not a file against itself: `$0` is the deployed copy,
|
|
101
|
-
# the reference is this tracked one. Steady state is "same"; it reports drift for the tick after a
|
|
102
|
-
# commit changes this file, for a hand-edit on the box, and for a self-install that failed. It still
|
|
103
|
-
# reports "unreadable" separately, which is the state that mattered most.
|
|
104
|
-
#
|
|
105
|
-
# NON-FATAL AND LOUD. A failed self-install must not fail a deploy that already passed its health
|
|
106
|
-
# check, and must not pass quietly either — quietly is how the box stops tracking the repo with
|
|
107
|
-
# nobody told. Called through `if !` so errexit is suspended for the call and the ERR trap, which
|
|
108
|
-
# functions do not inherit without `set -E`, cannot turn a failed copy into a dead tick. Verified
|
|
109
|
-
# both halves in a sandbox before relying on them.
|
|
110
|
-
install_self() {
|
|
111
|
-
local target tmp
|
|
112
|
-
target="${DEPLOY_TEST_SELF:-$0}"
|
|
113
|
-
case "$target" in /*) ;; *) target="$PWD/$target" ;; esac
|
|
114
|
-
[ "$target" = "$REPO_DIR/scripts/deploy-test.sh" ] && return 0 # run by hand from the checkout
|
|
115
|
-
if [ ! -f "$target" ]; then
|
|
116
|
-
log "self-install: $target does not exist — NOT creating it, because the unit's ExecStart decides"
|
|
117
|
-
log " where the deployed copy lives and inventing one here would fork that decision"
|
|
118
|
-
return 1
|
|
119
|
-
fi
|
|
120
|
-
cmp -s "$REPO_DIR/scripts/deploy-test.sh" "$target" && return 0 # already identical: the normal tick
|
|
121
|
-
tmp="$target.installing.$$"
|
|
122
|
-
cp "$REPO_DIR/scripts/deploy-test.sh" "$tmp" || { rm -f "$tmp"; return 1; }
|
|
123
|
-
chmod --reference="$target" "$tmp" 2>/dev/null || chmod 0775 "$tmp"
|
|
124
|
-
mv "$tmp" "$target" || { rm -f "$tmp"; return 1; }
|
|
125
|
-
log "self-install: $target refreshed from scripts/deploy-test.sh — the NEXT tick runs it; this one"
|
|
126
|
-
log " finishes on the old inode, which is why the swap is a rename and not a copy"
|
|
127
|
-
return 0
|
|
128
|
-
}
|
|
129
|
-
say_install_failed() {
|
|
130
|
-
log "SELF-INSTALL FAILED — the box is no longer tracking scripts/deploy-test.sh, and the only thing"
|
|
131
|
-
log " that will keep saying so is the drift check at step 0 of the next tick"
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
# 0 — AM I THE SCRIPT THE REPOSITORY THINKS I AM? (tracker issue 1381)
|
|
135
|
-
#
|
|
136
|
-
# Reported, never enforced and never reconciled. A deploy that refuses because its own source drifted
|
|
137
|
-
# is a deploy that cannot be hotfixed in an incident, and one that silently copies either file over
|
|
138
|
-
# the other loses somebody's deliberate edit. So this states the fact and carries on.
|
|
139
|
-
#
|
|
140
|
-
# NON-FATAL BY CONSTRUCTION: `|| true`, because the ERR trap is armed here and a drift exit of 1 is
|
|
141
|
-
# an ordinary answer, not a failure of the deploy.
|
|
142
|
-
#
|
|
143
|
-
# EXPECT "same" ON A STEADY TICK, now that step 5 installs this file as the box's copy. Drift is a
|
|
144
|
-
# real answer again rather than a standing condition: the tick after a commit changes this file, a
|
|
145
|
-
# hand-edit on the box, or a self-install that failed. It is reported BEFORE step 5 replaces the
|
|
146
|
-
# box's copy, so an edit somebody made by hand is announced on the tick that overwrites it — which
|
|
147
|
-
# is the only way "reports, never reconciles" and "the box tracks the repo" can both be true.
|
|
148
|
-
if [ -f scripts/deploy-drift-check.mjs ]; then
|
|
149
|
-
while IFS= read -r l; do [ -n "$l" ] && log "$l"; done <<< "$(node scripts/deploy-drift-check.mjs --deployed "${DEPLOY_TEST_SELF:-$0}" 2>&1 || true)"
|
|
150
|
-
fi
|
|
151
|
-
|
|
152
|
-
# 1 — never mid-run. The driver decides what "live" means, not a grep in this file (tracker issue 375).
|
|
153
|
-
# This counted .json and .processing and NOT .postponed, so it refused correctly twice while R1 was
|
|
154
|
-
# executing on 2026-08-04, then deployed ten seconds after the run PARKED — the count went to zero, the
|
|
155
|
-
# services restarted, and the run resumed 110 seconds later on a different commit. One clearance spanning
|
|
156
|
-
# two builds, with nothing in its record saying so. A park is a live run: both the rate-limit park and the
|
|
157
|
-
# recovery park auto-resume.
|
|
158
|
-
#
|
|
159
|
-
# scripts/queue-inflight.mjs is in the checkout we are about to update, so it is read BEFORE the pull —
|
|
160
|
-
# the guard that decides whether to deploy must not come from the deploy.
|
|
161
|
-
#
|
|
162
|
-
# BOOTSTRAP: the script arrives WITH the commit that adds it, so on a checkout older than that commit
|
|
163
|
-
# it is simply absent. That is not a fault and must not wedge the deploy — fall back to the pattern,
|
|
164
|
-
# with .postponed in it. The fallback is the thing being replaced, so it carries the fix too.
|
|
165
|
-
if [ -f scripts/queue-inflight.mjs ]; then
|
|
166
|
-
if ! INFLIGHT=$(node scripts/queue-inflight.mjs "$QUEUE"); then
|
|
167
|
-
log "REFUSING — could not read the queue to check for live runs; deploying over a live run is what this guard exists to prevent"
|
|
168
|
-
exit 1
|
|
169
|
-
fi
|
|
170
|
-
LIVE=$(node scripts/queue-inflight.mjs --names "$QUEUE" | tr '\n' ' ')
|
|
171
|
-
else
|
|
172
|
-
INFLIGHT=$(ls "$QUEUE" 2>/dev/null | grep -cE '\.(json|processing|postponed)$' || true)
|
|
173
|
-
# `|| true`, and it is load-bearing: under `set -o pipefail` a grep that matches nothing returns 1, the
|
|
174
|
-
# assignment inherits it, and `set -e` kills the script silently at exit 0 — the deploy would simply
|
|
175
|
-
# stop happening, saying nothing. That is the failure class this whole issue is about.
|
|
176
|
-
LIVE=$(ls "$QUEUE" 2>/dev/null | grep -E '\.(json|processing|postponed)$' | tr '\n' ' ' || true)
|
|
177
|
-
log "note: scripts/queue-inflight.mjs not in this checkout yet — using the inline pattern for this tick"
|
|
178
|
-
fi
|
|
179
|
-
if [ "$INFLIGHT" != "0" ]; then
|
|
180
|
-
log "SKIP — $INFLIGHT job(s) queued, in flight or parked: $LIVE"
|
|
181
|
-
exit 0
|
|
182
|
-
fi
|
|
183
|
-
|
|
184
|
-
# 2a — the E2E CONFIG STORE (tracker issue 405). It moves independently of this repo and nothing pulled it, and it is
|
|
185
|
-
# what decides what a round MEASURES: every scenario's assertions and every gold set live there.
|
|
186
|
-
# An out-of-date PRODUCT checkout fails loudly; an out-of-date CONFIG store fails as an assertion
|
|
187
|
-
# that quietly does not exist, which reads exactly like an assertion nobody wrote.
|
|
188
|
-
# This runs BEFORE the early exit below on purpose — the store moves on ticks where the product does
|
|
189
|
-
# not, and an early exit would skip it on precisely those ticks.
|
|
190
|
-
# `set -e` is ON in this script, and a command substitution that exits non-zero aborts it. The sync
|
|
191
|
-
# exits 1 on a refusal — which is its NORMAL state until the store gets an owner that can pull — so
|
|
192
|
-
# without disarming -e around it, every tick would abort here and the product would stop deploying,
|
|
193
|
-
# silently, with the health check below never reached.
|
|
194
|
-
trap - ERR; set +e
|
|
195
|
-
if [ -f scripts/sync-e2e-store.mjs ]; then
|
|
196
|
-
STORE_OUT=$( set -a; . "$ENV_FILE"; set +a; node scripts/sync-e2e-store.mjs 2>&1 )
|
|
197
|
-
STORE_RC=$?
|
|
198
|
-
else
|
|
199
|
-
# The script arrives WITH the product pull below, so the first tick after it merges has not got it yet.
|
|
200
|
-
# Say that plainly rather than logging a MODULE_NOT_FOUND stack every hour.
|
|
201
|
-
STORE_OUT="store sync script not in this checkout yet — it lands with the pull below"
|
|
202
|
-
STORE_RC=0
|
|
203
|
-
fi
|
|
204
|
-
set -e; arm_err
|
|
205
|
-
while IFS= read -r l; do [ -n "$l" ] && log "$l"; done <<< "$STORE_OUT"
|
|
206
|
-
if [ "$STORE_RC" != "0" ]; then
|
|
207
|
-
log "store sync did NOT complete (rc=$STORE_RC) — a round starting now measures whatever was last pulled by hand"
|
|
208
|
-
fi
|
|
209
|
-
|
|
210
|
-
# 2 — never a merge. --ff-only means a diverged clone fails loudly instead of inventing a merge commit
|
|
211
|
-
# (the #81 divergence trap: prod once carried three commits that existed in no repo).
|
|
212
|
-
# 2z — ON A BRANCH AT ALL (tracker issue 1353). The divergence guard below asks "has my clone diverged" and the
|
|
213
|
-
# arrival gate asks "how did the tip get there". NEITHER asks whether this checkout is on a branch,
|
|
214
|
-
# and a detached HEAD passes both: `merge-base --is-ancestor` is happy, and then `git pull` refuses
|
|
215
|
-
# with "You are not currently on a branch."
|
|
216
|
-
#
|
|
217
|
-
# This is not hypothetical. On 2026-08-19 someone checked out bf71591a out of band at 11:39, the
|
|
218
|
-
# 14:00 tick died on it, and a human put it back at 14:01 — the reflog carries all three. Every tick
|
|
219
|
-
# in between would have failed the same way. Cheap to detect, so detect it.
|
|
220
|
-
if ! git symbolic-ref -q HEAD >/dev/null; then
|
|
221
|
-
log "REFUSING — this checkout is on a DETACHED HEAD at $(git rev-parse --short HEAD), so nothing can fast-forward."
|
|
222
|
-
log " Someone checked out a commit here out of band and left it. Put it back with: git checkout main"
|
|
223
|
-
log " Deploys stay stopped until then — every tick fails identically, so this is worth one look now."
|
|
224
|
-
exit 1
|
|
225
|
-
fi
|
|
226
|
-
|
|
227
|
-
BEFORE=$(git rev-parse HEAD)
|
|
228
|
-
git fetch --quiet origin main
|
|
229
|
-
if ! git merge-base --is-ancestor HEAD origin/main; then
|
|
230
|
-
log "REFUSING — this clone is not an ancestor of origin/main. It has diverged; a human should look."
|
|
231
|
-
exit 1
|
|
232
|
-
fi
|
|
233
|
-
# 2b — HOW THE TIP ARRIVED (tracker issue 1217). `--ff-only` and the ancestor check above both ask the same question,
|
|
234
|
-
# "has MY CLONE diverged", and neither asks how origin/main's tip got there. On 2026-08-18 a feature
|
|
235
|
-
# branch was pushed AS main: ungated engine and provider files, and a clean fast-forward from where
|
|
236
|
-
# this box sat. Both guards would have waved it through; a manual timer stop is the only reason they
|
|
237
|
-
# did not. scripts/head-arrived-gated.mjs answers the missing question and exits 0/1/2.
|
|
238
|
-
#
|
|
239
|
-
# UNKNOWN REFUSES, deliberately. The script's own contract leaves the decision to the caller and says
|
|
240
|
-
# an unanswerable question is not a pass. A refusal here costs one hour and is visible as a failed
|
|
241
|
-
# unit; accepting an ungated head costs every coverage claim the next round makes, and reads green.
|
|
242
|
-
#
|
|
243
|
-
# BOOTSTRAP, same rule as queue-inflight.mjs above: on a checkout older than the commit that adds the
|
|
244
|
-
# script it is simply absent. Absence of the script is not evidence about the head — say so, carry on.
|
|
245
|
-
TIP=$(git rev-parse origin/main)
|
|
246
|
-
if [ -f scripts/head-arrived-gated.mjs ]; then
|
|
247
|
-
trap - ERR; set +e
|
|
248
|
-
ARRIVAL_OUT=$(node scripts/head-arrived-gated.mjs "$TIP" 2>&1)
|
|
249
|
-
ARRIVAL_RC=$?
|
|
250
|
-
set -e; arm_err
|
|
251
|
-
while IFS= read -r l; do [ -n "$l" ] && log "$l"; done <<< "$ARRIVAL_OUT"
|
|
252
|
-
if [ "$ARRIVAL_RC" = "1" ]; then
|
|
253
|
-
log "REFUSING — origin/main's tip ${TIP:0:8} did NOT arrive as a gated merge. It was pushed straight to the branch."
|
|
254
|
-
log " Nothing ungated lands on this box. Get it onto a branch and through a PR, or say why it is safe."
|
|
255
|
-
exit 1
|
|
256
|
-
fi
|
|
257
|
-
if [ "$ARRIVAL_RC" != "0" ]; then
|
|
258
|
-
log "REFUSING — could not establish how ${TIP:0:8} arrived (rc=$ARRIVAL_RC). Not knowing is not a pass."
|
|
259
|
-
exit 1
|
|
260
|
-
fi
|
|
261
|
-
else
|
|
262
|
-
log "note: scripts/head-arrived-gated.mjs not in this checkout yet — how the tip arrived was NOT checked this tick"
|
|
263
|
-
fi
|
|
264
|
-
|
|
265
|
-
# MERGE THE REF THIS TICK ALREADY DECIDED ON — never a second fetch (tracker issue 1486).
|
|
266
|
-
#
|
|
267
|
-
# This was `git pull --ff-only`, and a pull is fetch-then-merge. That second fetch cost two things:
|
|
268
|
-
#
|
|
269
|
-
# 1. THE ARRIVAL GATE WAS BYPASSABLE. `TIP` is read from origin/main above and every refusal in this
|
|
270
|
-
# block is a judgment about THAT commit. A pull then fetches again and merges whatever it lands, so
|
|
271
|
-
# a commit pushed between the gate and here was deployed WITHOUT being gated — the one thing this
|
|
272
|
-
# block exists to prevent. Merging `origin/main` merges the ref the gate actually inspected.
|
|
273
|
-
#
|
|
274
|
-
# 2. IT RACED EVERY OTHER READER OF THIS CLONE. `git pull` writes FETCH_HEAD, and any concurrent
|
|
275
|
-
# `git fetch` here can leave two for-merge entries in that file; the merge then dies with
|
|
276
|
-
# `fatal: Cannot fast-forward to multiple branches` and the tick is lost. Observed 2026-08-21 at
|
|
277
|
-
# 07:00 CEST, exit 128 at this line, while seven agent sessions were starting. A merge of a named
|
|
278
|
-
# ref does not touch FETCH_HEAD at all, so the shared file the race is fought over stops being
|
|
279
|
-
# part of this path.
|
|
280
|
-
#
|
|
281
|
-
# The duplicate is NOT sticky — a pull's own fetch rewrites FETCH_HEAD before the merge resolves — so
|
|
282
|
-
# the failure needs an external fetch landing inside a sub-second window. That is why this must be
|
|
283
|
-
# closed in CODE and can never be certified by absence of recurrence: it will look fixed either way.
|
|
284
|
-
git merge --ff-only --quiet origin/main
|
|
285
|
-
AFTER=$(git rev-parse HEAD)
|
|
286
|
-
if [ "$BEFORE" = "$AFTER" ]; then
|
|
287
|
-
log "already current at ${AFTER:0:8}"
|
|
288
|
-
# Here as well as at the end, so a hand-edit on the box is corrected within the hour rather than
|
|
289
|
-
# waiting for whenever the next commit happens to arrive. This is the common tick.
|
|
290
|
-
if ! install_self; then say_install_failed; fi
|
|
291
|
-
exit 0
|
|
292
|
-
fi
|
|
293
|
-
log "$( git log --oneline "$BEFORE..$AFTER" | wc -l ) new commit(s): ${BEFORE:0:8} → ${AFTER:0:8}"
|
|
294
|
-
|
|
295
|
-
# 3 — deps, then restart. Never --omit=dev: portal-service serves a COMMITTED bundle, and dropping
|
|
296
|
-
# devDependencies is how a deploy starts serving a stale one with no error at all.
|
|
297
|
-
npm ci --no-audit --no-fund --silent
|
|
298
|
-
systemctl --user daemon-reload
|
|
299
|
-
systemctl --user restart trademark-ops-mcp trademark-portal
|
|
300
|
-
sleep 4
|
|
301
|
-
|
|
302
|
-
# 4 — prove it, or say so. A deploy that does not check is a deploy that discovers its own failure later.
|
|
303
|
-
set -a; . "$ENV_FILE"; set +a
|
|
304
|
-
if node scripts/live-surface-check.mjs; then log "deployed and healthy at ${AFTER:0:8}"
|
|
305
|
-
else log "DEPLOYED at ${AFTER:0:8} but the health check FAILED — see above"; exit 1; fi
|
|
306
|
-
|
|
307
|
-
# Reached only on the healthy branch — the other one exits. A script that installs itself out of a tree
|
|
308
|
-
# whose health check just failed is how a bad deploy becomes the permanent one.
|
|
309
|
-
if ! install_self; then say_install_failed; fi
|