Document stop direction inference as a shared algorithm
Eight endpoint pages described data.*.direction as a bare GTFS
passthrough ("absent when the feed does not supply it"), but both
legacy Java (GenerateNarrativesTask.computeStopDirection) and Maglev
(AdvancedDirectionCalculator) infer a direction from shape geometry
when the feed omits one, using the same vector-averaging algorithm
and the same 0.7 standard-deviation rejection threshold. Traced and
cited the Java source directly rather than assuming Maglev's behavior
was novel.
Added Stop-Direction-Calculation.md as a single source of truth for
the algorithm (legacy steps, Maglev's port, and the one confirmed
intentional deviation: an epsilon-based near-zero check replacing
Java's largely-inert exact == 0.0 comparison), and pointed every
affected page at it instead of duplicating the explanation. Linked
from OBA-API-Specs.md under a new Shared Algorithms section.
Affected pages: stop, stops-for-agency, search-stop,
stops-for-location, stops-for-route, arrival-and-departure-for-stop,
arrivals-and-departures-for-stop, trips-for-location. block/{id} also
calls the same code path but has no wiki spec page yet.
docs: stops-for-agency — record implementation decision for full parent station records
The legacy implementation adds a minimal record for parent stations in
references.stops. Maglev expands this to a full stop record (including
routeIds and staticRouteIds), consistent with how the stop and
arrivals-and-departures-for-stop specs define stop records in references.
Updated Extension 3a to point to the new implementation decision.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Document Maglev deviation: unknown agency ID returns 404
Adds cross-reference to the suspected defect entry and a new
Implementation Decisions section explaining that Maglev intentionally
returns HTTP 404 for unknown agency IDs rather than HTTP 200 with null.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Update OBA API specs (2026-05-11T23:13:08Z)