Skip to content

Observability: first-class 'why is this route not fast-pathing' signal #721

Closed

Description

@ivogt

User-agreed valuable during the #695 shell-fast-path work, never filed. A route can silently miss the FULL fast path (handlers re-run per HIT) or shelling entirely for reasons invisible without source-diving: handlerLiveHoles (which push disqualified it and why — nested thenable, pending at putShell, handler-invoked loader), capture refusals (identity guard, Set-Cookie once #713 lands, no loading() boundary), backoff state. Proposal: a debug header variant (e.g. x-rango-shell: HIT;handlers=live;cause=nested-push@ShellHandles) gated on INTERNAL_RANGO_DEBUG, plus a once-per-key dev log naming the disqualifying push/site. Refs: #695 notes ('observability follow-up'), the eligibility taxonomy in shell-capture.ts.

Activity

  1. ivogt commented on Aug 30, 2026

    @ivogt
    CollaboratorAuthor

    Enough of the "why is this not fast-pathing" signal landed that this is no longer a silent gap.

    • Capture scheduling / bake-cost / inert-store: feat(ppr): capture scheduling telemetry, bake-cost attribution, inert-store guard #803 (ShellCaptureDebugEvent in src/rsc/shell-capture.ts).
    • Partial-nav bypass reasons: x-rango-ppr-replay including handler-live-holes (src/rsc/rsc-rendering.ts, src/testing/shell-status.ts).
    • Document GETs still expose only x-rango-shell: HIT|MISS. A cause= suffix on that header is unscheduled. Reopen if operators still cannot debug a MISS without source-diving.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions