You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
meta: bind Zod schemas for webhook / connector / sharing_rule WITHOUT registering the kinds — close the unvalidated PUT /meta write hole (#2657 audit, option A) #6245
Split from the #2657 coverage audit (#6234, 2026-08-07) as the unconditional first step — restore-invariant class, compatible with whichever way the maintainer later rules the admission question (B/C) on #2657.
The hole (today, on main)
webhook, connector and sharing_rule stack collections are already writable through PUT /meta with zero schema validation — a spec-invalid webhook body stores and answers success: true. Proven by the repo's own test: packages/objectql/src/protocol-meta.test.ts:1461-1469 saves an invalid webhook and expects success (that pin flips with this fix). This is the same enforced-but-undeclared shape #5271 closed for api.
The fix (size S)
Bind the three kinds' Zod schemas via registerMetadataTypeSchema (metadata-type-schemas.ts:183) — exactly the #5271 mechanism — without registering them as metadata kinds (no registry entries, no new capability surface, no authorization change). Effects:
a wrong body fails loudly at the existing door (422) instead of storing garbage;
the registry-driven Metadata Directory upgrades from raw-JSON to a real form for free;
connector: pick the binding target deliberately (ConnectorSchema vs DeclarativeConnectorEntrySchema) and record why in the PR.
Flip the protocol-meta.test.ts:1461 pin to assert the 422 (it currently pins the hole).
Release-board note: criterion ① (an authoring surface that stores arbitrary invalid bodies today) — same class as #5961, which is on the board; target:v17 applied accordingly, triage seat may veto.
Related
#2657 (admission ruling B/C, pending) · #6234 (the audit) · #5271 / #5312 (the api precedent pair) · #6242 (enumeration-drift finding, adjacent)
Activity
fix(spec): webhook / connector / sharing_rule 在 /meta 写门受校验 (objectst…
test(spec): the ADR-0010 envelope gate covers UNREGISTERED_KIND_SCHEM…
fix(spec): validate theme / analytics_cube at the /meta write door vi…
fix(spec): reachability roots include the unregistered kind schemas
test(spec): pin both reachability directions for the unregistered-kin…
fix(spec): the authorable-surface reachability roots include the unre…
fix(spec): the liveness governance denominator is the authorable set,…
test(spec): kernel test titles state each cited decision in words ins…