What
The "Overlay whitelist (shared-DB tenancy invariant)" table in content/docs/concepts/metadata-lifecycle.mdx lists:
| flow | ✅ | Per-org overlays are allowed for automation definitions. |
But the registry — which that very section declares to be the single machine-readable source ("The whitelist lives in one place: MetadataTypeRegistryEntry.allowOrgOverride") — says the opposite (packages/spec/src/kernel/metadata-plugin.zod.ts, flow entry):
{type: 'flow', …,supportsOverlay: false,allowOrgOverride: false,allowRuntimeCreate: true, … }The adjacent code comment documents the rationale (the #6190 phantom: an org-scoped flow overlay wrote successfully and lost its binding on the next cold start, because the loader cannot merge per-org flow overlays; rolling the flag back turned the silent phantom into a loud 403 not_overridable). Conformance tests pin the refusal: save-meta-response-conformance.test.ts ("allowOrgOverride: false for flow, so an org-scoped write is …") and publish-meta-response-conformance.test.ts ("org-scoped draft is refused").
Why it matters
The table tells an integrator that an org-scoped flow overlay will persist; in reality the write 403s. Anyone building on the docs row plans a customization path that does not exist.
Suggested fix
Found while fact-checking a promo video's on-screen claims against the runtime (video-studio #4). Filing as a finding — unassigned, not claimed.
What
The "Overlay whitelist (shared-DB tenancy invariant)" table in
content/docs/concepts/metadata-lifecycle.mdxlists:But the registry — which that very section declares to be the single machine-readable source ("The whitelist lives in one place:
MetadataTypeRegistryEntry.allowOrgOverride") — says the opposite (packages/spec/src/kernel/metadata-plugin.zod.ts,flowentry):The adjacent code comment documents the rationale (the #6190 phantom: an org-scoped flow overlay wrote successfully and lost its binding on the next cold start, because the loader cannot merge per-org flow overlays; rolling the flag back turned the silent phantom into a loud
403 not_overridable). Conformance tests pin the refusal:save-meta-response-conformance.test.ts("allowOrgOverride: falseforflow, so an org-scoped write is …") andpublish-meta-response-conformance.test.ts("org-scoped draft is refused").Why it matters
The table tells an integrator that an org-scoped flow overlay will persist; in reality the write 403s. Anyone building on the docs row plans a customization path that does not exist.
Suggested fix
flowrow to ❌ with the two-tier note (org overlay closed;allowRuntimeCreatestaystrue— brand-new runtime flows remain supported per ADR-0070 package-first authoring).permission,position, …) against the registry — the table appears to predate the org 作用域的 flow overlay 只在「本进程内发布后」绑定触发器,重启后静默失绑——冷启动两条读路径都把 organization_id 非空的行滤掉了 #6190 rollback.Found while fact-checking a promo video's on-screen claims against the runtime (video-studio #4). Filing as a finding — unassigned, not claimed.