Disciplines · Audits

Eve SOTA closure baseline — September 2026

The prompt inventory is a union of every definition that can be offered under some valid scope.

12sections11 minread

On this page

Status: point-in-time baseline for closure task 0.2
Source checkout: 778b9c874163fe9f958cfb44b54b23ab2b444eff (C0)
Local observation window: 2026-09-01T15:06:40Z through 2026-09-01T15:09:53Z (L1L5)
Machine-readable record: eve-sota-closure-baseline/2026-09-01.json

This is a baseline, not a readiness verdict. Source facts mean “present in the named checkout”; historical measurements mean “recorded by the named committed artifact”; local observations mean only this developer host in the observation window. No production or staging system was queried. A command identifier in the Evidence column resolves to the exact command and commit in the command catalog below and in the machine-readable record.

Planes, seams, tools, and views#

The prompt inventory is a union of every definition that can be offered under some valid scope. It is deliberately not the size of any one turn's served toolset: family routing, release scope, client capabilities, builder tier, and deployment bindings reduce the definitions a particular turn receives.

Plane or seam Count What the count means Evidence
Member plane 43 definitions 39 base member definitions, 3 audit definitions, and 1 deferred-family router definition C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Builder plane 46 definitions 15 admin-operation, 23 intent-workbench, 2 Hathor content-bridge, and 6 workbench-kit definitions C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Prompt-protected union 89 definitions Member and builder groups above, with no duplicate definition name C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Agent plane 6 MCP tools Queue, lease, brief, report, shipped, and verify tools; this catalog is separate from the prompt-protected union C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff; historical run commit 44733109326b09bddc7a1113cfb1b3dd1d877ce1
Quality plane 0 separate model-facing definitions Quality signs through deterministic evaluation and artifact verification; it has no additional conversational tool catalog in the inventory residual of C1's exhaustive 89-definition grouping @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Workbench-kit read seam 1 generic read tool One authenticated router spans the registered views below C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff; historical run commit 44733109326b09bddc7a1113cfb1b3dd1d877ce1
Workbench-kit write seam 5 mutation tools Each mutation is card-gated; these are included in the builder-plane count C1, C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Registered workbench Views Evidence
Tara workbench 10 C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Launch-readiness governance 2 C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Hathor 4 C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Isis 15 C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Total 31 views across 4 workbenches C4 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff; historical run commit 44733109326b09bddc7a1113cfb1b3dd1d877ce1

Stable prompt boundary#

The hash covers stable conduct variants, exact served skill text, and complete offerable tool definitions. It excludes dynamic engine, persona, daypart, memory, page, and live tour-catalog bytes. Component byte counts therefore do not claim to be the total size of a live request.

Component Baseline Evidence
SHA-256 cad7c1cb4098c319112dae202dce495dbc2c27b1143957105a3b1e9b94939b8b C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Core conduct 845 bytes C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Toolless conduct 335 bytes C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Tool descriptions 36,462 bytes over 89 definitions C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Complete tool definitions 61,551 bytes over 89 definitions C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Skills 3,945 bytes over 7 registered skills C1 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff

Evaluation cases, runs, and floors#

The baseline family floor is case-level pass^k, with k = 3; it is not a Wilson interval. The builder reliability table is a different statistic: the lower endpoint of a pooled run-level Wilson 95% interval. Keeping those columns separate prevents a stronger-looking number from silently changing the unit of analysis.

Family Cases Baseline runs Case-level pass^3 floor Evidence
Audit 7 21 0.7142 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Capability/smalltalk 19 57 0.8421 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Docs 7 21 0.2857 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
General 9 27 0.8888 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Member data 48 144 0.7500 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Navigate 10 30 0.9000 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Safety 3 9 1.0000 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Tour 7 21 1.0000 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Workbench read 9 27 0.2222 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Workbench write 2 6 0.5000 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Total 121 363 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Builder family Cases Pooled runs Passed runs Wilson 95% lower floor Evidence
Docs 5 50 49 0.8950 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Workbench read 24 240 220 0.8747 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Workbench write 25 250 229 0.8750 C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff

The baseline arm used 363 billed runs and cost $0.1109; its ratchet record does not retain a cache-read rate or median latency, so those fields are explicitly null in the machine-readable record (C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff).

Cost, cache, and latency observations#

These are different dated samples and must not be pooled. The targeted Phase 11 checks did not constitute a full-deck rerun.

Sample Cases / runs Result Billed cost Median total latency Cache-read rate Evidence
Baseline family deck 121 / 363 Family floors above $0.1109 not retained not retained C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Curated-tour check 1 / 10 10/10 passed $0.0063 3.7 s 47.2% over 8 reporting runs C3 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff; historical run commit 2352ee93c5391e7d8c18ecaf87fd3225380228d0
Release-blocked checks 7 / 70 59/70 classified passed $0.0295 8.1 s 83.6% over 63 reporting runs C3 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff; historical run commit 2352ee93c5391e7d8c18ecaf87fd3225380228d0

The telemetry cache floor is 70% (C2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff). The first post-initiative weekly observation recorded 3,233 turns, only 246 with reported cost, $0.000727 per reporting turn, and a 26.5% cache rate; the same-day fixed battery then measured 92% across 150 runs after serving-route pinning (C3 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff; weekly evidence commit cb5d630822f85933ab63b228d5336be3b8b0a6b2). That is a historical drift and remedy observation, not the current host's live assistant telemetry.

Queue and lease state#

The current observation is the local oshun_dev Postgres database. It is not production or staging state, and the aggregate query intentionally records no titles, identifiers, or holder names.

Local durable state Observation Evidence
Work items 4 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Draft 2 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Ready / queue-eligible 1 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Verified 1 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Leased or in progress 0 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Lease rows / live / expired / holders 0 / 0 / 0 / 0 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff

Operator-memory posture#

Source posture is default-on only when a database URL is bound. Absence of a database intentionally becomes session-only memory; a false-valued kill switch disables the durable slice. The slice rejects member identifiers and email-shaped values, stores confirmed text verbatim, and has bounded categories.

Memory fact Baseline Evidence
Categories 3 C8 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Preference slots 12 maximum C8 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Standing-initiative slots 1 maximum C8 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Pinned-context slots 8 maximum C8 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Local table rows / operators / populated categories 0 / 0 / 0 L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff

The current shell had neither accepted database URL set and no explicit memory kill switch (L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff). Therefore, a BFF launched from that unchanged shell would be session-only even though the local Postgres service and empty memory table are reachable. This does not make a claim about an already-running deployment.

Invocation, tour, voice, and selection surfaces#

Surface Count and scope Evidence
Assistant invocation 12 registered points across 25 source sites: customer web 9 points / 22 sites; admin web 3 points / 3 sites C5 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Reviewed tours 7 plans and 17 steps: customer 3, studio 1, admin 3 C6 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Voice controls 4 controls across 2 web shells: input and playback in customer web, input and playback in admin web C9 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Selection-to-ask 2 registered invocation points, customer and admin C5 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Admin selection scope 3 labels (crashes, incidents, review) across 4 source components C9 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff

All 3 customer tours are member-visible; the 1 studio plan appears only at builder tier; all 3 admin plans use the admin player (C6 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff). Provider-backed voice credentials were configured for 0 of the 4 checked voice providers in the restricted local secret file, while browser speech fallbacks remain implemented (L5, C9 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff). This is name-only availability; no credential value was printed or copied.

Model legs#

The registry contains 4 legs: 3 bound and 1 explicitly unbound (C7 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff). Prices are dated snapshots in USD per million tokens, not live quotes.

Leg State and dated pin Input / output price snapshot Evidence
Turn bound: deepseek/deepseek-v4-flash-0731; 3 measured fp8 endpoints in the serving allowlist $0.04494 / $0.08988 on 2026-08-30 C7 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Escalation bound: deepseek/deepseek-v4-pro-0813 $1.218 / $2.436 on 2026-08-17 C7 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Judge bound provisionally to deepseek/deepseek-v4-pro-0813 $1.218 / $2.436 on 2026-08-17 C7 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Embedding unbound; current docs retrieval is lexical BM25 no price C7 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff

The restricted local secret file was mode 0600; OpenRouter was set and the four checked provider-backed voice keys were unset (L5 at 2026-09-01T15:06:41Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff). This proves only local configuration presence, not provider health or authorization.

Dependency and runtime availability#

Dependency Local observation Evidence
Node / pnpm available: 24.15.0 / 10.25.0 L3 at 2026-09-01T15:07:00Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
PostgreSQL / pgvector reachable: PostgreSQL 16.14; vector extension 0.8.2 installed L1 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Redis healthy container on port 6379; PONG; image tag redis:7-alpine L2 at 2026-09-01T15:07:00Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Object storage MinIO healthy on ports 9000–9001; image uses the mutable latest tag L2 at 2026-09-01T15:07:00Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Qdrant no container and port 6333 unreachable; local vector capability is pgvector instead L1, L2 @ 778b9c874163fe9f958cfb44b54b23ab2b444eff
Browser automation Playwright 1.60.0; 3 installed engines with executable Chromium, Firefox, and WebKit paths L3 at 2026-09-01T15:07:00Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Mobile automation ADB 1.0.41 / platform tools 34.0.4 and Maestro 2.5.1 installed; 0 attached devices L3 at 2026-09-01T15:07:00Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Blender executable available, version 4.0.2 L3 at 2026-09-01T15:07:00Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Unreal Engine required path executable; reports 5.5.4 as ueagent; version probe exits 1 after initialization because Vulkan/display is unavailable L4 at 2026-09-01T15:07:15Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff
Coding-agent CLIs Codex 0.152.0 and Claude Code 2.1.247 available L3 at 2026-09-01T15:09:53Z, checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff

The mutable MinIO tag, absent Qdrant process, unattached mobile device, and Unreal graphics failure are recorded as limitations, not passes. Task 0.7 owns the expiring capability record and will re-probe these plus native desktop permissions and external channel credentials; this baseline intentionally does not pre-approve or infer those capabilities.

Claim boundary and open baseline gaps#

  • No full-deck model run was performed for this document. Family floors remain the committed ratchet values.
  • The baseline deck has no retained cache or latency statistic. Null is the only honest value.
  • Queue and lease counts describe one local development database only.
  • Credential checks establish presence by variable name only; they do not test provider reachability, quota, account policy, or data residency.
  • Dependency observations do not expire themselves. Task 0.7 must replace them with stale-expiring probes before later runtime admission relies on them.
  • The current model registry has no bound embedding leg. That is an explicit architecture choice for lexical docs retrieval, not evidence that retrieval quality is sufficient. Superseded 2026-09-05 by task 3.2 — see "Declared drift since capture" below. The sentence above remains the fact as captured on 2026-09-01 and is not rewritten.

Declared drift since capture#

This record is a dated capture and its verifier asserts that current source still matches it. Those two things collide the moment a later task changes something the baseline recorded, and rewriting the capture to make the check pass would destroy the "before" picture Phase 18 compares against. So the capture stays frozen and drift is DECLARED in documentedDrift: each entry names the section, the task that moved it, the value as captured, and the value now. Undeclared drift still fails the verifier.

Drift is listed as prose rather than a table on purpose: every numeric table row in this record's narrative must cite the capture's own command id and source checkout, and drift is by definition a fact from a later checkout.

  • modelRegistry, tasks 3.2 and 15.1 — the embedding leg moved from unbound to perplexity/pplx-embed-v1-0.6b, priced at four thousandths of a dollar per million input tokens; then the vocabulary widened from four legs to nine, so the capture's unbound status no longer exists and the chat legs carry re-measured prices. Reproduce the current state with the same command the capture used, C7.

Task 3.2 priced the whole enumerated field from billed calls (docs/audits/EVE_SOTA_EMBEDDING_PRICING_2026-09.md). The binding rests on price and data posture; retrieval relevance is still unmeasured and is owned by task 3.5, which may re-bind.

Task 15.1 gave every leg a capability contract, including the legs Eve does not have (docs/audits/EVE_SOTA_MODEL_LEG_CONTRACT_2026-09.md): two operator-configured speech legs and three not-admitted ones joined the four bound legs. Re-pricing the chat legs from the endpoint feed under unchanged pins also measured real auction drift since capture — the turn leg's input price rose 11.2% and the escalation ladder's output price rose 36.6% while its input price fell 9.0%, the floor moving from GMICloud to Novita. Those are the auction moving, not a re-bind.

Reproduction command catalog#

Run all commands from the repository root at checkout 778b9c874163fe9f958cfb44b54b23ab2b444eff. Historical evidence commits are named beside the affected tables above. Live commands observe mutable local state and therefore reproduce the query, not necessarily the captured output.

C0 — checkout identity#

bash
git rev-parse HEAD

C1 — tool grouping and prompt bytes#

bash
jq '{promptBytesHash,promptBytesComponents}' docs/audits/eve-smx-ratchet.json
jq -r '.entries[] | select(.kind=="tool-definition") | .source.file' \
  docs/audits/EVE_BUILDER_PROMPT_INVENTORY_2026-08.json \
  | sort | uniq -c | sort -nr

C2 — family and Wilson floors#

bash
jq '{familyFloors,familyFloorsSource,builderWilsonFloors,builderWilsonFloorsComment,telemetryFloors}' \
  docs/audits/eve-smx-ratchet.json

Baseline family runs are reproducibly derived as cases * 3, where the ratchet's familyFloorsSource names k=3; summing the derived runs gives the recorded deck total.

C3 — cost, cache, and latency evidence#

bash
jq '{generatedAt,baseCommit,liveModelVerification,weeklyEvidenceLifecycle}' \
  docs/audits/eve-phase-11/2026-08-30-run.json
jq '{capturedDate,sourceCommit,costReport,sameDayRouteCalibration,remedy,decision}' \
  docs/audits/eve-smx-weekly/2026-08-23-follow-up.json

C4 — workbench views and agent MCP#

bash
jq '{generatedAt,baseCommit,registry,phase7StrictBrowserBattery,phase8}' \
  docs/audits/eve-phase-7-8/2026-08-30-run.json

C5 — invocation inventory#

bash
jq '{schemaVersion,contentHash,siteCount,pointCount:(.points|length),bySurface:(.points|group_by(.id|split(".")[0])|map({surface:.[0].id|split(".")[0],points:length,sites:map(.files|length)|add}))}' \
  apps/oshun/bff/src/assistant/generated/assistant-invocation-inventory.json

C6 — tour catalog#

bash
pnpm --dir libs/oshun/shell-assistant exec tsx -e \
  "import {CURATED_ASSISTANT_TOURS as t} from './src/tour-plans.ts'; console.log(JSON.stringify({total:t.length,byAudience:Object.fromEntries(['customer','studio','admin'].map(a=>[a,t.filter(x=>x.audience===a).length])),steps:t.reduce((n,x)=>n+x.steps.length,0)}))"

C7 — model registry#

bash
pnpm --dir apps/oshun/bff exec tsx -e \
  "import {ASSISTANT_MODEL_REGISTRY as r} from './src/assistant/model-registry.ts'; console.log(JSON.stringify({total:r.length,bound:r.filter(x=>x.status==='bound').length,unbound:r.filter(x=>x.status==='unbound').length,entries:r}))"

C8 — memory posture#

bash
rg -n 'OPERATOR_MEMORY_CATEGORIES|SLOT_CEILINGS|resolveOperatorMemoryEnabled|operatorMemoryEnabled|assistant_operator_memory' \
  apps/oshun/bff/src/assistant/operator-memory.ts

C9 — voice and selection source surfaces#

bash
rg -l 'data-admin-selection-scope=' apps/oshun/admin/src/components --glob '*.tsx'
rg -n 'data-admin-selection-scope=|Start voice input|Enable voice output|Dictate a message|Play this reply aloud' \
  apps/oshun/web/src/components/assistant/AssistantPanel.tsx \
  apps/oshun/admin/src/components

L1 — local queue, leases, memory, and pgvector#

bash
docker exec oshun-dev-postgres psql -U oshun -d oshun_dev -X -v ON_ERROR_STOP=1 -Atc \
  "WITH s AS (SELECT status, count(*)::int n FROM work_item GROUP BY status) SELECT jsonb_build_object('workItems', COALESCE(sum(n),0), 'byStatus', COALESCE(jsonb_object_agg(status,n), '{}'::jsonb), 'queueEligible', COALESCE(sum(n) FILTER (WHERE status='ready'),0), 'leasedOrInProgress', COALESCE(sum(n) FILTER (WHERE status IN ('leased','in-progress')),0)) FROM s;"
docker exec oshun-dev-postgres psql -U oshun -d oshun_dev -X -v ON_ERROR_STOP=1 -Atc \
  "SELECT jsonb_build_object('leaseRows', count(*), 'live', count(*) FILTER (WHERE (lease->>'expiresAt')::timestamptz > clock_timestamp()), 'expired', count(*) FILTER (WHERE (lease->>'expiresAt')::timestamptz <= clock_timestamp()), 'holders', count(DISTINCT lease->>'agentId')) FROM work_item WHERE lease IS NOT NULL AND status IN ('leased','in-progress');"
docker exec oshun-dev-postgres psql -U oshun -d oshun_dev -X -v ON_ERROR_STOP=1 -Atc \
  "SELECT jsonb_build_object('memoryRows', (SELECT count(*) FROM assistant_operator_memory), 'operators', (SELECT count(DISTINCT operator_sub) FROM assistant_operator_memory), 'categories', (SELECT count(DISTINCT category) FROM assistant_operator_memory), 'vectorVersion', (SELECT extversion FROM pg_extension WHERE extname='vector'));"
for eve_runtime_name in OSHUN_ADMIN_DATABASE_URL OSHUN_V1_DATABASE_URL OSHUN_ASSISTANT_OPERATOR_MEMORY; do
  if printenv "$eve_runtime_name" >/dev/null; then
    echo "$eve_runtime_name=set"
  else
    echo "$eve_runtime_name=unset"
  fi
done

L2 — local services#

bash
docker ps --format '{{.Names}}|{{.Image}}|{{.Status}}|{{.Ports}}'
for eve_probe_port in 6379 9000 9001 6333; do
  if timeout 1 bash -c "</dev/tcp/127.0.0.1/$eve_probe_port" 2>/dev/null; then
    echo "tcp:$eve_probe_port=reachable"
  else
    echo "tcp:$eve_probe_port=unreachable"
  fi
done
docker exec oshun-dev-redis redis-cli ping

L3 — local executables and harnesses#

bash
node --version
pnpm --version
blender --version
adb --version
adb devices -l
maestro --version
codex --version
claude --version
pnpm --dir apps/oshun/web exec playwright --version
pnpm --dir apps/oshun/web exec node --input-type=module -e \
  "import {chromium,firefox,webkit} from 'playwright'; import {existsSync} from 'node:fs'; console.log(JSON.stringify(Object.fromEntries(Object.entries({chromium,firefox,webkit}).map(([k,v])=>[k,{path:v.executablePath(),exists:existsSync(v.executablePath())}]))));"

L4 — required Unreal path#

bash
test -x /root/workspace/UnrealEngine-5.5/Engine/Binaries/Linux/UnrealEditor-Cmd
runuser -u ueagent -- \
  /root/workspace/UnrealEngine-5.5/Engine/Binaries/Linux/UnrealEditor-Cmd -Version

The second command is expected to report the engine version and then exit red on this host's missing Vulkan/display device; availability and runnable rendering are deliberately separate facts.

L5 — name-only local provider configuration#

bash
stat -c '%a %n' /root/Desktop/workspace/drawer/env-master.env
(
  set -a
  . /root/Desktop/workspace/drawer/env-master.env
  set +a
  for eve_key_name in OPENROUTER_API_KEY DEEPGRAM_API_KEY OPENAI_API_KEY ELEVENLABS_API_KEY CARTESIA_API_KEY; do
    if [ -n "${!eve_key_name:-}" ]; then
      echo "$eve_key_name=set"
    else
      echo "$eve_key_name=unset"
    fi
  done
)

This command prints variable names and set/unset state only. It must never be changed to print lengths, prefixes, hashes, or values into committed evidence.