Repository navigation
liveness(webhook): a declared webhook's label and description are live on the Studio metadata list - #24972
Merged
objectstack-fleet[bot] merged 4 commits intoOct 20, 2026
Conversation
…ata list The 2026-10-19 dead verdict measured the Setup sys_webhook list only. The Studio metadata list (objectui ResourceListPage defaultColumns) and the metadata quick-find read the declared registry item over GET /api/v1/meta/webhook, which a booted examples/app-showcase serves with the authored label and description. Re-graded under the designer-previews ruling, on the hook.label and email_template.label precedent; counts shard regenerated. Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz Co-authored-by: Claude <noreply@anthropic.com>
…clared-webhook-label-liveness
…in and prose The CLI advisory lint test reads the real webhook.json, so it now pins a declared webhook authoring every prop, label and description included, as silent. The showcase webhook comment and the platform checklist source line state the new grading. Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz Co-authored-by: Claude <noreply@anthropic.com>
…scription The spec package ships liveness/, which the advisory lint reads, so the re-grade publishes; a patch changeset for @objectstack/spec. Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift Check
What this run could not see
Coarse fallback — 144 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
objectstack-fleet
Bot
deleted the
claude/issue-24900-declared-webhook-label-liveness
branch
October 20, 2026 20:47
This was referenced Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #24900
Clause-②: no
What this does
Re-grades a declared webhook's
labelanddescriptionfromdeadtoliveinpackages/spec/liveness/webhook.json. It records the reader and producer the card asked for, and carries the re-grade to the one test and the two prose sites that restated the old verdict.The 2026-10-19
deadverdict measured only the Setupsys_webhooklist, which lost the declared webhook when the boot seeder retired (ADR-0131 D2). A second surface reads the declared registry item itself and was never cut..objectui-shapin616df6598b42):ResourceListPage.tsx#defaultColumns(webhookregisters nolistColumnsand noListPage, soDefaultMetadataListdrawslabelanddescriptionthroughrow.item[c.key]), andQuickFind.tsx#MetadataQuickFind.webhookhas no registered preview and no Setup catalog.pnpm dev -- --freshonexamples/app-showcaseat223ae939bb, with a probelabelanddescriptionauthored on its declared webhook (reverted, hash-verified), signed in as the dev admin.GET /api/v1/meta/webhookanswered 200, and its one item carried both probe values with_packageId: com.example.showcase.GET /api/v1/meta/typeslistswebhook, and that package hasscope: project.plugin-webhooks,auto-enqueuer.ts#projectDeclared(delivery props only),redeliver-guard.ts#judgeDeclaredandbindDeclaredWebhookNameGuard(name and switch only). In the runtime,catalog-activation.tsDECLARATION_LOOKUPS.webhook(name, packageId). In the CLI, the ownership portdeclaredWebhooks.list(name, packageId).organization-ownership-apply.ts#isSwitchOnlyEditcompares a seeded row with that row's own storeddefinition_json: a migration read of 18.0 data, not of the authored key.This follows the
hook.labelandemail_template.labelrows, under the designer-previews ruling (liveness README, "Designer previews count as consumers"). For a display key, being shown to a human is the whole of its claimed effect. No enforce-or-retire decision is owed.Files
packages/spec/liveness/webhook.json: both rows are nowlive, withevidenceScope: cross-repo,evidence,producerandverifiedAt: 2026-10-20. TheauthorHintis removed, the old note is kept as HISTORY, and the file_noteis corrected.packages/spec/liveness/state-counts/webhook.md: regenerated withgen:liveness-counts; live/dead moves from 17/2 to 19/0.packages/lint/src/lint-liveness-properties.test.ts: the webhook case reads the real ledger and now pins silence on a declared webhook that authors every prop.examples/app-showcase/src/automation/webhooks/index.ts(comment only) anddocs/qa/platform-checklist/areas/integration-system.json(source line): both now state thelivegrading and the Studio reader..changeset/24900-webhook-label-description-live.md:@objectstack/specpatch. The spec package shipsliveness/infiles[], and the advisoryos lintreads it from there, so this change publishes: theliveness-dead-propertywarning on these two keys stops. That is why there is noskip-changeset.Verification (head
5848b7dd99)pnpm --filter @objectstack/spec check:liveness: exit 0, all-clear line printed.pnpm check:platform-checklist: exit 0.src/lint-liveness-properties.test.ts: against the re-graded ledger before the test edit, 1 failed / 102 passed (warns on a declared webhook's label and description only, expected an empty list to equal two findings). After the edit, 103 passed.node scripts/pm/dispatch-gates.mjs --commands: 78 families derived. 76 exited 0 and--ranreconciles 78 of 78. The two non-zero results,check:dts-closureandcheck:dual-build-cjs-loads, are NOT MEASURED. Reason: the local dists were built withOS_SKIP_DTS=1, so they hold no.d.ts(@objectstack/types, triggers, verify), and this diff touches no package source. CI builds with declarations.bf94c93377. The 8 changeset families the changeset commit added ran at5848b7dd99. Between those heads only.changeset/changed.Acceptance notes
webhookmetadata type has no redactor, so its secret-bearing fields are not masked on the meta read doors (detail withheld under the disclosure ruling) #24966:GET /api/v1/meta/webhookserves a declared webhook's authoredsecretverbatim, becausewebhookhas no metadata-type redactor. Nothing in this PR touches it.origin/mainwas merged once (no rebase). Nothing it brought adds a reader of these keys.Generated by Claude Code