Where each responsibility lives in the repository, so a change starts at the module that owns the behavior.
| Reference | Value |
|---|---|
| Subject and boundary | Repository layout, module ownership per app and the rule for choosing where a fix belongs. |
| Verified source | Repository tree at main 9733eb26d92533f56cdc8bc46b81b93fbb5987c8, checked November 10, 2026. |
| Support state | Implemented source. |
| Path | Owns | Toolchain |
|---|---|---|
apps/db |
Capture, normalization, Gold analytics, publication, health service, operator CLI transit-ops |
Python (version in .python-version), uv, SQLAlchemy, Alembic, Typer, FastAPI |
apps/data-proxy |
Snapshot delivery and KPI endpoint on Cloudflare | Plain ES modules, Wrangler, node --test |
apps/web |
Public SvelteKit dashboard | SvelteKit 3, Svelte 5, Tailwind CSS 4, MapLibre GL, LayerChart, Vitest, Playwright |
.github/workflows, .github/scripts, .github/actions |
CI, deployments, scheduled pipeline jobs, probes and alert issues | GitHub Actions |
patches/ |
Pinned dependency patches applied by Bun | See ‣ |
contracts/kpis-v1.js, contracts/kpis-v1.examples.json |
Executable KPI v1 response agreement and examples used by the proxy and public probe tests | Plain ES modules |
| Root manifests | Bun workspaces, Turborepo tasks, runtime pins (.nvmrc, .bun-version, .python-version) |
Bun and Node, with versions read from .bun-version and .nvmrc |
apps/db/src/transit_ops)| Module | Responsibility |
|---|---|
cli.py |
Every operator and scheduled command (transit-ops ...) |
orchestration.py |
Static pipeline, realtime cycle, realtime worker and pruner loops |
realtime_schedule.py |
Per-endpoint cadence, phase gating and the worker tick |
worker_watchdog.py |
Process-wide hang watchdog for the realtime worker |
providers/live_policy.py |
Syncs lines_without_live_data into the database and records live sightings of declared lines |
daily_run.py, daily_run_process.py |
Daily Warm job policy, attempt receipts and subprocess cancellation/timeout boundary |
providers/registry.py, config/providers/*.yaml |
Provider manifests and validation |
ingestion/ |
Feed downloads, Bronze writes, capture lineage and failure cleanup |
silver/ |
Static GTFS, realtime, GIS and i3 alert normalization |
gold/ |
Marts, realtime projection, delay periods/hours/days/sums, warm rollups, reader kernels (gold/reader/) |
snapshots/ |
Builders, contract models, gates, storage and uploads; live_publication.py decides which live files to rebuild, live_scope.py owns the worker's reused live storage and upload executor, ttl.py holds the live TTL; historic_tree.py owns family paths, graph traversal, write-once policy and GC reachability used by publication and validation |
maintenance/ |
Tier retention and vacuum; retention.py owns dependency order, bounded work and combined proof receipts |
validation/ |
Static feed checks, historic publication proof, alert language coverage |
backups.py, recovery.py, health/ |
Logical backups, guarded recovery actions, health API |
worker_starts.py, worker_start_probe.py |
Bounded worker start recorder and the read-only probe that turns new starts into alert issues |
db/ |
Connection, Alembic migrations, migration and test-target guards |
apps/web/src)| Path | Responsibility |
|---|---|
routes/[[lang=locale]]/ |
Localized pages: home, map, network, lines, stops, trips, alerts, hotspots, repeat offenders, receipt, metrics, status, search, privacy, terms, accessibility; route/[id] redirects to lines/[id] |
routes/api/, routes/health, sitemap.xml, robots.txt |
Server endpoints owned by the web Worker |
lib/v1/ |
Snapshot adapter, schemas, repositories, resources, live store (live/store.svelte.ts), feed health presentation (live/livePresentation.ts), refetch timing (live/polling.ts), the Verdict (verdict.ts), provider boot |
lib/components/map/ |
Map layers, vehicle sprites, projection (vehicleProjection.ts, liveTiming.ts), the motion controller (motion/), basemap and viewport |
lib/components/surface/, lib/components/shared/ |
Standard entity card and listing grid; shared tabs, chips and toggle rows guarded by controlCohesion.test.ts |
lib/features/ |
One folder per product surface: selectors, copy, sections and tests |
lib/filters/ |
Requested and effective filter state and URL encoding |
lib/seo/, lib/og/, lib/site/ |
Route metadata, share copy, JSON-LD, security headers, share-card template and renderer, delay presentation, missing-data reasons (absence.ts), provider display rules (transitDisplay.ts) |
Start at the first boundary that could produce the symptom. A wrong denominator belongs to Gold or its reader kernel, a bad Range response to the data proxy, wrong-city data to provider and request identity, and a misleading empty state to the feature selector. Read the module's callers and failure behavior before extracting or deleting it. Shared visual changes go upstream to yesid.design and arrive here through a released package version.