Short records of the non-obvious choices behind Urban-OS. Newest decisions supersede older ones only when explicitly marked.
- ADR-0001 — Build the Urban-OS dynamics kernel on the civic_analyst repo
- ADR-0002 — Transport is pure capacitated drainage; speed–density lives in the delay coupling
- ADR-0003 — Linear over-capacity delay + discounted hold cost for an honest optimum
- ADR-0004 — Rust core is an optional drop-in accelerator, numpy is the always-present fallback
- ADR-0005 — Reuse civic_analyst's hallucination guard for the killer insight
- ADR-0006 — Harden the API surface + pin it with a contract/regression test lane
- ADR-0007 — WeatherLens: rain as a capacity tax + risk multiplier (third domain lens)
- ADR-0008 — Offline congestion/risk heatmap over the vendored MapLibre/PMTiles map
- ADR-0009 — Measured Rust↔numpy parity + speedup; boundary-marshalling caveat
- ADR-0010 — Narrator guard: every figure in the insight traces to the evidence
- ADR-0011 — Peak congestion is computed over every step, independent of frame_every subsampling
- ADR-0012 — Map QA via a Playwright CDP harness (one-shot headless can't render WebGL2+PMTiles)
- ADR-0013 — De-dup inspections by (estId, date) visit + severity honesty (Conditional Pass ≠ adverse; convictions surface as severe)
- ADR-0014 — Two-index model: independent Safety vs Activity scores (never summed), severity-weighted safety to keep the LOW band alive
- ADR-0015 — Urban-OS: price crush-safety into J so shelter is a real lever, surface the J-decomposition, fix sink-injection (map==engine)
- ADR-0016 — Convex coverage premium + fine grid → shelter is a genuine interior optimum (release 16 + 50% shelter), not a corner
- ADR-0017 — Urban-OS UI: live J-breakdown that tracks levers, optimizer-card invalidation, trim the dead timeline tail (3rd audit's other findings refuted)
- ADR-0018 — FIFA-window convergence crunch: multi-venue EventSurge (4 concurrent let-outs, 140,800 people) into the Union/Exhibition-GO corridor under one coordinated release lever; real exit lines replace abstract sinks
- ADR-0024 — RAPIDS GPU accelerator seams (nx-cugraph substrate dijkstra + cuDF-via-Polars ingest), opt-in with CPU fallback
- ADR-0025 — cuOpt evacuation max-flow
/flow+ cuML risk-hotspot/clusters, opt-in GPU with networkx/CPU fallback - ADR-0027 — TensorRT-LLM narrator runtime (config not code) + PhysicsNeMo J-surrogate seam (interface-only), opt-in, exact kernel decides
- ADR-0028 — Learned-dynamics lens: the Action-Matching floor (least-squares velocity fit from TMC marginals), advisory-only, opt-in, exact kernel decides