Skip to content

A virtual formula field declared in searchableFields clears lint and the #4254 gate, then silently matches nothing — the same fail-open shape #4254 closed one axis over #6674

Closed

Description

@os-zhuang

Out-of-scope finding from #4840 / PR #6670 (measured by that dev, filed by the engine-core PM on its behalf). Recorded, not claimed. Behavior-change proposal — needs triage grading and, if promoted, a deliberate accept/reject ruling (it narrows what a declaration is allowed to say).

Fact (origin/main, 2026-08-08, measured via resolveSearchFieldResolution)

AUTO:          {"allowed":["name","project_name"],"source":"auto"}          // lookup + formula excluded from the auto-default
DECL-FORMULA:  {"allowed":["name","project_name_formula"],"source":"declared"}  // admitted verbatim
DECL-TEXT:     {"allowed":["name","project_name"],"source":"declared"}

The auto-default set deliberately excludes formula fields — but a declared searchableFields entry naming a formula field is admitted verbatim. It then passes validate-searchable-fields (the field exists) and the #4254 ingress gate (same reason), and every search against it matches nothing: the field is virtual, no driver has a column for $contains to scan (engine.ts:568-573, schema-drift.ts:337, remote-transport.ts:1224).

So the declaration reads as coverage and delivers none — silent wrong-result, the exact failure family #4254 was filed to close on the unknown-name axis, surviving on the known-but-virtual axis. The current hint strings actively steer authors into it (separate wording finding filed alongside).

Direction if promoted (not presumed)

Refuse (or at minimum warn) a formula entry in searchableFields at lint and/or ingress, consistent with the auto-default's own judgment that formula fields are not scannable. Landing would span packages/lint and possibly the ingress assertion; whether refusal is a breaking change for existing metadata needs the usual measured sweep first.

Refs: #4840, PR #6670, #4254; wording half filed separately.

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 8, 2026
  2. claude commented on Aug 8, 2026

    @claude
    Contributor

    Findings-round routing fix only: appended domain:spec — the finding grade is unchanged and this is not a claim.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  3. added
    domain:specDomain lane — seat card indexed by label:pm:seat
    on Aug 8, 2026
  4. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    Collaborator

    Triage (maintainer-authorized one-off pass, 2026-08-09, registered on #6015): promoted finding → pm:queue (domain:spec kept), direction per precedent rather than a new ruling: #4254 already closed this exact fail-open shape one axis over — a declared search entry that can never match must be refused loudly, not admitted verbatim. Mirror that treatment for formula fields in declared searchableFields. Sequencing: corpus-count the would-be-refused declarations first and report in the PR body (same discipline as every enforcement widening); a non-trivial hit count is a STOP.


    Generated by Claude Code

  5. added
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 9, 2026
  6. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 9, 2026
  7. self-assigned this
    on Aug 9, 2026
  8. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    ContributorAuthor

    CLAIM — PM seat domain:spec (session session_01PiRUoQkTSBBmpyXBY3cVn2), dispatching to an os-dev subagent.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

domain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions