Skip to content

sessions timeline: spec advertises GET /api/v1/sessions/timeline/{session_id} but prod returns a bare 404 (route not deployed) #165

Description

@yorkable

prod-drift: new endpoint not deployed on prod

The upstream SDK spec added GET /api/v1/sessions/timeline/{session_id} (drift #164, reconciled in PR #162), and the CLI now exposes syllable sessions timeline <session-id>. But the deployed prod backend (api.syllable.cloud) does not have this route, so the command is dead on arrival — it returns a generic 404 for every invocation.

Live repro (verified 2026-06-29 on cli-test, CLI built from PR #162)

cli-test has zero sessions, so the command can't be exercised with a real id there. Instead, probe with a nonexistent id and compare against a deployed sibling endpoint of identical shape (GET /api/v1/sessions/<verb>/{id}):

$ syllable --org cli-test sessions latency 00000000-0000-0000-0000-000000000000 --debug
< 404 Not Found
< {"detail": "Session not found: 00000000-0000-0000-0000-000000000000"}
  # handler-generated, echoes the id  -> route IS deployed

$ syllable --org cli-test sessions timeline 00000000-0000-0000-0000-000000000000 --debug
< 404 Not Found
< {"detail": "Not Found"}
  # framework default for an UNMATCHED route  -> route is NOT deployed

The bare {"detail": "Not Found"} is what the API returns for a route it doesn't recognize; a deployed handler (like latency) returns a specific "Session not found: " message. That contrast, plus the endpoint only appearing in the SDK spec ~2026-06-27, is the signal that prod hasn't shipped it yet.

Impact

syllable sessions timeline 404s on every call until prod deploys the route. PR #162 is held as a draft so the spec-sync routine doesn't auto-merge/release a broken command (routine case C = human-flagged).

Owner / fix

Backend: deploy the /api/v1/sessions/timeline/{session_id} route to prod. Once live, re-run the probe; if it returns a real "Session not found" (or 200 with data), un-draft #162 and it merges + releases on the next routine fire.

Same drift family as #99 / #100 / #109 (spec runs ahead of the deployed backend), but this is a whole new command rather than a silently-dropped field, so the user-facing impact is higher. Until prod catches up, the spec-drift issue #164 will stay open intentionally — the CLI is deliberately behind upstream because prod can't serve this endpoint.

Metadata

Metadata

Assignees

No one assigned

    Labels

    prod-driftSpec/CLI sends it; prod silently ignores it — backend owns the fix

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions