Decisions
French version: ../DECISIONS.md
ADR
- ADR-0101 : licence policy
- ADR-0102 : Navin runtime without a declared graph
- ADR-0103 : vLLM and LiteLLM roles, LiteLLM pinned to 1.106.5
- ADR-0104 : OpenAI compatible default call format, calls through the Model Gateway
- ADR-0105 : Reasoning effort never converted silently
- ADR-0106 : Platform, tenant, project, environment tenancy with forced RLS
- ADR-0107 : FinOps token rule and three amounts
- ADR-0108 : Opik instead of Langfuse
- ADR-0109 : Perses instead of Grafana, superseded by ADR-0169
- ADR-0110 : OpenSearch instead of Loki
- ADR-0111 : SeaweedFS and client storage instead of MinIO
- ADR-0112 : OpenBao or client vault (MPL-2.0 exception)
- ADR-0113 : Redis as cache only
- ADR-0114 : PostgreSQL as source of truth
- ADR-0115 : Context Authority and delegation intersection rule
- ADR-0116 : Audit hash chain, seals and outbox
- ADR-0117 : Kill Switch registry, desired and observed state on receipts
- ADR-0118 : Signed licences without price or limit
- ADR-0119 : Go node agent and Kubernetes operator tested with envtest
- ADR-0120 : Marketplace of signed packs
- ADR-0121 : Egress guard as the only outbound path
- ADR-0122 : English and French everywhere
- ADR-0123 : Test honesty: PASSED only with evidence
- ADR-0124 : SSH only for bootstrap, operations through agents, operator and APIs
- ADR-0125 : Service ownership and six deployment modes
- ADR-0126 : Configured HA is not validated HA
- ADR-0127 : Backup, restore and DR separate from HA, on the client's storage
Operational decisions
Source: .navin/continuity/DECISIONS.md (.navin/memory/MEMORY.md holds no fact yet).
- Ports: Control Plane API on
EAI_PORT(default 8080 inmake/backend.mk), bindEAI_HOST(default 127.0.0.1, the image sets 0.0.0.0),PORTtakes priority. navin-manager agent: 8460 enrolment, 8461 mTLS + HMAC API. - Toolchains: Go taken from
/tmp/toolchains/go/bin/goby tests (navin-manager/server/tests/k8s_envtest.py,NM_TEST_GO). CI tools pinned and sha256 verified (helm 3.16.3, kubeconform 0.6.7, kyverno 1.13.4, syft 1.55.0), no morecurl | sh. - No Docker here: no integration against real Keycloak, OpenBao, OpenFGA, Qdrant, NATS, Temporal, LiveKit, LiteLLM, vLLM on this machine (
.navin/continuity/RESUME.md); database tests useEAI_TEST_DATABASE_URLin CI. - Forbidden production contexts: nothing is applied from a workstation to a cluster or cloud account; deployment through Argo CD GitOps; locally only
helm lint,helm template,kubeconform,kyverno test,opa test(RULES.md section 1 point 5). One cluster per environment, namespaces created by Terraform. - No silenced check: no lint disable, no skipped test, no
|| pip installhiding a failure (RULES.md section 1 point 3,tests/test_no_silenced_checks.py). - Alerts: explicit
alert_receiverrole orincidents:alertsscope; the*wildcard is not enough. - Embeddings: always through the Model Gateway, one vector space per model (V101).