You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
⚠️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.
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 localserver 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.
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.
Producer question: who owns the proxy wiring (dispatcher-plugin.ts, packages/runtime) — likely domain:cli by the lane table.
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.
Blocked-by: #9832
domain:cliseat, sessionsession_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 serveregisters 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 currentorigin/mainbefore treating it as scope.The claim (measured in #9623 at
b057e53f4)http_requests_totalhas exactly one emitter,instrumentRouteHandler(packages/runtime/src/observability/instrument.ts:106). It is applied by aProxythatpackages/runtime/src/dispatcher-plugin.ts:700-721builds over a localserverbinding fromctx.getService('http.server')— the proxy is never registered back as the service. Consequently:plugin-authmounts 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/restresolveshttp.serveritself (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
origin/main(the Decide whether SEMCONV should declare an auth-failure metric — nothing instruments authentication today, and 401/403 out ofhttp_requests_totalcannot stand in for it #9623 measurement is hours old).http.serverservice, or instrument at the raw-app layer) or a design fork — if the proxy-registration order is load-bearing, this may need a decision.dispatcher-plugin.ts,packages/runtime) — likelydomain:cliby the lane table.Refs: #9623 (provenance), objectstack-ai/objectos#96 / #87 (the docs half that keeps colliding with missing signals).
Dedup
search_issuesis 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.