QA-source: #21330 · access-security.public-form-intake · found while building #21468 (outside the item's clauses)
What fails
On a walled tenancy posture, a public form whose object is tenant-scoped (the showcase contact form, showcase_inquiry) looks published but cannot take a single submission:
GET /api/v1/forms/contact-us → 200 (the form is served, so the console renders it);
POST /api/v1/forms/contact-us/submit with a valid body → 500 ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED.
Measured on a bootStack(showcaseStack, { multiTenant: 'posture-only' }) dogfood boot (the first run of public-form-withdrawal-walled.dogfood.test.ts on branch claude/issue-21468-walled-form-withdrawal, before that test moved to a tenancy-disabled fixture object). Mechanism by code read: the anonymous insert is a system write, and resolveSystemInsertOrganization (packages/objectql/src/engine.ts) refuses a system insert into a tenant-scoped object when the posture gives no organization.
Expected
Fail closed is right — the problem is the shape. Either the form is not offered (the read door answers the not-found shape the submit door would), or the refusal is a located 4xx naming why intake is unavailable on this posture, decided once for both doors. ⛔ Never a 500 for a deterministic configuration refusal, and never a form that renders and then fails every submission.
Notes
Generated by Claude Code
QA-source: #21330 · access-security.public-form-intake · found while building #21468 (outside the item's clauses)
What fails
On a walled tenancy posture, a public form whose object is tenant-scoped (the showcase contact form,
showcase_inquiry) looks published but cannot take a single submission:GET /api/v1/forms/contact-us→ 200 (the form is served, so the console renders it);POST /api/v1/forms/contact-us/submitwith a valid body → 500ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED.Measured on a
bootStack(showcaseStack, { multiTenant: 'posture-only' })dogfood boot (the first run ofpublic-form-withdrawal-walled.dogfood.test.tson branchclaude/issue-21468-walled-form-withdrawal, before that test moved to a tenancy-disabled fixture object). Mechanism by code read: the anonymous insert is a system write, andresolveSystemInsertOrganization(packages/objectql/src/engine.ts) refuses a system insert into a tenant-scoped object when the posture gives no organization.Expected
Fail closed is right — the problem is the shape. Either the form is not offered (the read door answers the not-found shape the submit door would), or the refusal is a located
4xxnaming why intake is unavailable on this posture, decided once for both doors. ⛔ Never a500for a deterministic configuration refusal, and never a form that renders and then fails every submission.Notes
objectstack(packages/rest/src/rest-server.tsregisterFormEndpoints,packages/objectql/src/engine.ts).SYSTEM_WRITE_ORGANIZATION_REQUIRED form,public form walled posture submit— no match.Generated by Claude Code