fix(service-automation): align notify node form-descriptor strings with #7085 vocabulary - #7202
Conversation
#7085 vocabulary The notify node's hand-written configSchema (Studio form descriptor) still said "Requires sourceId." / "Requires sourceObject." — the same phantom requirement PR #7111 removed from NotifyConfigSchema's .describe() strings. The schema deliberately accepts a half-specified pair; the executor drops it at execute time so the inbox never renders a dead link. Mirror the settled wording onto the form-descriptor face, string-only (no key/type/required change). Fixes #7112 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015fkdTyGmMD5s8ZtEifvuGy
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
📓 Docs Drift CheckThis PR changes 1 package(s): 3 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
⛔ 2 release-owned page(s) also reference the affected code. These are read-only:
|
Fixes #7112
What
notify's hand-writtenconfigSchema(the Studio form descriptor) still said "Requires sourceId." / "Requires sourceObject." for thesourceObject/sourceIdclick-through pair. This is the same phantom-requirement defect #7085 fixed on the spec.describe()face (PR #7111): the schema deliberately accepts a half-specified pair, and the executor'sresolveSource()drops it at execute time (object && id ? {...} : undefined) so the inbox never renders a dead link — "Requires ..." reads as gate-enforced requiredness that isn't real. This card is the same fix, on the Studio-form-author-facing string.Why not caught by the reconciliation gate
builtin-node-form-zod-ledger.test.tscompares KEY SETS off.shape, not description strings, so the descriptor and the Zod schema can disagree in prose without tripping any gate — confirmed: it still passes with this change (string-only, no key/type/required change).Change
String-only, two
descriptionvalues in one file (packages/services/service-automation/src/builtin/notify-node.ts:166,170). Mirrored the exact vocabulary PR #7111 landed inNotifyConfigSchema's.describe()(read from the merged diff, not paraphrased from memory), keeping the descriptor's extra "The inbox synthesizes a/{object}/{id}deep-link from these." sentence onsourceIdsince the suggested shape said to keep it if wanted.Changeset
Added (
@objectstack/service-automation: patch) — mirrors PR #7111's choice, which also shipped a changeset for its equivalent docs-only.describe()string alignment (@objectstack/spec: patch) rather thanskip-changeset, since the string is user-visible (Studio form help text / generated docs table).Verification
pnpm --filter '@objectstack/service-automation^...' build— dependency closure builds clean.pnpm --filter @objectstack/service-automation build— tsup + DTS build clean (package has no separatetypecheckscript; DTS generation is its type-check surface).pnpm --filter @objectstack/service-automation test— 72 test files / 885 tests passed, includingbuiltin-node-form-zod-ledger.test.ts(key-set invariance unaffected, as expected for a string-only change).npx eslint packages/services/service-automation/src/builtin/notify-node.ts --no-inline-config— clean, no output.node scripts/check-nul-bytes.mjs— OK.git diff --statshows exactlynotify-node.ts | 4 ++--(2 insertions, 2 deletions) plus the new changeset file.Generated by Claude Code