Navigator has three operating modes but only two parsed deployment profiles. “Dev” is the local KIND lane, including its
disposable navigator dev staging integration surface; the wire value is dev. All three managed GKE rows use
production, even when a config, namespace, or hostname ends in -staging. “Test” is the dev profile with
NAVIGATOR_CI_HARNESS=1, not a third parsed value. Exact means exact: staging, test, Dev, Production, or any
value with surrounding whitespace is an error. Production is selected by exact production, empty, or unset, so an
absent selector is production-safe.
The -staging suffix remains a deployment identity and release ring in deployments/ directory names, Kubernetes
namespaces, data planes, and public hosts. It never becomes a weaker runtime profile. Set both NAVIGATOR_ENVIRONMENT
and NAVIGATOR_CREDENTIAL_ENVIRONMENT to production in deployments/neon-law-stg/config.toml; the runtime also
fences provider endpoints, so the proving ring keeps production boot checks while its isolated data plane holds
simulated matters.
The data rule is small but not flat: every boot applies the same embedded, environment-blind canonical seed —
jurisdictions above all, the reference table every entity and licensure record points at — and a dev boot additionally
and idempotently applies the compiled disposable development portfolio (the Using the Navigator matters, their
clients, mailroom, invoices, and answers). Production never receives that portfolio. Tests may add rows inside their
isolated schemas; the deployment selector never chooses a second seed file — it chooses whether the one compiled
development portfolio is applied.