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.

Repository layout

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

Pipeline modules (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

Web modules (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)

Choosing the owner of a fix

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.