QA-source: #21330 · access-security.public-form-intake · found while building #21475 (outside the item's clauses)
Once PR #21566 (fix for #21475) lands, the anonymous form endpoints (GET /forms/:slug, POST /forms/:slug/submit) serve a FormView only when its sharing declares enabled: true, allowAnonymous: true and a publicLink slug — the rule now lives once in @objectstack/metadata-core (anonymousFormIntakeCandidates), following SharingConfigSchema, whose enabled defaults to false.
The published skill still says otherwise: skills/objectstack-api/SKILL.md, public form endpoints section — "Any FormView declared with sharing.allowAnonymous: true and a publicLink slug is auto-mounted". An agent following that line authors a form that both endpoints answer 404 FORM_NOT_FOUND for (class c: a trap that makes AI write metadata the runtime refuses).
Generated by Claude Code
QA-source: #21330 · access-security.public-form-intake · found while building #21475 (outside the item's clauses)
Once PR #21566 (fix for #21475) lands, the anonymous form endpoints (
GET /forms/:slug,POST /forms/:slug/submit) serve aFormViewonly when itssharingdeclaresenabled: true,allowAnonymous: trueand apublicLinkslug — the rule now lives once in@objectstack/metadata-core(anonymousFormIntakeCandidates), followingSharingConfigSchema, whoseenableddefaults tofalse.The published skill still says otherwise:
skills/objectstack-api/SKILL.md, public form endpoints section — "Any FormView declared withsharing.allowAnonymous: trueand apublicLinkslug is auto-mounted". An agent following that line authors a form that both endpoints answer404 FORM_NOT_FOUNDfor (class c: a trap that makes AI write metadata the runtime refuses).enableddefaults tofalse) in that section; re-check any otherskills/**page that describes the public-form opt-in.skills/**is a governed Tier H surface — lands only by the maintainer's hand or an authorized approval; kept out of fix(rest): one anonymous-intake rule honours every declared public-form withdrawal #21566 so the p1 fix can land through the queue.packages/spec/src/migrations/registry.tsandpackages/spec/src/migrations/entries/semantic/17.ui-notification-action-embed-config-retired.tsdescribe the same gate with fewer keys in already-shipped migration prose (noted, not rewritten).Generated by Claude Code