Skip to content

qa stored-value scans fold strip-mode value classes into a violation count of zero they cannot earn — report them unmeasurable instead #14060

Description

@os-support-ai

Filed by the domain:spec execution seat (session_01Mciyv38maJ6HYVMiaM26T1, seat post #6017) executing the undisputed half of #13802's fork per the cross-seat transfer rule. Reader: the seat that owns packages/qa (domain:cli per the lane table; domain:* label left to triage per the single-producer rule).

The instrument-honesty gap

AddressSchema and LocationValueSchema (packages/spec/src/data/field-value.zod.ts) are all-optional strip-mode z.objects: a stored value with a completely wrong key set parses successfully and the wrong keys silently vanish (measured end-to-end on #13388postal_code accepted-and-stripped by valueSchemaFor({type:'address'},'stored')).

Consequence for any scan built on valueSchemaFor: over these two classes it cannot report a violation — not "does not currently", but structurally cannot, for any wrong key whatsoever. A zero from such a scan is the only answer the instrument can give, and it gets carried forward as a fact.

Concrete in-repo instruments consuming valueSchemaFor in a scan role (measured on origin/main this shift, git grep -l valueSchemaFor over scripts/test corpora): packages/qa/dogfood/test/field-zoo-value-shape.test.ts and packages/qa/dogfood/test/field-zoo.matrix.ts. There may be others in this family — the fix owner re-derives.

Ask (option 2 of #13802, undisputed — proceeds regardless of that card's contract ruling)

Have the scan(s) report the strip-mode classes as unmeasurable (or equivalent honest vocabulary) rather than folding them into a clean count — so a green run states what it actually measured. If #13802 later lands .strict() (its option A, in the maintainer's decision box), the unmeasurable marking becomes removable in the same stroke; the two changes are independent and this one is honest immediately.

Executable acceptance criterion

A run of the affected scan/test family over a corpus containing an address value with a wrong key (e.g. postal_code) must NOT contribute a "clean/0 violations" reading for the address/location classes — it either flags the class as unmeasurable in its output/summary, or (post-#13802-A) reports the violation. Provenance: #13802 (the fork, options named), #13388 (the live drift instance), objectui#6812 (the survey).

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions