clearotron 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +82 -1
- package/.nvmrc +1 -1
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +64 -58
- package/README.md +11 -16
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +26 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +31 -11
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +252 -136
- package/bin/start.mjs +176 -33
- package/bin/stop.mjs +65 -3
- package/bin/update.mjs +7 -7
- package/bin/uspto-sync.mjs +1 -1
- package/build-info.json +2 -2
- package/demo/full-country-search/run/_driver/framework.json +1 -1
- package/demo/global-preliminary-search/run/_driver/framework.json +1 -1
- package/demo/knockout-search/run/_driver/framework.json +1 -1
- package/demo/multi-country-focus-search/run/_driver/framework.json +1 -1
- package/docs/DELIVERY.md +6 -2
- package/docs/E2E.md +5 -5
- package/docs/PORTAL.md +2 -2
- package/docs/README.md +5 -4
- package/docs/SECURITY.md +17 -0
- package/docs/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +8 -3
- package/docs/architecture/05-config-governance.md +52 -5
- package/docs/architecture/05-customer-profiles.md +2 -2
- package/docs/architecture/06-operations-runbook.md +13 -1
- package/docs/architecture/09-security-and-data.md +1 -1
- package/docs/configuration.md +4 -3
- package/docs/decisions/0004-documentation-structure.md +1 -1
- package/driver/CHANGELOG.md +121 -1
- package/driver/README.md +2 -2
- package/driver/ask-ledger.mjs +3 -3
- package/driver/authority-trees.mjs +1 -1
- package/driver/call-capture.mjs +1 -1
- package/driver/card-frame.mjs +1 -1
- package/driver/case-law-ledger.mjs +1 -1
- package/driver/claim-liveness.mjs +1 -1
- package/driver/common-law-receipts.mjs +2 -2
- package/driver/commonlaw-carry.mjs +1 -1
- package/driver/config-inventory.mjs +1 -1
- package/driver/config-staleness.mjs +1 -1
- package/driver/connotation-search.mjs +12 -12
- package/driver/contract-audit.mjs +5 -5
- package/driver/contract-dictation-registry.mjs +4 -4
- package/driver/contract-dictation.mjs +2 -2
- package/driver/contract-e3-backlog.mjs +6 -6
- package/driver/contract-vocabulary.mjs +3 -3
- package/driver/corrections-feedforward.mjs +1 -1
- package/driver/coverage-form-io.mjs +2 -2
- package/driver/coverage-form.mjs +4 -4
- package/driver/coverage-ledger.mjs +3 -3
- package/driver/coverage-union.mjs +1 -1
- package/driver/declination-call.mjs +35 -3
- package/driver/declination-duty.mjs +1 -1
- package/driver/deliver-trigger.sh +3 -3
- package/driver/deploy-live-run-guard.mjs +6 -2
- package/driver/dev-portal.mjs +3 -3
- package/driver/disposition-call.mjs +4 -4
- package/driver/disposition-tool.mjs +4 -4
- package/driver/disposition-union.mjs +2 -2
- package/driver/doc-constants.mjs +1 -1
- package/driver/door-gates.mjs +2 -2
- package/driver/doubt-selection.mjs +2 -2
- package/driver/drainer-identity.mjs +1 -1
- package/driver/driver.config.mjs +64 -12
- package/driver/e2e-rounds.mjs +2 -2
- package/driver/effort-model.mjs +2 -2
- package/driver/engine/anthropic-agent.mjs +24 -24
- package/driver/engine/auth.mjs +1 -1
- package/driver/engine/cli-version.mjs +103 -0
- package/driver/engine/common.mjs +1 -1
- package/driver/engine/deny-authority-write.mjs +1 -1
- package/driver/engine/jx-turn.mjs +1 -1
- package/driver/engine/mcp/clarivate-server.mjs +1 -1
- package/driver/engine/mcp/corsearch-server.mjs +1 -1
- package/driver/engine/mcp/declination-server.mjs +1 -1
- package/driver/engine/mcp/dispositions-server.mjs +1 -1
- package/driver/engine/mcp/euipo-server.mjs +1 -1
- package/driver/engine/mcp/fetch-server.mjs +1 -1
- package/driver/engine/mcp/free-tier-server.mjs +2 -2
- package/driver/engine/mcp/gather-config.mjs +11 -11
- package/driver/engine/mcp/perplexity-server.mjs +1 -1
- package/driver/engine/mcp/recording-server.mjs +8 -4
- package/driver/engine/mcp/signa-server.mjs +1 -1
- package/driver/engine/mcp/uspto-local-server.mjs +1 -1
- package/driver/engine/openai-agent.mjs +2 -2
- package/driver/engine-build.mjs +2 -2
- package/driver/enqueue-schema.mjs +10 -10
- package/driver/enqueue.mjs +1 -1
- package/driver/envelope-settle.mjs +1 -1
- package/driver/evidence-claim-invariant.mjs +2 -2
- package/driver/feedback-store.mjs +1 -1
- package/driver/findings-model.mjs +60 -10
- package/driver/flag-snapshot.mjs +20 -0
- package/driver/floor-duty.mjs +1 -1
- package/driver/form-neighbourhood.mjs +1 -1
- package/driver/framework.mjs +2 -2
- package/driver/gateway.mjs +45 -23
- package/driver/grounds-grammar.mjs +1 -1
- package/driver/hit-list.mjs +1 -1
- package/driver/jurisdiction-systems.mjs +1 -1
- package/driver/jx-lanes.mjs +1 -1
- package/driver/jx-units.mjs +1 -1
- package/driver/jx.mjs +3 -3
- package/driver/knockout-assess-record.mjs +5 -1
- package/driver/narrative-refutation-record.mjs +3 -3
- package/driver/numeric-setting.mjs +1 -1
- package/driver/owner-use-check.mjs +184 -0
- package/driver/package.json +4 -4
- package/driver/party-facts.mjs +2 -2
- package/driver/phase0.mjs +2 -2
- package/driver/pipeline-knockout.mjs +52 -4
- package/driver/pipeline.mjs +180 -67
- package/driver/placement-diff.mjs +2 -2
- package/driver/placement-form.mjs +4 -4
- package/driver/placement-union.mjs +1 -1
- package/driver/plain-register.mjs +120 -0
- package/driver/portal-access.mjs +1 -1
- package/driver/portal-acks.mjs +1 -1
- package/driver/portal-config-view.mjs +42 -3
- package/driver/portal-families.mjs +1 -1
- package/driver/portal-local-auth.mjs +1 -1
- package/driver/portal-report.mjs +7 -7
- package/driver/portal-service.mjs +41 -22
- package/driver/portal-upstream.mjs +2 -2
- package/driver/predelivery-lint.mjs +149 -11
- package/driver/prelim-variants-record.mjs +2 -2
- package/driver/profile-page.html +11 -3
- package/driver/profile-selection.mjs +1 -1
- package/driver/profile-service.mjs +6 -6
- package/driver/profiles/README.md +3 -3
- package/driver/profiles.mjs +145 -13
- package/driver/progress.mjs +6 -6
- package/driver/provider-usage.mjs +1 -1
- package/driver/publish/demo-marking.mjs +1 -1
- package/driver/publish/index.mjs +49 -8
- package/driver/publish/knockout.mjs +42 -14
- package/driver/publish/parse.mjs +4 -4
- package/driver/publish/publish-inputs.mjs +2 -2
- package/driver/publish/register-presence.mjs +1 -1
- package/driver/publish/render-knockout.mjs +646 -144
- package/driver/publish/render.mjs +2 -2
- package/driver/publish/report-data.mjs +13 -3
- package/driver/queue-watch-probe.mjs +1 -1
- package/driver/queue-watch-verdict.mjs +1 -1
- package/driver/recall-reconciliation.mjs +1 -1
- package/driver/recipe-service.mjs +1 -1
- package/driver/record-carry.mjs +5 -5
- package/driver/recording-agreement.mjs +3 -3
- package/driver/reference-score.mjs +7 -7
- package/driver/reference-strip-signatures.mjs +20 -0
- package/driver/refusal-bound.mjs +3 -3
- package/driver/register-availability.mjs +2 -2
- package/driver/register-count.mjs +1 -1
- package/driver/register-grant-vocabulary.mjs +2 -2
- package/driver/register-plan.mjs +8 -8
- package/driver/register-records.mjs +2 -2
- package/driver/registry-fidelity.mjs +3 -3
- package/driver/remedy-accounting.mjs +1 -1
- package/driver/repair-composers.mjs +2 -2
- package/driver/repair-digest.mjs +3 -3
- package/driver/repairs.mjs +6 -6
- package/driver/replay-archive.mjs +2 -0
- package/driver/report-card-record.mjs +2 -2
- package/driver/result-noun-fields.mjs +10 -3
- package/driver/run-economics.mjs +2 -2
- package/driver/run-integrity.mjs +1 -1
- package/driver/runner.mjs +22 -22
- package/driver/scope-rules.mjs +1 -1
- package/driver/search-policy.mjs +5 -5
- package/driver/skeptic-search.mjs +1 -1
- package/driver/skills/blind-frame/SKILL.md +2 -2
- package/driver/skills/case-law-citation/SKILL.md +2 -2
- package/driver/skills/knockout-assess/SKILL.md +94 -4
- package/driver/skills/matter-frame/SKILL.md +6 -6
- package/driver/skills/matter-frame/watchlist-reference.md +2 -2
- package/driver/skills/prelim-common-law/SKILL.md +1 -1
- package/driver/skills/prelim-search/SKILL.md +3 -3
- package/driver/skills/prelim-search/report-prose.md +82 -0
- package/driver/skills/prelim-search/risk-framework-demo.manifest.json +1 -1
- package/driver/skills/prelim-search/risk-framework-triage.manifest.json +1 -1
- package/driver/skills/prelim-search/risk-framework.manifest.json +1 -1
- package/driver/skills/prelim-search/synthesis-rules.md +1 -1
- package/driver/skills/prelim-search/template-formatting.md +1 -1
- package/driver/skills/prelim-search/templates/email/generic.md +1 -1
- package/driver/skills/prelim-search/worked-examples.md +1 -1
- package/driver/skills/prelim-variants/SKILL.md +5 -5
- package/driver/stage-context.mjs +1 -1
- package/driver/stages-knockout.mjs +55 -4
- package/driver/stages.mjs +101 -44
- package/driver/stray-artifacts.mjs +2 -2
- package/driver/suite-census.json +275 -65
- package/driver/synthesis-record.mjs +1 -1
- package/driver/systemd/clearotron-client-mcp.service +1 -1
- package/driver/systemd/clearotron-portal.service +1 -1
- package/driver/systemd/render-units.mjs +1 -1
- package/driver/tokens.mjs +1 -1
- package/driver/tool-calls.mjs +1 -1
- package/driver/turnaround-bands.mjs +1 -1
- package/driver/unit-file-drift.mjs +1 -1
- package/driver/unit-inventory.mjs +297 -80
- package/driver/unit-state-verdict.mjs +20 -12
- package/driver/verify-knockout.mjs +10 -2
- package/driver/verify.mjs +13 -13
- package/driver/whatif-memo-run.mjs +72 -9
- package/driver/whatif-memo.mjs +19 -1
- package/driver/whatif-queue.mjs +1 -1
- package/driver/whatif-worker.mjs +1 -1
- package/examples/README.md +2 -2
- package/examples/grants.example.json +6 -7
- package/mcp-server/CHANGELOG.md +6 -0
- package/mcp-server/README.md +3 -3
- package/mcp-server/http-server.mjs +44 -1
- package/mcp-server/key-socket.mjs +184 -0
- package/mcp-server/lib/audit-view.mjs +69 -2
- package/mcp-server/lib/brief.mjs +15 -0
- package/mcp-server/lib/driver.mjs +7 -1
- package/mcp-server/lib/events.mjs +1 -1
- package/mcp-server/lib/http-handler.mjs +1 -1
- package/mcp-server/lib/knockout.mjs +435 -0
- package/mcp-server/lib/ops.mjs +4 -4
- package/mcp-server/lib/options.mjs +1 -1
- package/mcp-server/lib/plan.mjs +1 -1
- package/mcp-server/lib/runs.mjs +1 -1
- package/mcp-server/lib/scrub.mjs +2 -2
- package/mcp-server/lib/whatif.mjs +5 -5
- package/mcp-server/mint-token.mjs +1 -1
- package/mcp-server/package.json +2 -2
- package/mcp-server/packs/ops/EXAMPLES.md +2 -2
- package/mcp-server/server.mjs +77 -12
- package/package.json +30 -12
- package/portal-ui/dist/assets/{index-Ct3iQtZ2.css → index-1ziUJX1E.css} +43 -2
- package/portal-ui/dist/assets/{index-BUGgiYtF.js → index-CEYvXdqH.js} +226 -49
- package/portal-ui/dist/index.html +2 -2
- package/portal-ui/package.json +1 -1
- package/providers/_shared/enumerate.mjs +1 -1
- package/providers/_shared/ledger-path.mjs +3 -3
- package/providers/_shared/ledger.mjs +1 -1
- package/providers/_shared/result-shape.mjs +3 -3
- package/providers/_shared/term-shape.mjs +2 -2
- package/providers/corsearch/src/core.js +1 -1
- package/providers/jx-subclass/BUILDING.md +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +6 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
- package/providers/uspto-local/src/index-store.js +2 -2
- package/scripts/README.md +1 -1
- package/scripts/added-reference-check.mjs +29 -1
- package/scripts/authority-boundary-probe.mjs +1 -1
- package/scripts/backfill-started-at.mjs +1 -1
- package/scripts/citation-line-check.mjs +124 -5
- package/scripts/compare.mjs +2 -2
- package/scripts/contract-dictation-scan.mjs +2 -2
- package/scripts/dead-names.mjs +1 -1
- package/scripts/drain-preflight.mjs +5 -5
- package/scripts/e2e-unread-terminals.mjs +1 -1
- package/scripts/e2e.mjs +8 -8
- package/scripts/env-audit.mjs +7 -7
- package/scripts/env-classify.mjs +206 -18
- package/scripts/freeze-example-run.mjs +3 -3
- package/scripts/head-arrived-gated.mjs +1 -1
- package/scripts/headless-page.mjs +51 -2
- package/scripts/live-surface-check.mjs +129 -19
- package/scripts/main-health.mjs +1 -1
- package/scripts/merge-presence-check.mjs +3 -3
- package/scripts/mint-suite-census.mjs +6 -6
- package/scripts/nightly-notice.mjs +1 -3
- package/scripts/preinstall-node-check.mjs +24 -0
- package/scripts/reconcile-runs.mjs +1 -1
- package/scripts/release-await-cut.mjs +6 -4
- package/scripts/release-version-pr-checks.mjs +1 -1
- package/scripts/release-version.mjs +2 -2
- package/scripts/render-check.mjs +66 -7
- package/scripts/report-frame-check.mjs +1 -1
- package/scripts/report-screenshot.mjs +1 -1
- package/scripts/revisit-render-check.mjs +1 -1
- package/scripts/score.mjs +4 -4
- package/scripts/strip-tracker-citations.mjs +139 -0
- package/scripts/test-run.mjs +19 -3
- package/scripts/third-party-notices.mjs +3 -3
- package/scripts/travelling-predicates.mjs +3 -3
- package/scripts/unexecuted-asserts.mjs +2 -2
- package/scripts/verify-publishable.mjs +2 -2
- package/scripts/write-up-form-census.mjs +1 -1
- package/shared/access-audience.mjs +1 -1
- package/shared/anon-overlay.mjs +3 -3
- package/shared/brand.mjs +13 -13
- package/shared/citation-scan.mjs +1 -1
- package/shared/client-door.mjs +7 -7
- package/shared/customer-store.mjs +1 -1
- package/shared/driver-dir.mjs +1 -1
- package/shared/env-aliases.mjs +0 -48
- package/shared/env-local.mjs +1 -1
- package/shared/identifier-scan.mjs +3 -3
- package/shared/invocation.mjs +29 -1
- package/shared/names-in-force.mjs +4 -0
- package/shared/node-floor.mjs +97 -0
- package/shared/product-owned-names.mjs +1 -1
- package/shared/register-selection.mjs +1 -1
- package/shared/scope.mjs +5 -5
- package/shared/server-units.mjs +4 -4
- package/shared/staff-domain.mjs +154 -0
- package/shared/store-in-repo.mjs +25 -4
- package/shared/suite-census.mjs +4 -4
- package/shared/tty-style.mjs +1 -1
- package/shared/uspto-index-size.mjs +1 -1
- package/shared/vacuous-pass.mjs +1 -1
- package/skills/clearotron-account/SKILL.md +42 -13
- package/skills/clearotron-ops/SKILL.md +1 -1
- package/driver/recipes/README.md +0 -49
- package/driver/skills/prelim-search/risk-framework-aurora.manifest.json +0 -19
- package/driver/skills/prelim-search/risk-framework-aurora.md +0 -77
- package/driver/skills/prelim-search/risk-framework-zephyr.manifest.json +0 -14
- package/driver/skills/prelim-search/risk-framework-zephyr.md +0 -33
- package/driver/skills/prelim-search/worked-examples-aurora.md +0 -10
- package/driver/skills/prelim-search/worked-examples-zephyr.md +0 -10
- package/driver/systemd/prelim-driver.path +0 -69
- package/driver/systemd/prelim-driver.service +0 -86
- package/driver/systemd/prelim-driver.timer +0 -14
- package/driver/systemd/prelim-outbox.path +0 -27
- package/driver/systemd/prelim-outbox.service +0 -37
- package/driver/systemd/prelim-outbox.timer +0 -21
- package/node_modules/exceljs/README_zh.md +0 -2878
- package/node_modules/exceljs/dist/LICENSE +0 -22
- package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
- package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
- package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
- package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
- package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
- package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
- package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
- package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
- package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
- package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
- package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
- package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
- package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
- package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
- package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
- package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
- package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
- package/node_modules/exceljs/dist/es5/index.js +0 -15
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
- package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
- package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
- package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
- package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
- package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
- package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
- package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
- package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.js +0 -59900
- package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
- package/node_modules/exceljs/dist/exceljs.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
- package/scripts/ai-page-render-check.mjs +0 -532
- package/scripts/clearances-render-check.mjs +0 -480
- package/scripts/composer-render-check.mjs +0 -1027
- package/scripts/deploy-test.sh +0 -309
- package/scripts/home-render-check.mjs +0 -526
- package/scripts/portal-lifecycle-check.mjs +0 -639
|
@@ -165,21 +165,50 @@ question to the issuing firm rather than reconstructing an answer.
|
|
|
165
165
|
|
|
166
166
|
## Asking what-if
|
|
167
167
|
|
|
168
|
-
A what-if
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
168
|
+
A what-if answers *what if this were different* about a search that has already run. There are two, and
|
|
169
|
+
the search's own state decides which one you can have:
|
|
170
|
+
|
|
171
|
+
- a **step re-run**, while the search is still live — one step runs again under a changed assumption, in
|
|
172
|
+
a sandbox;
|
|
173
|
+
- a **memo**, once the search is delivered or archived — the evidence already gathered is read again
|
|
174
|
+
under the assumption, and a short document comes back naming the report it belongs to.
|
|
175
|
+
|
|
176
|
+
Either is the wrong tool when the user wants a fresh answer about a different mark. That is a new search.
|
|
177
|
+
|
|
178
|
+
**On a delivered report, offer the memo.** A step re-run is refused there, and that refusal is the one
|
|
179
|
+
that used to end the conversation with *commission a fresh search*. It should not. A user holding a
|
|
180
|
+
report who asks *what if the Korean application were abandoned* is asking the most ordinary question
|
|
181
|
+
there is, and the memo is the answer to it — so check the search's state before you tell anyone the
|
|
182
|
+
question cannot be answered.
|
|
183
|
+
|
|
184
|
+
- **Name the step when you ask for a re-run; do not when you ask for a memo.** `what_if_plan` has to be
|
|
185
|
+
told which step, and asking without one is an error rather than a refusal you can relay. A memo re-runs
|
|
186
|
+
no step: pass the user's assumption as `instructions` and nothing else.
|
|
187
|
+
- **Plan, read the honesty note aloud, then commit.** `what_if_plan` says in plain words how complete the
|
|
188
|
+
answer will be. Re-running an early step does **not** re-run the risk read or the report on top of it,
|
|
189
|
+
and a user who is not told that will read a partial output as a new verdict. Say it before you spend,
|
|
190
|
+
not after.
|
|
191
|
+
- **It is not instant.** Both kinds queue on the server and run there. Tell the user it is running and
|
|
192
|
+
collect it with `what_if_result` rather than promising an immediate answer.
|
|
178
193
|
- **You do not choose how it runs.** There is no model or tier for you to pick, and asking for one is
|
|
179
194
|
refused. Express the change in `instructions`, in the user's own terms.
|
|
180
|
-
- **The original is untouched, and say so.**
|
|
181
|
-
Present the result as *what this
|
|
182
|
-
|
|
195
|
+
- **The original is untouched, and say so.** Neither kind edits the delivered search or its report.
|
|
196
|
+
Present the result as *what this would have said under that assumption*, never as a correction to the
|
|
197
|
+
report the user already holds.
|
|
198
|
+
|
|
199
|
+
### What a memo is, and what it is not
|
|
200
|
+
|
|
201
|
+
Say all three when you offer one, not when you deliver it. A user who learns the bounds afterwards has
|
|
202
|
+
already read it as something it is not.
|
|
203
|
+
|
|
204
|
+
- **It searches nothing.** No register is queried and no new evidence is gathered. It reasons over what
|
|
205
|
+
the search already found, and costs nothing beyond model time.
|
|
206
|
+
- **It cannot confirm the assumption.** It says what would follow *if* the assumption held, and states
|
|
207
|
+
what the smallest piece of work would be that could settle whether it does. It is not a finding that
|
|
208
|
+
the Korean application was abandoned; it is what that would mean if it were.
|
|
209
|
+
- **A stopped search takes neither kind.** A search its owner cancelled has evidence that was never
|
|
210
|
+
finished, and reasoning over a half-gathered record is how a memo comes to say more than the search
|
|
211
|
+
ever knew.
|
|
183
212
|
|
|
184
213
|
## Before you start a search
|
|
185
214
|
|
|
@@ -41,7 +41,7 @@ Extract from the request, faithfully (verbatim beats paraphrase):
|
|
|
41
41
|
- **`forwarder`** (+ `forwarderEmail`) — the requester/reply route. REQUIRED, no default: this is
|
|
42
42
|
where the report goes; a wrong route misdelivers a confidential document.
|
|
43
43
|
- **`profileKey`** — call **`list_profiles`** and resolve by JUDGMENT: an explicit name, a
|
|
44
|
-
misspelling (
|
|
44
|
+
misspelling (a name typed as it sounds), or an implicit reference ("our functional-beverage client") all
|
|
45
45
|
map to a key. OMIT it for a new/unknown customer (the neutral generic profile applies — this is
|
|
46
46
|
non-blocking by design). Ask the requester only when you genuinely cannot tell. **Never pick a
|
|
47
47
|
profile from the sender's email domain.**
|
package/driver/recipes/README.md
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Saved searches ("recipes")
|
|
2
|
-
|
|
3
|
-
One subdirectory per customer — `aurora/` and `zephyr/` — each holding one JSON file per saved search at
|
|
4
|
-
`<customer>/<slug>.json`; the loader walks directories only, so nothing else here is a store. A recipe is a
|
|
5
|
-
small named bundle: a base product, optional component toggles, an optional `scope` block (where the
|
|
6
|
-
machinery points: `jurisdictions`, `platforms`, `classes`), and instruction-shaped `extras`.
|
|
7
|
-
The display field is `label`, deliberately not `name` — `name` is a profile key, and the two key sets are
|
|
8
|
-
disjoint by design, so a saved search can never carry rating config.
|
|
9
|
-
|
|
10
|
-
## What reads it
|
|
11
|
-
|
|
12
|
-
`loadRecipes()` in `../search-policy.mjs` walks `<dir>/<customer>/<slug>.json` into a
|
|
13
|
-
`Map("customer/slug" → recipe)`, validating each file with `validateRecipe` — the same validator the write
|
|
14
|
-
door uses, so the UI cannot persist a recipe the driver would later reject. `resolveSearchPolicy` then
|
|
15
|
-
turns a job's `recipeKey` into the product, components, extras and scope the run uses; a recipe only runs
|
|
16
|
-
for its own customer, and an `archived` one refuses with a clarify.
|
|
17
|
-
|
|
18
|
-
The write side is `../recipe-service.mjs` (loopback, CF Access JWT, git auto-commit as the verified
|
|
19
|
-
identity). The portal mounts those routes through `../portal-upstream.mjs`, which rebuilds the customer
|
|
20
|
-
path segment from the resolved account; `../dev-portal.mjs` proxies `/recipes/*` for dev.
|
|
21
|
-
|
|
22
|
-
**The store is named, never guessed.** `CLEAROTRON_RECIPES_DIR` unset means the deployment has no saved
|
|
23
|
-
searches — not that it falls back to this directory. That fallback existed and was removed: production is
|
|
24
|
-
exactly where the variable is unset, so it would have surfaced invented customers inside the product.
|
|
25
|
-
|
|
26
|
-
## These are synthetic demos
|
|
27
|
-
|
|
28
|
-
`aurora` and `zephyr` are fictional customers (`../profiles/aurora.json`, `../profiles/zephyr.json`) that
|
|
29
|
-
exist so the dev cockpit and the test suite have something to render. A real deployment's recipes live
|
|
30
|
-
outside the repo, in the customer-config store beside the profiles — no client data in git.
|
|
31
|
-
|
|
32
|
-
| File | Base product, and any extras it carries |
|
|
33
|
-
|---|---|
|
|
34
|
-
| `aurora/quarterly-screen.json` | `knockout-search`, `extras.emailTable` |
|
|
35
|
-
| `aurora/screen-with-register-counts.json` | `knockout-search` |
|
|
36
|
-
| `zephyr/standard-clearance.json` | `multi-country-focus-search`, `extras.standingInstructions` + `extras.defaultDeadlineDays` |
|
|
37
|
-
|
|
38
|
-
Two of them carry settings the product no longer offers, which is not an oversight: `emailTable` is inert
|
|
39
|
-
but still validated so recipes written while it worked keep loading, and `defaultDeadlineDays` is a retired
|
|
40
|
-
extra that `loadRecipes` drops on read and `validateRecipe` refuses on save. A stored recipe must not brick
|
|
41
|
-
on a change it never asked for.
|
|
42
|
-
|
|
43
|
-
## Where to start
|
|
44
|
-
|
|
45
|
-
`zephyr/standard-clearance.json` — twelve lines, and the one whose `extras` show both what an
|
|
46
|
-
instruction-shaped setting looks like (`standingInstructions`) and what a retired one looks like still
|
|
47
|
-
sitting in a stored file. Then the recipe block in `../search-policy.mjs` (`RECIPE_KEYS`,
|
|
48
|
-
`RECIPE_SCOPE_KEYS`, `RECIPE_EXTRA_KEYS`, `validateRecipe`), which is where every rule above is enforced
|
|
49
|
-
and commented.
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema_version": 1,
|
|
3
|
-
"framework_key": "aurora",
|
|
4
|
-
"title": "Aurora Interactive risk framework (synthetic demo)",
|
|
5
|
-
"source_deck": "Synthetic demo transposition of a customer risk deck (structure faithful, content invented), doc 50 shape",
|
|
6
|
-
"entity_label": "Aurora Interactive",
|
|
7
|
-
"bands": [
|
|
8
|
-
{ "label": "Very High", "tone": "severe" },
|
|
9
|
-
{ "label": "High", "tone": "high" },
|
|
10
|
-
{ "label": "Medium", "tone": "medium" },
|
|
11
|
-
{ "label": "Manageable", "tone": "low" },
|
|
12
|
-
{ "label": "Low", "tone": "minimal" }
|
|
13
|
-
],
|
|
14
|
-
"structure": {
|
|
15
|
-
"kind": "matrix",
|
|
16
|
-
"axes": ["Legal Risk Level (A–E)", "Dispute Type"],
|
|
17
|
-
"display_note": "The band is read off this framework's Level × Dispute Type matrix; the matrix ceilings are stated in the deck and honoured as written."
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Risk framework — Aurora Interactive (SYNTHETIC demo customer)
|
|
2
|
-
|
|
3
|
-
- **Applies to:** Aurora Interactive matters (`profileKey: aurora`).
|
|
4
|
-
- **Source:** house-authored demonstration framework. Matrix-shaped, to exercise the two-input path.
|
|
5
|
-
- **Bands, highest to lowest:** Very High · High · **Medium** · Manageable · **Low** (this framework, unlike the house default, has a Low band — its Level A output).
|
|
6
|
-
- **Entity in prose:** **Aurora Interactive** (name the company; acquired studios are self-exclusions, not the entity).
|
|
7
|
-
- **Customer emphasis:** defensibility-first and conservative — lead with a clear go / no-go and the practical "would they actually enforce" read; surface an alternative-name track early on a headline conflict.
|
|
8
|
-
|
|
9
|
-
*A rubric to be reasoned with — not paraphrased away and not reduced to a lookup.* This framework RATES Aurora Interactive matters (doc 50). It is **matrix-shaped**: reason the two inputs below in order — the Legal Risk Level, then the Dispute Type — and read the band off the matrix. **State the rating as the band word** (Very High / High / Medium / Manageable / Low); the numerals beside the bands are internal indices, never the output. The engine applies this framework on an advisory basis; the senior lawyer makes the final determination. The firm-wide reasoning discipline — the consumer-confusion gate, the dominant-element rule, crowded-field handling, G&S discipline — lives in [`synthesis-rules.md`](synthesis-rules.md) and applies under every framework; Aurora calibration examples live in [`worked-examples-aurora.md`](worked-examples-aurora.md).
|
|
10
|
-
|
|
11
|
-
## Legal Risk Levels (probability adverse party prevails)
|
|
12
|
-
|
|
13
|
-
| Level | Probability | Description |
|
|
14
|
-
|-------|------------|-------------|
|
|
15
|
-
| **A** | 0–24% | Weak claim, negligible risk, strong defences available |
|
|
16
|
-
| **B** | 25–49% | Some credible claims but more likely to prevail; manageable |
|
|
17
|
-
| **C** | 51–60% | Better than even chance of adverse outcome; material risk, may need settlement |
|
|
18
|
-
| **D** | 61–74% | Likely adverse outcome; some credible defences but unsuccessful result expected |
|
|
19
|
-
| **E** | 75%+ | Strong claim / slam dunk against us; no or only weak defences |
|
|
20
|
-
|
|
21
|
-
> **The letter follows the words (consistency rule — apply to every rated finding).** State the likelihood of confusion in plain words *first* — "more likely than not they'd win", "better-than-even is not reached", "confusion is unlikely", "distinguishable as wholes" — **then pick the letter those words require**: better-than-even reached → **C–E**; not reached → **A or B** (B = 25–49%, "credible claim but we have the better of it"). The prose read and the A–E letter are **one judgment and may not disagree.**
|
|
22
|
-
|
|
23
|
-
## Dispute Types
|
|
24
|
-
|
|
25
|
-
| Type | Characteristics |
|
|
26
|
-
|------|----------------|
|
|
27
|
-
| **Classic** | Actual confusion anticipated, well-known/famous mark, aggressive brand owner, direct industry competitor |
|
|
28
|
-
| **Horse Trade** | Market overlap, settlement likely with payment or use restrictions |
|
|
29
|
-
| **Paper Conflict** | Material register risk but no obvious market overlap in practice |
|
|
30
|
-
| **Descriptive Terms** | Descriptiveness defence available, or extensive unregistered use weakens distinctiveness |
|
|
31
|
-
| **Nuisance Claim** | Weak claim but party may still complain (trolls, squatters, speculative filings) |
|
|
32
|
-
|
|
33
|
-
## The band matrix — reason the two inputs, then read the band off the matrix
|
|
34
|
-
|
|
35
|
-
The band is **derived from two reasoned inputs, in this order — it is not chosen freely, and no practical /
|
|
36
|
-
optics factor moves the band directly:**
|
|
37
|
-
|
|
38
|
-
1. **Legal Risk Level (A–E) — first.** Answers one question: *"if this third party sued Aurora Interactive,
|
|
39
|
-
would they win?"* Set it from the likelihood-of-confusion comparison (marks-as-wholes × goods/services; see
|
|
40
|
-
`synthesis-rules.md` → *The consumer confusion test*), net of merits defences. (50% is not allowed — take a
|
|
41
|
-
view.) Applies to registered AND common-law rights.
|
|
42
|
-
2. **Dispute Type — second.** Classic / Horse Trade / Paper Conflict / Descriptive (or extensive-use) / Nuisance.
|
|
43
|
-
|
|
44
|
-
Then read the **band off the matrix** — this is the *output*; you do not adjust it afterwards:
|
|
45
|
-
|
|
46
|
-
| Band | Requires |
|
|
47
|
-
|---|---|
|
|
48
|
-
| **Very High** *(5)* | Level **D or E** AND **Classic** |
|
|
49
|
-
| **High** *(4)* | Level **D or E** AND (**Horse Trade** or **Nuisance**) |
|
|
50
|
-
| **Medium** *(3)* | Level **C / D / E** AND (**Paper** or **Descriptive**) — OR — Level **C** AND (**Horse Trade** / **Classic** / **Nuisance**) |
|
|
51
|
-
| **Manageable** *(2)* | Level **B** (routinely accepted; still alert on a troll/squatter, a known competitor / major brand owner, or heavy clean-up cost) |
|
|
52
|
-
| **Low** *(1)* | Level **A** |
|
|
53
|
-
|
|
54
|
-
**The ceilings are hard — and they ARE this framework's anti-escalation mechanism:**
|
|
55
|
-
- **High and Very High REQUIRE Legal Level D or E.** A **Level-C finding tops out at Medium**, whatever the
|
|
56
|
-
dispute type or the practical factors. **Level A → Low and Level B → Manageable are fixed.**
|
|
57
|
-
- **Elevate / mitigate considerations move the INPUTS — the Legal Level or the Dispute Type — never the output
|
|
58
|
-
band** (the factor lists live in `synthesis-rules.md`). A "confirmed aggressive enforcer", owner size, PR
|
|
59
|
-
sensitivity, or an Aurora Interactive partnership cannot lift a finding past its level's ceiling: they only
|
|
60
|
-
change *whether they'd win* (the Level) or the *character* of the dispute (the Type), and the matrix then
|
|
61
|
-
produces the band. This is exactly the optics-escalation error the ceilings prevent — a Level-C read does NOT
|
|
62
|
-
become High because the owner enforces aggressively; a house-mark-distinguished Level-B mark does NOT become
|
|
63
|
-
Very High because the owner is large or a partner.
|
|
64
|
-
|
|
65
|
-
**Calibration anchors (structure-faithful; the mark names are invented, the anchor companies are real and named only as public examples of scale):** VELARIS / POLARIS-class famous-mark conflicts = Level
|
|
66
|
-
**E** + **Classic** = **Very High**; TerraForge / TerraFlex = Level **E** + **Horse Trade** = **High**;
|
|
67
|
-
Northgate / NorthData = Level **D** + **Horse Trade** = **High**.
|
|
68
|
-
|
|
69
|
-
## Band meanings
|
|
70
|
-
|
|
71
|
-
| Band | Meaning | Typical Response |
|
|
72
|
-
|-------|---------|-----------------|
|
|
73
|
-
| **Very High** | Generally not accepted | Run alternative name in parallel |
|
|
74
|
-
| **High** | May accept with strong mitigation | Requires active risk management plan |
|
|
75
|
-
| **Medium** | May accept with settlement/clean-up plan | Proceed with awareness and contingency |
|
|
76
|
-
| **Manageable** | Routinely accepted | Note and monitor |
|
|
77
|
-
| **Low** | Target outcome | Proceed with confidence |
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema_version": 1,
|
|
3
|
-
"framework_key": "zephyr",
|
|
4
|
-
"title": "Zephyr Beverages risk framework (synthetic demo)",
|
|
5
|
-
"source_deck": "Synthetic demo transposition of a customer risk deck (structure faithful, content invented), doc 50 shape",
|
|
6
|
-
"entity_label": "Zephyr/Volt/Kaskade",
|
|
7
|
-
"bands": [
|
|
8
|
-
{ "label": "Very High", "tone": "severe" },
|
|
9
|
-
{ "label": "High", "tone": "high" },
|
|
10
|
-
{ "label": "Medium", "tone": "medium" },
|
|
11
|
-
{ "label": "Manageable", "tone": "low" }
|
|
12
|
-
],
|
|
13
|
-
"structure": { "kind": "bands" }
|
|
14
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Risk framework — Zephyr Beverages (SYNTHETIC demo customer)
|
|
2
|
-
|
|
3
|
-
- **Applies to:** Zephyr matters (`profileKey: zephyr`).
|
|
4
|
-
- **Source:** house-authored demonstration framework. The house default with a different entity family and one band relabelled.
|
|
5
|
-
- **Bands, highest to lowest:** Very High · High · **Medium** · Manageable. There is no "Low"; Manageable is the lowest band.
|
|
6
|
-
- **Entity in prose:** **Zephyr/Volt/Kaskade** — name the brand family, not "the company".
|
|
7
|
-
- **Customer emphasis:** pragmatic and launch-oriented — a clear go / no-go and the facts that condition each real blocker, rather than exhaustive caveats. (Express this emphasis in the product voice: facts that condition, never a recommended "path" — retired voice, 2026-07-28.)
|
|
8
|
-
|
|
9
|
-
*This is the house default with exactly two differences: the entity family, and band 3 is labelled **Medium** (not "Moderate"). A rubric to be reasoned with, not paraphrased.* This framework RATES the matter (doc 50): reason each conflict through the band definitions below — Legal position first, then Practical position, then Potential outcomes — and the band follows the words. A conflict Zephyr/Volt/Kaskade clearly wins with no material risk is **not a rated conflict** (there is no "Low" band; see `synthesis-rules.md`). The engine applies this framework on an advisory basis; the senior lawyer makes the final determination. The firm-wide reasoning discipline lives in [`synthesis-rules.md`](synthesis-rules.md) and applies under every framework; Zephyr calibration examples live in [`worked-examples-zephyr.md`](worked-examples-zephyr.md).
|
|
10
|
-
|
|
11
|
-
## VERY HIGH RISK
|
|
12
|
-
|
|
13
|
-
- **Legal position.** Prior rights owner is **very likely to win** and there are **no** credible defences or risk-mitigation strategies available to **Zephyr/Volt/Kaskade**.
|
|
14
|
-
- **Practical position (one or more).** There is an obvious market overlap or risk of actual confusion — coexistence does not appear possible, even with payment of money, use restrictions or other exchange; **or** the prior mark is famous, owned by a known aggressor, or an industry competitor.
|
|
15
|
-
- **Potential outcomes.** Name change likely required, possibly on an urgent basis · monetary exposure **more than $10 million** · severe PR consequences · highly unlikely to mitigate risk irrespective of time and money.
|
|
16
|
-
|
|
17
|
-
## HIGH RISK
|
|
18
|
-
|
|
19
|
-
- **Legal position.** Prior rights owner is **likely to win**, although some credible defences are available to **Zephyr/Volt/Kaskade**.
|
|
20
|
-
- **Practical position.** There is possible market overlap, but co-existence appears possible with settlement involving payment of money, use restrictions, and/or other exchange.
|
|
21
|
-
- **Potential outcomes.** Name change may be required, possibly on an urgent basis · high business disruption possible · monetary exposure **up to $10 million** · PR consequences · cleanup or mitigation may be possible depending on time and budget.
|
|
22
|
-
|
|
23
|
-
## MEDIUM RISK
|
|
24
|
-
|
|
25
|
-
- **Legal position.** Prior rights owner is **more likely than not to win**, although reasonable defences or risk-mitigation steps are available to **Zephyr/Volt/Kaskade**.
|
|
26
|
-
- **Practical position (one or more).** There is no obvious market overlap; **or** risk-mitigation strategies are available to Zephyr/Volt/Kaskade (e.g. the prior mark is arguably weak or vulnerable to attack); **or** there are practical factors which suggest the prior rights owner may not object (e.g. settlement discussions are underway).
|
|
27
|
-
- **Potential outcomes.** Name change may be required, possibly on an urgent basis · business disruption possible · monetary exposure **$5 to 7 figures** · PR consequences possible · cleanup or mitigation may be possible depending on time and budget.
|
|
28
|
-
|
|
29
|
-
## MANAGEABLE RISK *(lowest band)*
|
|
30
|
-
|
|
31
|
-
- **Legal position.** **Zephyr/Volt/Kaskade** is **more likely than not to win**, although there is still material risk and uncertainty.
|
|
32
|
-
- **Practical position.** This level of risk includes nuisance claims, strategic (but weak) complaints by a competitor, and registration obstacles.
|
|
33
|
-
- **Potential outcomes.** Budget potentially required for prosecution hurdles and nuisance claims.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Example per-customer worked examples — aurora (synthetic)
|
|
2
|
-
|
|
3
|
-
Synthetic placeholder demonstrating a profile's `workedExamplesPath` hook. Real per-customer worked
|
|
4
|
-
examples are a customer-config-store artifact, not repo code.
|
|
5
|
-
|
|
6
|
-
**Convention (P6):** a per-customer file ADDS CALIBRATION and never replaces the voice. The before/after
|
|
7
|
-
voice pairs live in [`worked-examples.md`](worked-examples.md) → *Voice — worked before / after pairs*, and
|
|
8
|
-
a customer artifact that omits them leaves this customer's runs without the examples the house voice is
|
|
9
|
-
learned from. The house prose contract itself is carried unconditionally by the stage message, so the RULES
|
|
10
|
-
reach every run regardless of profile — it is the worked pairs that a replacement file can silently drop.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Example per-customer worked examples — zephyr (synthetic)
|
|
2
|
-
|
|
3
|
-
Synthetic placeholder demonstrating a profile's `workedExamplesPath` hook. Real per-customer worked
|
|
4
|
-
examples are a customer-config-store artifact, not repo code.
|
|
5
|
-
|
|
6
|
-
**Convention (P6):** a per-customer file ADDS CALIBRATION and never replaces the voice. The before/after
|
|
7
|
-
voice pairs live in [`worked-examples.md`](worked-examples.md) → *Voice — worked before / after pairs*, and
|
|
8
|
-
a customer artifact that omits them leaves this customer's runs without the examples the house voice is
|
|
9
|
-
learned from. The house prose contract itself is carried unconditionally by the stage message, so the RULES
|
|
10
|
-
reach every run regardless of profile — it is the worked pairs that a replacement file can silently drop.
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
[Unit]
|
|
2
|
-
Description=Watch the prelim-search driver queue for new job files
|
|
3
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
4
|
-
|
|
5
|
-
[Path]
|
|
6
|
-
# Watch EVERY prelim-capable agent's queue (inotify-backed). When a *.json job lands in any of them, start
|
|
7
|
-
# the drain service — which runs the job as the agent whose workspace it sits in. One PathExistsGlob per
|
|
8
|
-
# watched queue ("Multiple directives may be combined … to watch multiple paths" — systemd.path(5)).
|
|
9
|
-
# Event-driven, sub-second; nothing of ours runs except while a job is being processed. The
|
|
10
|
-
# prelim-driver.timer fallback re-drains every ~90s so a queue NOT listed here (e.g. a brand-new agent, or
|
|
11
|
-
# a mid-path glob systemd fails to arm) still gets picked up — the watcher is an optimisation over the timer,
|
|
12
|
-
# never the sole drain path.
|
|
13
|
-
#
|
|
14
|
-
# These lines MUST mirror config.queueDirs (driver.config.mjs) — the runner drains those regardless, so any
|
|
15
|
-
# queue the runner scans but the watcher misses only pays the ≤90s timer latency (the pre-fix bug: this unit
|
|
16
|
-
# watched only the headless dir below, which does not exist in an agent-workspace deployment, so event-driven
|
|
17
|
-
# pickup was dead and the queue drained on the timer alone — and wedged entirely whenever the timer was down).
|
|
18
|
-
#
|
|
19
|
-
# ── tracker issue 774 — THESE GLOBS ARE THIS DEPLOYMENT'S WORKSPACE ROOT, NOT THE CODE DEFAULT ────────────────────
|
|
20
|
-
#
|
|
21
|
-
# A .path unit CANNOT read an environment variable. There is no `%E`, no EnvironmentFile, no expansion:
|
|
22
|
-
# the prefix below is a literal, and it is the one thing in the queue lane that CLEAROTRON_WORK_DIR
|
|
23
|
-
# cannot reach. So this file and `CLEAROTRON_WORK_DIR` in %h/.env are two spellings of one fact, and
|
|
24
|
-
# nothing at runtime notices when they stop agreeing.
|
|
25
|
-
#
|
|
26
|
-
# WHAT DISAGREEMENT LOOKS LIKE: the runner drains $CLEAROTRON_WORK_DIR; this watcher arms an inotify on
|
|
27
|
-
# a path nothing writes to. Jobs land, the watcher never fires, no unit fails, no log line appears, and
|
|
28
|
-
# the only thing still draining is the 90s prelim-driver.timer — so the lane looks alive and every job is
|
|
29
|
-
# late. If the timer is also down, the queue simply stops.
|
|
30
|
-
#
|
|
31
|
-
# tracker issue 774 moved the CODE default for CLEAROTRON_WORK_DIR from `$HOME/.openclaw` to
|
|
32
|
-
# `$HOME/trademark/workspace`. These globs did NOT move with it, and that is correct: they must track the
|
|
33
|
-
# deployment, and the deployment pins `CLEAROTRON_WORK_DIR=<home>/.openclaw` in its EnvironmentFile
|
|
34
|
-
# (the production env example) precisely so its run directories do not move under a live queue. Change one of
|
|
35
|
-
# these three lines only together with that variable, on the same box, in the same change.
|
|
36
|
-
# driver/test/data-plane-defaults.test.mjs asserts this file and the production env example still agree.
|
|
37
|
-
#
|
|
38
|
-
# AGENT-WORKSPACE deployment (this VM): one line per prelim-capable agent. We watch each CONCRETE queue dir
|
|
39
|
-
# (only the final *.json is a wildcard) so systemd arms an inotify watch directly on the queue directory —
|
|
40
|
-
# a mid-path `workspace-*` glob is not reliably armed. Add a line when a new prelim agent is onboarded; until
|
|
41
|
-
# then the 90s timer + dynamic config.queueDirs still pick its jobs up.
|
|
42
|
-
# ── RESOLVED AT INSTALL (tracker issue 1876 option B) ────────────────────────────────────────
|
|
43
|
-
# `@CLEAROTRON_WORK_DIR@` is substituted by render-units.mjs when it writes the resolved copy into
|
|
44
|
-
# ~/.config/systemd/user/. That closes the half of the disagreement above that VARIES BY MACHINE: the
|
|
45
|
-
# workspace root is now taken from the same value the runner drains, so the two spellings cannot drift
|
|
46
|
-
# apart on an install.
|
|
47
|
-
#
|
|
48
|
-
# THE AGENT SEGMENT IS NOT SUBSTITUTED, AND THAT IS A LIMIT WORTH STATING RATHER THAN HIDING.
|
|
49
|
-
# `driver.config.mjs` builds the queue as join(workspaceRoot, workspaceDirName(agent), "studio",
|
|
50
|
-
# "prelim-search", "queue") — so the root is configuration and `workspace-clawdi` is a per-deployment
|
|
51
|
-
# choice, already documented by the commented alternative below. Substituting it would need a variable
|
|
52
|
-
# nothing sets today, and inventing one to make this line look fully resolved would be the more
|
|
53
|
-
# dangerous kind of fix: it would read as configured while resolving to whatever the default happened
|
|
54
|
-
# to be. One real value substituted beats two that look substituted.
|
|
55
|
-
PathExistsGlob=@CLEAROTRON_WORK_DIR@/workspace-clawdi/studio/prelim-search/queue/*.json
|
|
56
|
-
# One line per ADDITIONAL prelim-capable agent this deployment onboards, e.g.
|
|
57
|
-
#PathExistsGlob=%h/.openclaw/workspace-<agent>/studio/prelim-search/queue/*.json
|
|
58
|
-
# Two lines here named individual people at this firm and shipped their identities to every clone
|
|
59
|
-
# (tracker issue 1014). They are a deployment's own roster, not the product's. Omitting a line costs LATENCY and
|
|
60
|
-
# not correctness: as the note above says, the 90s timer and the dynamic config.queueDirs still
|
|
61
|
-
# collect that agent's jobs — the watch only makes them immediate.
|
|
62
|
-
# HEADLESS deployment (docs/INTAKE.md): a standalone product with no agent workspaces instead watches the one
|
|
63
|
-
# explicit queue named by CLEAROTRON_QUEUE_DIR (default ~/prelim-queue). Uncomment for that mode; harmless to
|
|
64
|
-
# leave active in a mixed deployment (never matches when the dir is absent), mirroring the additive queueDirs.
|
|
65
|
-
#PathExistsGlob=%h/prelim-queue/*.json
|
|
66
|
-
Unit=prelim-driver.service
|
|
67
|
-
|
|
68
|
-
[Install]
|
|
69
|
-
WantedBy=default.target
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# GENERIC UNIT — safe to sync verbatim on deploy: no deployment-specific values live here; hostnames,
|
|
2
|
-
# credentials and paths all come from EnvironmentFile=%h/.env. (Contrast the TEMPLATE units — profile/
|
|
3
|
-
# recipe/portal-service, remote/client-mcp — whose live copies hold real CF Access values and must be
|
|
4
|
-
# diffed, never overwritten. Both kinds are inventoried in docs/architecture/05-config-governance.md.)
|
|
5
|
-
[Unit]
|
|
6
|
-
Description=Prelim-search deterministic driver — drain the job queue
|
|
7
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
8
|
-
# No gateway dependency: compute runs on the standalone engine and delivery defaults to handoff
|
|
9
|
-
# (outbox packets) — see docs/DELIVERY.md. Nothing here needs OpenClaw.
|
|
10
|
-
# Type=oneshot fired by prelim-driver.path: if the runner fails its preflight on every retrigger
|
|
11
|
-
# (exit 3 — no longer reachable since tracker issue 1014 deleted the gateway preflight; kept because the
|
|
12
|
-
# start-limit interaction below is a property of Type=oneshot, not of that preflight), the default
|
|
13
|
-
# start-limit (5 failures in 10s) locks the service out and can drive the .path unit's TriggerLimit
|
|
14
|
-
# (200/2s) into a permanently failed state. Never rate-limit starts (Type=oneshot, no Restart= —
|
|
15
|
-
# nothing here can loop unbounded); the runner also sleeps before its preflight-fail exit so the
|
|
16
|
-
# retrigger cadence stays slow.
|
|
17
|
-
StartLimitIntervalSec=0
|
|
18
|
-
|
|
19
|
-
[Service]
|
|
20
|
-
# oneshot: systemd guarantees a single instance, so two queue events can't start two concurrent drains.
|
|
21
|
-
Type=oneshot
|
|
22
|
-
EnvironmentFile=%h/.env
|
|
23
|
-
# BOTH ROUTES THE DOCUMENTS PERMIT. INSTALL.md §1 requires "a coding CLI on your PATH, signed in" and
|
|
24
|
-
# deliberately names no install route, so the reader picks one. The npm-global layout was the only one
|
|
25
|
-
# on this line; claude.ai/install.sh -- the route a reader most often takes -- lands the binary in
|
|
26
|
-
# ~/.local/bin, which was not here. The engine then failed `spawn claude ENOENT` and every stage burned
|
|
27
|
-
# its full retry ladder for zero tokens, a failure that reads as a model problem and is not one.
|
|
28
|
-
# CLEAROTRON_CLAUDE_PATH in the EnvironmentFile above is the exact answer for any other location; this
|
|
29
|
-
# line is what makes the two documented layouts work without one.
|
|
30
|
-
Environment=PATH=%h/.local/bin:%h/.npm-global/bin:/usr/local/bin:/usr/bin:/bin
|
|
31
|
-
Environment=OPENCLAW_HOME=%h
|
|
32
|
-
# THIS deployment's configuration is the EnvironmentFile above and nothing else. runner.mjs is one of
|
|
33
|
-
# the CLI entries that reads <repo>/.env for a laptop first run (shared/env-local.mjs); a checkout has
|
|
34
|
-
# no .env today, so this changes nothing — which is the point. It makes "no .env in the checkout" a
|
|
35
|
-
# guarantee instead of a coincidence, so a stray file left by a debugging session cannot quietly
|
|
36
|
-
# reconfigure the queue drain. Same line on trademark-artifacts-http.service, the other unit that
|
|
37
|
-
# starts a wired entry.
|
|
38
|
-
Environment=CLEAROTRON_NO_ENV_FILE=1
|
|
39
|
-
# Deployment hostnames (CLEAROTRON_REPORTS_URL, CLEAROTRON_MCP_URL, CLEAROTRON_CLIENT_MCP_URL, CLEAROTRON_ACCESS_DOMAIN,
|
|
40
|
-
# CLEAROTRON_STAFF_POOL_ROOT) live in the EnvironmentFile above, NOT here — this unit is git-tracked and generic, so a
|
|
41
|
-
# hostname baked in becomes every deployment's hostname. They are non-secret; .env is simply the one place
|
|
42
|
-
# this deployment's config already lives (docs/architecture/04-configuration-reference.md).
|
|
43
|
-
#
|
|
44
|
-
# Do NOT reintroduce a placeholder value for any of them. CLEAROTRON_CLIENT_MCP_URL was pinned here to a
|
|
45
|
-
# example.com host, which is WORSE than leaving it unset: render.mjs's spec 61 §E fail-closed branch omits
|
|
46
|
-
# the client connector when the var is EMPTY, so a placeholder defeated the guard and shipped a dead
|
|
47
|
-
# tokenised link in the client export (2026-07-19). Unset ⇒ omitted; wrong ⇒ delivered.
|
|
48
|
-
# NO WorkingDirectory=, DELIBERATELY, and this is the line not to re-add defensively.
|
|
49
|
-
#
|
|
50
|
-
# systemd does not expand environment variables in WorkingDirectory= -- it takes a path and specifiers
|
|
51
|
-
# only -- so a config-derived checkout cannot go there. It does expand ${VAR} in ExecStart= ARGUMENTS,
|
|
52
|
-
# which is where the path below sits.
|
|
53
|
-
#
|
|
54
|
-
# Dropping it is safe because nothing here reads the working directory: runner.mjs never calls
|
|
55
|
-
# process.cwd(), and driver/driver.config.mjs:24 resolves REPO_ROOT as dirname(DRIVER_DIR) from
|
|
56
|
-
# import.meta.url. The code finds itself from where its file is, not from where it was started.
|
|
57
|
-
#
|
|
58
|
-
# THE HARDCODED NAME THIS REPLACES could not work after a documented install. INSTALL.md §2 says
|
|
59
|
-
# `git clone <this-repo> && cd <repo>`, which produces a directory named after the repository -- and
|
|
60
|
-
# the name in this unit was the repository this one was cut FROM. WorkingDirectory then failed and the
|
|
61
|
-
# unit never started, on a host nobody is watching.
|
|
62
|
-
# runner.mjs claims each queued job atomically, runs the pipeline, marks .done/.failed.
|
|
63
|
-
ExecStart=/usr/bin/node ${CLEAROTRON_CHECKOUT_DIR}/driver/runner.mjs
|
|
64
|
-
# Refresh the portal's flag snapshot after every drain, from THIS unit because it has the engine
|
|
65
|
-
# EnvironmentFile. The clause that used to sit here — "the portal deliberately has none (AUD-shadowing
|
|
66
|
-
# rule)" — is out of date: the owner's 2026-08-26 "one configuration per server box" ruling gave every
|
|
67
|
-
# unit the same `EnvironmentFile=%h/.env` and removed the second source of truth the AUD protection
|
|
68
|
-
# defended against. The portal and worker units now refresh it at start too (tracker issue 170); a drain
|
|
69
|
-
# is still worth refreshing after, because a run is when the engine's own posture is most recently proven.
|
|
70
|
-
# A snapshot that only refreshes when somebody remembers eventually describes a configuration nobody
|
|
71
|
-
# is running (flag-snapshot.mjs header). `-` prefix: a snapshot failure must never fail the drain.
|
|
72
|
-
ExecStartPost=-/usr/bin/node ${CLEAROTRON_CHECKOUT_DIR}/driver/flag-snapshot.mjs
|
|
73
|
-
# Ceiling for a WEDGED runner ONLY — never a deadline for honest work. oneshot means the WHOLE drain
|
|
74
|
-
# runs inside "activating", and a multi-job backlog (runs ~1.5h+ each; one observed gather member alone
|
|
75
|
-
# ~2h26m) makes honest activations unbounded. The runner bounds its own wall time instead: past its
|
|
76
|
-
# admission budget (runner.mjs CLEAROTRON_ADMISSION_BUDGET_MS, default 2h) it claims no NEW jobs, finishes
|
|
77
|
-
# what's in flight and exits 0 — leftover queue *.json re-match the .path glob, which retriggers a fresh
|
|
78
|
-
# activation with a fresh clock. So a legit activation is bounded by budget (2h) + one run's wall
|
|
79
|
-
# (worst observed component ~2h30m), and this ceiling MUST stay above that sum (see
|
|
80
|
-
# driver/test/runner.admission-budget.test.mjs) so it only ever fires on a wedged runner (one
|
|
81
|
-
# SIGTERM-immune engine child). Was 0 (infinite), which let that wedge hold the unit "activating"
|
|
82
|
-
# forever with no backstop.
|
|
83
|
-
TimeoutStartSec=6h
|
|
84
|
-
Nice=5
|
|
85
|
-
|
|
86
|
-
# NOTE: not [Install]ed — it is activated by prelim-driver.path, not enabled standalone.
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
[Unit]
|
|
2
|
-
Description=Prelim-driver queue-drain fallback — re-scan every agent queue on a fixed cadence
|
|
3
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
4
|
-
|
|
5
|
-
[Timer]
|
|
6
|
-
# Safety net behind the event-driven prelim-driver.path. runner.mjs claims jobs atomically, so a periodic
|
|
7
|
-
# re-drain is cheap and can NEVER double-run a job the .path already picked up. It guarantees any queue the .path doesn't explicitly watch (e.g. a brand-new agent workspace) still
|
|
8
|
-
# drains within ~90s — the self-healing backstop whose absence let a Alex-forwarded job silently never-run.
|
|
9
|
-
OnBootSec=2min
|
|
10
|
-
OnUnitActiveSec=90s
|
|
11
|
-
Unit=prelim-driver.service
|
|
12
|
-
|
|
13
|
-
[Install]
|
|
14
|
-
WantedBy=timers.target
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
[Unit]
|
|
2
|
-
Description=Watch the prelim delivery outbox for finished-run markers
|
|
3
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
4
|
-
|
|
5
|
-
[Path]
|
|
6
|
-
# Workstream B — instant delivery. When a handoff-mode run finishes, the driver drops <runId>.pending here
|
|
7
|
-
# (the marker's first line names the forwarder agent). inotify-backed, sub-second: a marker fires
|
|
8
|
-
# prelim-outbox.service, which wakes that agent to run the prelim-deliver skill NOW instead of waiting up to
|
|
9
|
-
# 55m for the HEARTBEAT completion-watch (which stays enabled as the backstop). Event-driven; nothing of
|
|
10
|
-
# ours runs except while a delivery is being dispatched.
|
|
11
|
-
# ── tracker issue 774 — THIS GLOB IS THIS DEPLOYMENT'S OUTBOX, NOT THE CODE DEFAULT ───────────────────────────────
|
|
12
|
-
#
|
|
13
|
-
# Same hazard as prelim-driver.path, and read that unit's note for the full version. A .path unit cannot
|
|
14
|
-
# read an environment variable, so this literal and the driver's `config.outboxDir`
|
|
15
|
-
# (CLEAROTRON_OUTBOX_DIR, else <CLEAROTRON_WORK_DIR>/prelim-outbox) are two spellings of one fact with
|
|
16
|
-
# nothing checking them against each other. Disagree, and finished runs drop their `.pending` markers
|
|
17
|
-
# where this watcher is not looking: no delivery wake, no failure, no log — the 55m completion-watch
|
|
18
|
-
# backstop quietly becomes the delivery path.
|
|
19
|
-
#
|
|
20
|
-
# tracker issue 774 moved the CODE default for the workspace root; this glob did not move, because the deployment
|
|
21
|
-
# pins `CLEAROTRON_WORK_DIR` and `CLEAROTRON_OUTBOX_DIR` explicitly (the production env example). Change this line
|
|
22
|
-
# only together with those variables, on the same box, in the same change.
|
|
23
|
-
PathExistsGlob=%h/.openclaw/prelim-outbox/*.pending
|
|
24
|
-
Unit=prelim-outbox.service
|
|
25
|
-
|
|
26
|
-
[Install]
|
|
27
|
-
WantedBy=default.target
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
[Unit]
|
|
2
|
-
Description=Prelim delivery — wake the forwarder agent to send finished runs (prelim-deliver)
|
|
3
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
4
|
-
# This unit is the OPENCLAW-ADJACENT reference integration (deliver-trigger.sh wakes an OpenClaw
|
|
5
|
-
# agent to send). A headless integrator replaces this pair with their own outbox watcher — the
|
|
6
|
-
# contract is docs/DELIVERY.md, not this unit.
|
|
7
|
-
After=openclaw-gateway.service
|
|
8
|
-
Wants=openclaw-gateway.service
|
|
9
|
-
|
|
10
|
-
[Service]
|
|
11
|
-
# oneshot: systemd serializes, so two outbox events can't start two concurrent wakes.
|
|
12
|
-
Type=oneshot
|
|
13
|
-
EnvironmentFile=%h/.env
|
|
14
|
-
Environment=PATH=%h/.npm-global/bin:/usr/local/bin:/usr/bin:/bin
|
|
15
|
-
Environment=OPENCLAW_HOME=%h
|
|
16
|
-
# NO WorkingDirectory=, deliberately -- see prelim-driver.service for the full reasoning. systemd does
|
|
17
|
-
# not expand variables in WorkingDirectory=, it does expand ${VAR} in ExecStart= arguments, and nothing
|
|
18
|
-
# here reads the working directory: this entry point resolves what it needs from its OWN file location.
|
|
19
|
-
# Reads each *.pending marker, wakes the named agent ONCE to run the prelim-deliver skill (which sends every
|
|
20
|
-
# sendPending run VERBATIM + marks .sent, idempotent), then clears the markers. The marker is only an
|
|
21
|
-
# edge-trigger; status.sendPending + the .sent guard are the source of truth and the 55m HEARTBEAT watch is
|
|
22
|
-
# the backstop, so a cleared/lost marker never loses a delivery and never double-sends.
|
|
23
|
-
ExecStart=/bin/bash ${CLEAROTRON_CHECKOUT_DIR}/driver/deliver-trigger.sh
|
|
24
|
-
# 2026-07-04 incident: TimeoutStartSec=0 (no ceiling) let ONE hung wake wedge the whole lane for 19h —
|
|
25
|
-
# 1500 covers the v2+C5 trigger worst case: wake wall 870s + drain-wait 180s + backoff pacing sleep ≤300s.
|
|
26
|
-
# the openclaw CLI completed its agent turn (stopReason=stop) but never exited (event loop parked in
|
|
27
|
-
# ep_poll; its own --timeout did not enforce process exit), so the oneshot sat "activating" forever and
|
|
28
|
-
# every later .pending marker was silently swallowed (marble-spire's delivery + VENZY's failure notice).
|
|
29
|
-
# A real ceiling makes the unit SELF-HEALING: on timeout systemd kills the cgroup and fails the unit;
|
|
30
|
-
# PathExistsGlob re-fires while markers remain, and the sendPending/.sent guards keep re-wakes idempotent.
|
|
31
|
-
# 900s comfortably covers the slowest observed legitimate wake (copper-spire: ~13 min agent turn) — sends
|
|
32
|
-
# that complete are never cut mid-flight because the ceiling exceeds the turn wall.
|
|
33
|
-
TimeoutStartSec=1500
|
|
34
|
-
TimeoutStopSec=30
|
|
35
|
-
Nice=5
|
|
36
|
-
|
|
37
|
-
# NOTE: not [Install]ed — it is activated by prelim-outbox.path, not enabled standalone.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
[Unit]
|
|
2
|
-
Description=Prelim delivery rescan — fixed-cadence backstop behind the outbox watcher
|
|
3
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
4
|
-
|
|
5
|
-
[Timer]
|
|
6
|
-
# C5 — deterministic delivery backstop. The instant lane (prelim-outbox.path) is edge-triggered off
|
|
7
|
-
# *.pending markers, and its former backstop — the 55m HEARTBEAT completion-watch — does not run
|
|
8
|
-
# 22:00–05:00 (activeHours), so a wake that FAILED (turn error, CLI hang, gateway-restart collision)
|
|
9
|
-
# could leave a finished run undelivered all night. This timer fires the SAME prelim-outbox.service:
|
|
10
|
-
# deliver-trigger.sh's rescan step re-drops a <runId>.pending marker for every run still
|
|
11
|
-
# sendPending==true with no .sent, then processes them. Idempotent and paced: sendPending/.sent (and
|
|
12
|
-
# the per-channel send receipts) are the source of truth, and the backoff sidecars in
|
|
13
|
-
# prelim-outbox/backoff/ keep a persistently failing wake from hot-retrying.
|
|
14
|
-
# OnUnitActiveSec is measured from prelim-outbox.service's LAST activation (the .path triggers the same
|
|
15
|
-
# unit), so the rescan self-defers while the instant lane is busy — "hourly-ish", never stacked.
|
|
16
|
-
OnBootSec=10min
|
|
17
|
-
OnUnitActiveSec=50min
|
|
18
|
-
Unit=prelim-outbox.service
|
|
19
|
-
|
|
20
|
-
[Install]
|
|
21
|
-
WantedBy=timers.target
|