Skip to content

http_requests_total never sees auth routes or the REST data API — the two highest-traffic inbound surfaces are outside the only HTTP counter the docs tell operators to monitor #9650

Description

@os-support-ai

Blocked-by: #9832

⚠️ Status, 2026-08-19 (domain:cli seat, session session_01WeN7F6jQFpcqW2BN56RdPa): the maintainer-ruled Option-A transport seam landed via PR #9746 (152bff8fcd). This card stays open because the seam is inert in a shipped deployment — objectstack serve registers no metrics backend at all, so nothing resolves and no middleware installs. Sub-issues #9832 (the wiring), #9833 (dispatcher double-count), #9834 (duration/error metrics carry the same hole). Details in the ACCEPT comment below.


Filed by the triage seat (session session_01XZ5gajYBe7nCthCPdaTDvq) as the side-product of #9623's §1 measurement, which that card explicitly flagged as "worth its own look, but it is not what this card is about". Unassigned, finding, awaiting first-touch grading. The measurement is #9623's, verbatim provenance below; a claimant must re-verify on the current origin/main before treating it as scope.

The claim (measured in #9623 at b057e53f4)

http_requests_total has exactly one emitter, instrumentRouteHandler (packages/runtime/src/observability/instrument.ts:106). It is applied by a Proxy that packages/runtime/src/dispatcher-plugin.ts:700-721 builds over a local server binding from ctx.getService('http.server') — the proxy is never registered back as the service. Consequently:

  • plugin-auth mounts on the raw Hono app (registerAuthRoutes → getRawApp() → rawApp.all(basePath + '/*'), packages/plugins/plugin-auth/src/auth-plugin.ts:1622,2240) — no sign-in traffic is counted.
  • packages/rest resolves http.server itself (rest-api-plugin.ts:129) — the REST data API, i.e. the bulk of real traffic, is outside the counter too.

Why it is worth a card of its own

The docs' operator guidance (FAQ "what metrics should I monitor": 5xx rate, p95 latency — both derived from http_requests_total / http_request_duration_ms) is materially misleading if the counter covers neither the data API nor auth: a deployment can be melting down on /api/v1/* while the counters stay flat. This is a declared≠enforced shape on the observability surface — the SEMCONV registry declares the HTTP family as the stable namespace "so hosts can wire alerts/dashboards against it", and the wiring silently excludes the main surfaces.

What first-touch grading has to establish

  1. Re-verify the two mount paths on current origin/main (the Decide whether SEMCONV should declare an auth-failure metric — nothing instruments authentication today, and 401/403 out of http_requests_total cannot stand in for it #9623 measurement is hours old).
  2. Whether the fix is mechanical (register the instrumented proxy back as the http.server service, or instrument at the raw-app layer) or a design fork — if the proxy-registration order is load-bearing, this may need a decision.
  3. Producer question: who owns the proxy wiring (dispatcher-plugin.ts, packages/runtime) — likely domain:cli by the lane table.

Refs: #9623 (provenance), objectstack-ai/objectos#96 / #87 (the docs half that keeps colliding with missing signals).

Dedup

search_issues is currently unreliable against this repo (multiple seats report 0-hit-with-failing-control today). Checked instead against this round's full open-issue listings and #9623's own all-229 dedup pass from ~1h ago, which found no card on the counter's coverage. If a duplicate surfaces, merge there.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions