# muninn-gate mounted config — REDACTED EXAMPLE (committed). # The real file (with bearer-key secrets) lives on corviduo-dev at # /opt/docker/conf/muninn-gate/muninn-gate.yaml and is gitignored. # # Schema is CLOSED: an unknown field (top-level or per-key) is a BOOT FAILURE, # not a warning. Read once at boot; every validation failure aborts before the # socket binds. Four top-level fields only. # Absolute, existing directory, same volume as the personal muninn watcher. # Byte-identical to the watcher's view: /data/state/ingestion in both containers. ingestion_root: /data/state/ingestion # Submit-path allowlist (non-empty; each absolute, existing, a directory). # Canonicalized at boot. Ratified 2026-07-30. Real shared dir as of 2026-08-01 # (mimir-inbox — the writer — deployed on corviduo-dev:8091): 1000:1000 0755, # writer rw / gate+watcher ro. Path-agreement probe PASS (muninn-dev, same # inode+bytes across writer/gate/watcher; admission byte-identity preserving). staging_roots: - /mnt/muninn-staging/mimir-inbox # Bearer credentials. `name` = non-secret caller identity, recorded as # `submitted_by`. Flat scopes (no hierarchy/inheritance): read | submit | control. # Names AND key values must both be unique; a padded key fails boot. keys: - name: mimir-inbox key: <64-hex-secret, provisioned by infra-ops> scopes: [read, submit, control] # control added 2026-08-01 for mimir-dev cancel/retry - name: ops-curl key: scopes: [read, submit, control] # WG-internal address — observability only, NOT read by the app. Keep consistent # with the launcher's --host/--port (the launcher is authoritative). bind: 10.250.50.152:8090