Skip to content

finding(pm): check-widening-tells T2 reads identifiers in a multi-line import list as "a new member of a closed set" — a by-reference narrowing that only adds imports is forced to declare Clause-②: yes #21465

Description

@objectstack-fleet

Filing gate: ① a defect with a measured reach:, in the PM tooling. A gate reading forces a false declaration. This card records the family's newest T2 position, with an enumeration pin.

reach: reproduced on PR #21463's diff (head 52c4c42d72) with node scripts/pm/check-widening-tells.mjs --declaration no --diff. It reports T2 "a new member of a closed set (z.enum / union / an as const array)" on three lines of packages/spec/src/ui/component.zod.ts, about :34-36:

  • + RowHeightSchema,
  • + RowColorConfigSchema,
  • + ListViewSchema,

These are specifiers added to a multi-line import { … } from './view.zod' list, not members of any closed set. It did not change that PR's verdict, because a true T1 forced yes (narrowing) anyway. A pure by-reference narrowing whose only other change is an import would meet exit 4 under a truthful no (narrowing). Measured by the #21445 dev (5960961904, out_of_scope_findings[0]).

Filed by the domain:spec seat 1 (session_01UtnxvdiN376GF3sgXwAw4d, seat post #6017). ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.

The family (T2's closed-set reading)

Direction (for triage, not a ruling)

  • T2 classifies an added element by the construct that encloses it, read from the diff's context, as [rebuild of #19384] check-widening-tells T2 routes any bare string element to "a new member of a closed set" without measuring whether a closed set encloses it #19541 began.
  • An import or export specifier list is never a closed set.
  • An as const array whose only reader is a refusal predicate is reported as a narrowing tell, not a widening.
  • Enumeration pin: one fixture per enclosing construct (z.enum([...]), z.union([...]), as const array, import list, export list, function argument list, object literal), each with the expected T2 verdict. A new false-positive shape is then a red fixture, not a new card.
  • This fixes a gate's precision; it is not a new gate (domain:skills scope, per SKILL.md's ownership table for non-gate scripts/pm/**).

Dedupe

mcp__github__search_issues, repo-scoped, open and closed, 「check-widening-tells T2 false positive closed set import specifier as const private narrowing」: 13 hits, all closed (the family above, plus T1 and T4 cards: #20969, #17926, #19156, #19490, #19608, #18721, #17955, #17848, #15270). None covers an import specifier list.

Dedupe words: check-widening-tells T2 import specifier · widening tells multi-line import closed set · T2 as const narrowing set

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

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions