Summary
Followup to #1485. The new telemetry view hook_perf_baseline is supposed to aggregate per-handler P50/P99 latency from hook.delivery spans. Instead, every emitted hook.delivery span is rejected at the runtime-events schema layer with schema_parse unrecognized key 'event', leaving the view empty regardless of dispatch activity.
Repro
genie serve start
# trigger any hook via either dispatch-client or the legacy bun fork
PGPASSWORD=postgres psql -h 127.0.0.1 -p 19642 -U postgres -d genie \
-c "SELECT count(*) FROM hook_perf_baseline;"
# 0
genie events errors --since 5m | grep schema_parse
# unrecognized key 'event'
Per dog-fooder-11eb verdict (2026-04-29):
- runtime_events table contains
schema_parse errors with unrecognized key 'event'
hook_perf_baseline view remains empty
genie doctor --perf reports no spans observed after dispatch
Evidence: /home/genie/workspace/agents/genie/.genie/agents/dog-fooder/state/evidence/batch-2034c4f3
Likely root cause
Recent change to the hook.delivery span shape (per #1485 commit body: "src/hooks/index.ts: runHandler() stamps payload.hook_event_name onto the hook.delivery span attrs so the view groups by event for tool-less events") added a key that the schema validator (likely a Zod schema in src/lib/events/schemas/hook.delivery.ts) doesn't list. Strict-mode Zod rejects extra keys.
Acceptance
Why this is a release-blocker
Without telemetry, we can't measure whether daemon-mode dispatch is actually saving CPU/latency vs the F1 fallback. The whole 'measure regressions vs baseline' story in #1485 is inert until this lands.
Summary
Followup to #1485. The new telemetry view
hook_perf_baselineis supposed to aggregate per-handler P50/P99 latency fromhook.deliveryspans. Instead, every emittedhook.deliveryspan is rejected at the runtime-events schema layer withschema_parse unrecognized key 'event', leaving the view empty regardless of dispatch activity.Repro
Per dog-fooder-11eb verdict (2026-04-29):
schema_parseerrors withunrecognized key 'event'hook_perf_baselineview remains emptygenie doctor --perfreports no spans observed after dispatchEvidence:
/home/genie/workspace/agents/genie/.genie/agents/dog-fooder/state/evidence/batch-2034c4f3Likely root cause
Recent change to the
hook.deliveryspan shape (per #1485 commit body: "src/hooks/index.ts: runHandler() stamps payload.hook_event_name onto the hook.delivery span attrs so the view groups by event for tool-less events") added a key that the schema validator (likely a Zod schema in src/lib/events/schemas/hook.delivery.ts) doesn't list. Strict-mode Zod rejects extra keys.Acceptance
eventkey (or whatever the actual emitter is now stamping)hook_perf_baselinereturns a non-zero countgenie doctor --perfshows live spansWhy this is a release-blocker
Without telemetry, we can't measure whether daemon-mode dispatch is actually saving CPU/latency vs the F1 fallback. The whole 'measure regressions vs baseline' story in #1485 is inert until this lands.