Meridian is feature-complete as an open-source gateway and has 25+ capabilities that Tensormux's OSS gateway lacks (multi-tenant auth, budgets, PII, cost attribution, Helm, air-gap, RBAC). Tensormux is effectively Meridian's v0.1.x core with no materially newer gateway features.
The real gaps are not in the gateway itself — they are in three areas:
Code health (test coverage, resource leaks, dependency hygiene)
Strategy change (2026-07-24): v1.0 is no longer a "verified baseline" tag with features added after. v1.0 ships feature-complete: Phase 0 code health + Phase 1 reliability + Phase 2 observability/ops + Phase 3 platform depth all land before the tag. The v1.0 gate (partner sign-off, honesty check) runs last as the final seal, not as a blocker that postpones features.
This means the pre-v1.0 track becomes v0.10.0 … v0.13.0 (one milestone per phase, in the project's established cadence), and v1.0.0 caps the series.
Phase 0 — Code health & reliability (foundation; v0.10.0)¶
Track
Deliverable
Acceptance criteria
Resource leaks
Fix open file handle in metrics/logger.py — use context manager or __aenter__/__aexit__
RequestLogger.close() always called; no open fd after shutdown
Dependency hygiene
Make aiokafka and boto3 optional extras ([audit]) in pyproject.toml
pip install meridian works without them; pip install meridian[audit] includes them
Test coverage
Add tests for all untested modules (see table below)
≥ 80% coverage on meridian/ excluding ui/ static assets
Type consistency
Align mypy python_version with requires-python (≥3.9)
mypy meridian passes cleanly
Untested modules to cover:
Module
Lines
Test approach
meridian/proxy/forward.py
108
Mock backend + httpx responses; test stream/non-stream/error paths
meridian/health/checker.py
64
Mock backend responses; test active + passive detection
meridian/metrics/collectors.py
58
Verify all metrics are registered and updated correctly
meridian/cost/ledger.py
227
Test daily/monthly cost aggregation, CSV export, authz gating
meridian/cost/extract.py
73
Test usage extraction from non-stream JSON and SSE tail
meridian/cost/record.py
45
Test cost record creation and schema
meridian/pii/detectors.py
190
Test each detector (Aadhaar, PAN, GSTIN, IFSC, UPI, mobile)
meridian/pii/policy.py
64
Test each policy (block, redact_and_replace, redact_for_logs, audit_only)
Dashboards importable as JSON; Helm optional grafana.enabled deploys them via ConfigMap
Helm hardening
Add PodDisruptionBudget, TopologySpreadConstraints, RBAC/ServiceAccount, optional Ingress + TLS to chart
helm template validates in CI; docs show ingress + cert-manager example
Autoscaling scaffolding
KEDA ScaledObject template (on queue_depth or Prometheus inflight metric) + HPA example
KEDA config in values.yaml (off by default); docs/DEPLOY.md gets an autoscaling section
Scale-to-zero
Idle-timeout marking per backend: backends[].idle_timeout_min; gateway stops routing to idle backends and exports a meridian_backend_idle gauge that external scalers (KEDA) can drive replicas off
Backend with no traffic for N min → marked idle; first request re-marks healthy; docs explain KEDA scale-to-zero wiring
⚠️ Mission check: billing is the least "reliability + visibility" item here. If any item gets cut for scope, this is it — the usage ledger already gives finance what it needs to bill out-of-band.
Phase 4 — Tag v1.0.0 (the seal, not the feature drop)¶
Track
Deliverable
Acceptance criteria
Partner PoC
Design-partner runs the complete product (Phases 0–3 tagged as v0.13.x RC) for 4 weeks
docs/internal/POC_REPORT.md updated with RC evidence + sign-off
Pitch sync
PITCH.md claims now cover resilience, autoscaling, traffic management, isolation — all proven on the RC tag
One milestone = one branch = one PR = one tag, as established. The sign-off moves from a blocker to the final checkpoint: features land first under honest 0.x tags, the partner validates the whole thing, and v1.0.0 is the stamp on a product that already exists.
Not a feature wish list. Every item must improve reliability, operator control, or visibility (billing is the flagged exception — cuttable for scope).
Not a v1.0 feature dump. The v1.0 gate still runs — it runs after features, verifying an RC that a partner actually loaded.
Not a replacement for ROADMAP.md or MILESTONES.md. Those files control ordering; this file documents gaps and the plan to close them. If this plan is adopted, V1_GATE.md and ROADMAP.md should be updated to match (features first, sign-off last).