Skip to main content

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 in make/backend.mk), bind EAI_HOST (default 127.0.0.1, the image sets 0.0.0.0), PORT takes priority. navin-manager agent: 8460 enrolment, 8461 mTLS + HMAC API.
  • Toolchains: Go taken from /tmp/toolchains/go/bin/go by 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 more curl | 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 use EAI_TEST_DATABASE_URL in 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 install hiding a failure (RULES.md section 1 point 3, tests/test_no_silenced_checks.py).
  • Alerts: explicit alert_receiver role or incidents:alerts scope; the * wildcard is not enough.
  • Embeddings: always through the Model Gateway, one vector space per model (V101).