Skip to content

The object write door still runs no field-existence rule for searchableFields or listViews — the same asymmetry #15254 closed one key over #15495

Description

@claude

Found while implementing #15254 (PR #15493); filed as a finding only, not claimed.

Measured on origin/main at f01adfa, and still true after #15254

Driving one object publish through the #4463 runtime authoring gate with THREE dangling references at once:

position CLI verdict runtime publish door, before #15254 after #15254
highlightFields[i] was warning nothing REFUSED (object-field-ref-unknown)
searchableFields[i] error / searchable-field-unknown nothing still nothing
listViews.*.columns[i] error / list-view-field-unknown nothing still nothing

Both of the bottom two are ERROR-tier on os validate / os build / os lint today. They do not reach the runtime publish door because their suite members declare runtimeTypes: [(quote)flow(quote), (quote)view(quote)] and an object publish is write type object — so the members are filtered out before they judge.

Why this is the same defect, not a smaller one

#15254 was filed because a click author could publish something a code author is warned about. That card is fixed for highlightFields. But an object's BUILT-IN list views (objects[].listViews.*) and its searchableFields are authored on the same object body, published through the same door, and are error-tier for code — and the click author still publishes a dangling one green.

Why #15254 did not widen it

The suite records that crossing a member onto another write type is an explicit declaration PLUS that type's own false-positive measurement (#4716 priced exactly five gating rules for the object door), never automatic. #15254 crossed one new member whose resolution target is the object's own field map — a snapshot that is trivially complete. Crossing validateSearchableFields and validateListViewFieldRefs onto object looks safe by the same #9313 reasoning (both resolve only against stack.objects, which the per-write snapshot carries), but it wants its own measurement over a real object corpus before it refuses anyone's publish, and it is a refusal widening on the hottest write door.

Suggested shape

Add object to those two members' runtimeTypes in packages/lint/src/reference-integrity-suite.ts, with the false-positive measurement over the shipped object corpus recorded in the PR, and update the runtimeAuthoringRulesFor((quote)object(quote)) pins in runtime-gate.object-writes.test.ts.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions