Skip to content

Port: check-skill-examples.mjs describeAnyPosition mislabels an index signature's any as return type, and flags a function type's return any inside a type argument (twin of objectstack#14910) #7653

Description

@os-zhuang

Twin of objectstack-ai/objectstack#14910, filed by the objectstack triage seat so the port lands where the fix lands. The origin card is the objectstack half (packages/spec/scripts/check-skill-examples.ts); this is the objectui half (scripts/check-skill-examples.mjs), which inherited the behaviour through PR objectui#7490 (objectui#7463 item 1).

Blocked-by: objectstack-ai/objectstack#14910

What was measured

Measured in this repo, at objectui 2df07b7 (2026-09-03T09:57Z), by the skills lane seat calling the exported findBareAny on probe strings in a compare worktree:

probe verdict note
an interface whose only member is a string index signature typed any return type an index signature is a SignatureDeclaration, so ts.isFunctionLike(parent) && parent.type === node matches it
a variable typed as an Array whose type argument is a function type returning any return type the any sits inside a type argument — the header's declared "nested any is deliberately not flagged" boundary — but its direct parent is a FunctionTypeNode
catch (e: any) variable e correct
Record of string to any; any[]; Promise of any; a generic default T = any; useState with an any type argument; a tuple [any, string] none as documented

⚠️ No verdict changes today: neither shape occurs in a marked fence here at 2df07b7 (4 findings, all labelled correctly). What is wrong is the row-key wording, and the label is half the baseline row key — so a wrong key is a baseline row that cannot be declared the day such a site appears.

Why this waits on the origin

The origin card carries a judgement this port must not answer independently: is a function type's return any under a type argument in scope or out? Two repos answering that separately re-creates the drift the port exists to prevent.

⇒ When objectstack#14910 rules, mirror it here: the IndexSignatureDeclaration arm with its own index signature label, the same in/out decision stated in this file's header, and the same self-test legs in both directions. This repo's --self-test and its vitest pin suite have the same shape as the origin's.

⛔ No baseline row changes unless a re-measure finds a site. Size XS.

⚠️ Re-measure at claim rather than trusting the numbers above — they are from 2026-09-03, and the origin card notes the two position tables were line-for-line identical at that point, which is an assumption to re-verify before porting a diff.

Refs: objectstack#14910 (origin) · objectui#7463 · PR objectui#7490 · objectstack#5943 (the assertion's origin, closed).

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

    bugSomething isn't workingdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p3tooling

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions