Recorded while implementing #9313, which introduced per-member runtime dispatch in the reference-integrity suite (ReferenceIntegrityRule.runtimeTypes, default ['flow']) and crossed exactly validateSearchableFields + validateSortableFields onto view writes. Not claimed. Observation, not a defect: the members below are deliberately held back, and this card records why so the next widening starts from the measurement instead of rediscovering it.
What is measured
Three suite members read stack.views and can therefore produce findings on a view-write snapshot (views: [item]), but were NOT crossed:
(validateTranslationReferences also reads views, but only as resolution universe for translations[] — absent from a view snapshot, so it is structurally inert there, not held back.)
Shape of the widening, when someone wants it
Per the #8309 precedent: carry actions in RuntimeStackContext + CONTEXT_STACK_KEYS when the rule that reads it actually crosses, never in advance, with the phantom-vs-whole-stack agreement measurement PR #7886 modeled (38-vs-4). Then the crossing itself is a one-line member runtimeTypes edit plus the view-corpus replay. The advisory-volume half (validateTranslatableSections) is a UX decision with its own card, per the #4716 adjudication's treatment of the advisory tier.
Refs
#9313 (the member-dispatch design and its granularity argument), #4716 (false-positive budget; advisory-volume scoping), #8309 / #7529 (snapshot widened by measurement), #7886 (the phantom-finding measurement pattern), #4463 (the runtime door).
Generated by Claude Code
Recorded while implementing #9313, which introduced per-member runtime dispatch in the reference-integrity suite (
ReferenceIntegrityRule.runtimeTypes, default['flow']) and crossed exactlyvalidateSearchableFields+validateSortableFieldsontoviewwrites. Not claimed. Observation, not a defect: the members below are deliberately held back, and this card records why so the next widening starts from the measurement instead of rediscovering it.What is measured
Three suite members read
stack.viewsand can therefore produce findings on aview-write snapshot (views: [item]), but were NOT crossed:validateActionNameRefs(error-tier) — resolves a list view'srowActions[]/bulkActions[]/ aggregatebulkActionDefs[]againstcollectActionNames(stack)=stack.actions∪objects[].actions. The per-write snapshot (RuntimeStackContext) carriesobjectsbut noactionscollection, so on a view/container write every stack-level action reads as undefined — a phantomaction-name-undefinederror, i.e.RUNTIME_NEEDS_FULL_SNAPSHOT's exact sentence at the door's hottest type. This is the measured reason [finding] Both field-resolution gates for a list view (searchableFieldsandsort) are CLI-only — the reference-integrity suite dispatches at the runtime publish gate forflowalone, so a Studio/MCPviewwrite gets neither #9313 rejected whole-suite granularity (the anti-rider control inruntime-gate.view-writes.test.tspins it: an overlay naming a stack-level action must NOT refuse).validateChartBindings— walksviews[].list/views[].listViews.*chart widgets againstdatasets, which the snapshot DOES carry (The metadata door accepts a dashboard widget dataset binding that names nothing — 200 on both save and publish, referential integrity enforced only at runtime #7529). No missing-collection channel, but crossing it widens the refusal surface onto chart-carrying view writes and owes its own corpus replay ([P2] 运行时授权门扩到 object 写入 + 全量 runtime-safe 规则快照(#4463 P1 之后) #4716 budget) before aruntimeTypes: ['view']member edit.validateTranslatableSections(warning-only) — self-contained walk of form sections; crossing it is an advisory-VOLUME decision ([P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717 renders advisories in Studio), the same axis that holds the six advisory object rules off the object door.(
validateTranslationReferencesalso readsviews, but only as resolution universe fortranslations[]— absent from a view snapshot, so it is structurally inert there, not held back.)Shape of the widening, when someone wants it
Per the #8309 precedent: carry
actionsinRuntimeStackContext+CONTEXT_STACK_KEYSwhen the rule that reads it actually crosses, never in advance, with the phantom-vs-whole-stack agreement measurement PR #7886 modeled (38-vs-4). Then the crossing itself is a one-line memberruntimeTypesedit plus the view-corpus replay. The advisory-volume half (validateTranslatableSections) is a UX decision with its own card, per the #4716 adjudication's treatment of the advisory tier.Refs
#9313 (the member-dispatch design and its granularity argument), #4716 (false-positive budget; advisory-volume scoping), #8309 / #7529 (snapshot widened by measurement), #7886 (the phantom-finding measurement pattern), #4463 (the runtime door).
Generated by Claude Code