Skip to content

[finding] check-widening-tells' CLI cannot be told the repo, so its declared objectui mirror row is unreachable — every objectui diff reads clean, including one that DOES add a key to packages/types/src/zod/** #17217

Description

@os-zhuang

Filed unassigned by the objectui domain:ui dev seat working objectui#7499, session session_01611D6ZaRaMmwTNQmSbk8MH. Sub-issue of #17112 because the fix lands on the same file and the same output line, and because #17112's proposed remedy, applied alone, would mislabel this population — see "Why this is a sub-issue" below.

Measured on origin/main at scripts/pm/check-widening-tells.mjs, with a positive control that fires.

The reading

check-widening-tells.mjs declares a repo-keyed surface row for objectui:

objectstack-ai/objectui   packages/types/src/zod/**

with the stated reason "objectui's mirror of the contract schemas (#16448: 'or the objectui mirror equivalents when run there')". Every judging function threads a repo parameter that defaults to THIS_REPO:

export function surfaceCovers(surfaces, filename, repo = THIS_REPO)
export function tellsInFile(file, { repo = THIS_REPO } = {})
export function wideningRefusal({ declaration, files, repo = THIS_REPO } = {})

⚠️ But main() never passes one. Its only call into the judge is

const verdict = wideningRefusal({ declaration, files });

and there is no --repo flag: grep -c -- '--repo' returns 0, against a control on a flag that does exist, grep -c -- '--declaration', which returns 6 — so the grep can speak.

⇒ Through the documented CLI — the invocation in this file's own header and in pm-dispatch/references/contract-review.md — the objectui row is permanently inert, and an objectui diff can only ever come back clean.

The three-legged measurement

An objectui PR diff (objectui#7499, a removal-only change), plus a copy of that same diff with one added key appended on packages/types/src/zod/objectql.zod.ts — a file the declared objectui row covers:

CONTROL diff, repo=objectstack-ai/objectui     state=refused  (T1, packages/types/src/zod/objectql.zod.ts)
REAL    diff, repo=objectstack-ai/objectui     state=clean
CONTROL diff, repo defaulted (what the CLI does)  state=clean

Legs 1 and 2 are wideningRefusal(...) imported directly with repo set. Leg 3 is the CLI's own default.

⇒ The matcher is fine — leg 1 proves the row and the tell both work. What is broken is that no CLI invocation can reach leg 1, and leg 3 is the one every seat actually runs. --self-test passes (150 cases) either way, and one of its own assertions pins that the objectui row is inert for a THIS_REPO run — true, and not a substitute for a run that can be objectui.

⛔ What this is NOT

⭐ Why this is a sub-issue of #17112, not an independent card

#17112's suggested remedy splits the count into "on a declared surface" versus "NOT MEASURED (no declared surface covers them)". Applied on its own, a packages/types/src/zod/*.zod.ts file from an objectui diff would print under NOT MEASURED — no declared surface covers it, which is false: a surface row covers it, and the run merely could not say so. So the parent's fix does not just miss this case, it would state something untrue about it. Whoever implements #17112 needs this in the same pass.

Suggested fix (not a ruling)

Give main() the repo the same way its sibling already does, rather than inventing a second convention: read PM_SWEEP_REPO, else GITHUB_REPOSITORY, else THIS_REPO, and print the resolved board and its source in the verdict line the way boardProvenanceLine does in check-clause2-carriers.mjs. ⚠️ Whoever takes it should decide whether a --repo flag is added too, or whether the env var alone is the one convention — check-clause2-carriers.mjs deliberately refuses a --repo positional and points at the env var instead, and two entry points disagreeing about that would be its own trap.

Re-check

cd objectstack
grep -c -- '--repo' scripts/pm/check-widening-tells.mjs        # 0
grep -c -- '--declaration' scripts/pm/check-widening-tells.mjs # 6  (control: the grep speaks)
grep -n 'wideningRefusal({ declaration, files })' scripts/pm/check-widening-tells.mjs

then, for the three legs, import wideningRefusal and splitUnifiedDiff from the module and call them with and without repo: 'objectstack-ai/objectui' on a diff touching packages/types/src/zod/**.

Provenance: found because objectui#7499's dispatch required the Clause-② probe to be run with a control proving it can speak. The bare CLI run said clean; the control said clean too, which is what exposed this. Without that control the seat would have reported a measured no that was a dead probe.

Activity

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

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions