Skip to content

Flip webhook liveness ledger dead→live now that #3461 bridged the authoring surface (+ reassess type registration) #3490

Description

@os-zhuang

Follow-up from #3461 / #3489 (bridge merged). Supersedes this issue's original framing — I opened it before finding that #3462 / #3485 already enrolled webhook in the liveness GOVERNED set. Corrected scope below.

Current state (verified on main)

Why the liveness gate didn't catch the drift

webhook rides the SPEC_ONLY_SCHEMAS gate path, which only walks the schema for presence — it does not verify each prop's dead/live claim against runtime reality. So #3489's CI Spec property liveness check passed green while the ledger silently went stale. This must be updated by hand.

Scope

  1. Flip mapped props dead → live in webhook.json, citing the materializer (packages/plugins/plugin-webhooks/src/bootstrap-declared-webhooks.ts): name, label, object, triggers, url, method, description, isActive, and the definition_json-carried secret / headers / timeoutMs the enqueuer reads. Drop the url authorWarn/authorHint (no longer a no-op).
  2. Keep dead/experimental the props with no runtime sink — body, payloadFields, includeSession, retryPolicy, tags, authentication (delivery-layer, not executed; the [P0] Metadata property liveness audit: ~half of all spec properties are dead; a cluster of security props is parsed-but-unenforced #1878 domain). Record that boundary in the notes: fix(webhooks): materialize stack-declared webhooks into the dispatcher (#3461) #3489 fixed "the definition reaches the dispatcher", not "every field is executed".
  3. ADR-0054 prove-it-runs: live props with proof must point at a packages/qa/dogfood/** test carrying a matching @proof: tag. The bridge's unit tests live in plugin-webhooks (bootstrap-declared-webhooks.test.ts) — a qa/dogfood webhook-materialization proof test is needed to satisfy the gate.
  4. Refresh stale prose: check-liveness.mts:65-69 ("enforce-or-remove pending, [P2] Webhook: the spec WebhookSchema authoring surface is disconnected from the sys_webhook dispatcher #3461") and webhook.json _note (the whole "THE DISCONNECT / THE TRAP … all 16 props DEAD" narrative) — the disconnect is now closed by fix(webhooks): materialize stack-declared webhooks into the dispatcher (#3461) #3489.
  5. Reassess (optional, not required): whether to move webhook out of SPEC_ONLY_SCHEMAS and register it as a first-class metadata type now that the surface is live. Weigh the Studio-CRUD + create-seeds cost the [P2] Enroll dashboard / webhook / report in the spec liveness GOVERNED set #3462 note flagged; may still be worth deferring.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions