Skip to main content

ADR Index

Concept → owning ADR. Every concept lives in exactly one ADR. Other docs link here, never restate. See AGENTS.md "ADR workflow" for the rules.

By concept​

ConceptOwning ADR
Authentication, authorization, ForwardAuth targetADR-020
Tenant model, site isolation, cross-site sharingADR-020
Forwarded X-Auth-* headers contractADR-020
Keycloak realm, clients, roles, groupsADR-020
Public-route allowlistADR-020
Environment topology (local / prod / local-prod), feature testing on prod test sitesADR-050 (supersedes ADR-021)
Preview environments per PR (dropped)ADR-050 (supersedes ADR-021)
Staging gate before CD (ephemeral stack on the CI runner, CD triggers on Staging)ADR-049
Secrets management, OVHcloud Secret Manager → Dokploy UIADR-022
Secret rotation procedureADR-022
API gateway, TraefikADR-005
Runtime hosting, Dokploy, single VPSADR-019
No repo bind mounts in deployed containers, config baked into images, images.json env var → image mapADR-032
FastAPI as backend stack, Alembic migrationsADR-012
Schema registry (Apicurio)ADR-001
Data quality (Great Expectations, GX+OpenMetadata strategy)ADR-002, ADR-023
Iceberg compaction strategyADR-003
Iceberg catalog (Lakekeeper)ADR-004
Field-activity event logADR-006
Service mesh / Kubernetes deferralADR-007 (superseded by ADR-019)
Derived asset invalidationADR-008
Observability stackADR-009
Schema registration from the sample file, column additions on ACTIVE sourcesADR-010 (Path B superseded by ADR-041)
One schema path (Path B dropped), held uploads, Zentra Z6 registry exception and per-port column keysADR-041
Documentation platformADR-011
Local object storage (Silo, MinIO-compatible)ADR-015
Iceberg partition strategy, site_code partitioningADR-016
Table format selection (Iceberg vs Hudi/Delta)ADR-017
Cross-source harmonization, BADM tiersADR-018
ICOS export pipelineADR-014
Site map editor (Leaflet, PostGIS, spatial schema)ADR-013
Treatment, Trial, TrialSeries, ExperimentalLocation (experimental design model)ADR-013
Device, Sensor, Channel (measurement infrastructure model)ADR-013
Import validity (no dates on import, correction vs new-feature rule), site.established_on, CHAMBER as Point markerADR-030
Inlet, SENSOR marker placement, channel location resolution (marker → platform.sensors)ADR-034 (Proposed)
Zentra sensor serial/depth on Sensor rows, port moves (SENSOR_SWAP, location follows serial), logger GPS as fallback Z6 placementADR-047 (Proposed)
Column → channel derivation, column role, local variable codes (X_ prefix), promotion to BADMADR-038
File layout (header row, data start row), column position, positional matching for headerless filesADR-039
Headerless layout variants (column count → names, width-based pick, superset registration, wizard instrument profiles)ADR-045
Live QGIS editing (OGC API – Features router), QGIS edit keys, /api/v1/ogc/ ForwardAuth bypassADR-031
Observation data modelADR-025
Observation table naming (observation_data.observations), tall-row identity (source_row), value_text, overwrite-by-upload writes, data source template, sample context as ordinary columnsADR-037 (writes for continuous sources superseded by ADR-042)
Upload deduplication (sha256, 409 with existing ingestion ID), agnue-push S3 fallback pickup (fallback_uploads), continuous observations merge across uploadsADR-042
Raw object encoding (gzip, Content-Encoding, magic-byte decode), agnue-push compression, no client-side Parquet conversionADR-043
Lineage tooling (Marquez vs OpenMetadata, dual HTTP POST)ADR-024 (OM endpoint and event translation superseded by ADR-044)
OpenMetadata lineage resolution (/openlineage/lineage, upload keys → per-data-source Containers, openlineage pipeline service), OM table FQNADR-044
AI/LLM service architecture, external LLM dependency, onboarding/event-classification assistanceADR-026
Vector search, Qdrant, retrieval-augmented AI featuresADR-027
Agent CLI (agnue sources), server-assigned data source IDs, domain enum, create ?dry_run=true, skill in the SDK wheelADR-048
Flux footprint met data provider (CDS vs Open-Meteo), MetProvider abstractionADR-028
Self-hosted Grafana stack, Grafana Keycloak OIDC login, LGTM retentionADR-029

By number​

ADRTitle
ADR-001Apicurio Schema Registry
ADR-002Great Expectations Data Quality
ADR-003Iceberg Compaction Strategy
ADR-004Iceberg Catalog — Lakekeeper
ADR-005Traefik API Gateway
ADR-006Field-Activity Event Log
ADR-007Service Mesh — Not Adopted (Kubernetes Deferred)
ADR-008Derived Asset Invalidation
ADR-009Observability Stack
ADR-010Schema Inference & Registration
ADR-011Documentation Platform
ADR-012Backend API Stack (FastAPI + Alembic)
ADR-023Data Quality Strategy — GX + OpenMetadata
ADR-013Site Map Editor
ADR-025Observation Data Model
ADR-014Two-Tier Hosting & ICOS Export
ADR-015Local Object Storage (Silo, MinIO-compatible)
ADR-016Iceberg Partition Strategy
ADR-017Iceberg vs Hudi/Delta
ADR-018Cross-Source Harmonization
ADR-019Runtime Hosting — Dokploy
ADR-020Authentication & Authorization
ADR-021Environment Topology (superseded by ADR-050)
ADR-022Secrets Management
ADR-024Lineage Backend Architecture
ADR-026AI-Assisted Onboarding and Event Classification
ADR-027Vector Search (Qdrant) as a Shared Platform Capability
ADR-028Footprint Met Data Provider — Copernicus CDS over Open-Meteo
ADR-029Self-Hosted Grafana Stack (Exit from Grafana Cloud)
ADR-030Import Is Validity-Neutral; CHAMBER Is a Point Marker
ADR-031Live QGIS Editing via OGC API – Features and Per-Download Edit Keys
ADR-032Deployed Containers Never Bind-Mount the Repo; Config Is Baked into Images
ADR-034Inlet Placement — SENSOR Markers Place Inlets and Drive Sensor Location
ADR-037Sample-Based Observations in the Tall Table
ADR-038Column-Derived Channels and Local Variable Codes
ADR-039File Layout and Column Position
ADR-041One Schema Path — Sample File Only
ADR-042Upload Deduplication and Continuous Observation Merge
ADR-043Raw Objects Stored Gzip-Encoded
ADR-044OpenMetadata Lineage Resolution
ADR-045Layout Variants per Data Source
ADR-047Zentra Sensor Identity, Port Moves and Logger GPS as Fallback Placement
ADR-048Agent CLI for Data Source Registration
ADR-049Staging Gate Before CD — Ephemeral Stack on the CI Runner
ADR-050Test Sites in Prod Instead of Per-PR Preview Environments