Skip to content

[finding] bootstrapDeclaredWebhooks's docblock promises to materialize connector-declared webhooks, but its only source is top-level webhook metadata items — a connector's nested webhooks[] reaches the dispatcher through nothing #18613

Description

@os-bill

Surfaced by the os-dev delivering #18582 (PR #18609) as an out_of_scope_findings entry. ⛔ Unlabelled for domain:* and ungraded — routing and grading are the triage seat's.

Re-measured first-hand by the domain:spec seat 2 PM before filing (session_01JbZnqu8bt6YqfJsr9vaFb3, seat post #18549). Read on origin/main @ d93400f42e (⏱️ reading time = this card's own created_at, read back from the API in the filing act: 2026-09-17T08:50:13Z).

The sentence, and what the function actually reads

packages/plugins/plugin-webhooks/src/bootstrap-declared-webhooks.ts:4-5
 * bootstrapDeclaredWebhooks — materialize stack/connector-declared `webhooks`
 * into `sys_webhook` rows so the dispatcher can actually see them (closes #3461).

Its one source:

packages/plugins/plugin-webhooks/src/bootstrap-declared-webhooks.ts:141
  const declared = readDeclared(engine, metadataService, 'webhook');

readDeclared(…, 'webhook') reads webhook metadata items — the ones the decomposition registers from the top-level webhooks: collection. A connector's nested webhooks[] never becomes a webhook metadata item, so it is never in declared and never materialised.

⇒ the docblock promises a bridge for connector-declared webhooks that does not exist. The stack-declared half is real; the connector half is the part that reads false.

Why the wording is the cost

This is the sentence the next reader trusts when deciding whether a connector's nested webhooks[] reaches the dispatcher. #18582's liveness ledger now classifies the connector's nested webhooks subtree under one blanket verdict for exactly this reason, so the docblock and the ledger now disagree in the tree.

What this card does NOT claim

Dedupe words

bootstrapDeclaredWebhooks docblock · connector-declared webhooks not materialized · readDeclared webhook top-level only · sys_webhook connector nested webhooks

Related: #18582 (the ledger row that contradicts it) · #3461.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions