Recorded by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) from its in-seat review of objectui PR #7490 (the port of this gate's bare-any assertion, objectui#7463 item 1). Measured by the seat at objectui 2df07b7 by calling the exported findBareAny on probe strings in a compare worktree (2026-09-03T09:57Z). objectstack's own position table at packages/spec/scripts/check-skill-examples.ts:885-894 is line for line the same as the port's, so the behaviour is the origin's, not the port's. Unassigned, bare, for triage.
Measured
| 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. Flagging is defensible — an any index signature erases checking on every keyed access — but the label misnames the position, and the label is half the baseline row key |
a variable typed as an Array whose type argument is a function type returning any |
return type |
the any sits inside a type argument, which the header calls the "nested any is deliberately not flagged" boundary, but its direct parent is a FunctionTypeNode, so it is flagged |
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 |
Neither of the first two shapes occurs in a marked fence today in objectui (4 findings at 2df07b7, all labelled correctly); objectstack's own marked population was not re-measured by the seat — re-measure at claim. So no verdict changes today; the row-key wording is what would be wrong the day such a site appears, and a wrong key is a baseline row that cannot be declared.
Scope
- Add an
IndexSignatureDeclaration arm before the isFunctionLike fallback with its own label (index signature), and decide whether a FunctionTypeNode's return any under a type argument is in scope; state it in the header either way, and give the self-test one leg per case in both directions.
- Port the same change to objectui's
scripts/check-skill-examples.mjs (its --self-test and its vitest pin suite have the same shape): one card across two repositories, or a twin card in objectui — the seat leaves the routing to triage.
- No baseline row changes unless a re-measure finds a site. Size XS.
Verified
Refs: #5943 · objectui#7463 · objectui PR #7490 · packages/spec/scripts/check-skill-examples.ts:885-894.
Recorded by the skills lane seat (session
session_01LraLgQVGq8egUwfYZpbYt1) from its in-seat review of objectui PR #7490 (the port of this gate's bare-anyassertion, objectui#7463 item 1). Measured by the seat at objectui2df07b7by calling the exportedfindBareAnyon probe strings in a compare worktree (2026-09-03T09:57Z). objectstack's own position table atpackages/spec/scripts/check-skill-examples.ts:885-894is line for line the same as the port's, so the behaviour is the origin's, not the port's. Unassigned, bare, for triage.Measured
anyreturn typets.isFunctionLike(parent) && parent.type === nodematches it. Flagging is defensible — ananyindex signature erases checking on every keyed access — but the label misnames the position, and the label is half the baseline row keyArraywhose type argument is a function type returninganyreturn typeanysits inside a type argument, which the header calls the "nestedanyis deliberately not flagged" boundary, but its direct parent is a FunctionTypeNode, so it is flaggedcatch (e: any)variable eRecordof string toany;any[];Promiseofany; a generic defaultT = any;useStatewith ananytype argument; a tuple[any, string]Neither of the first two shapes occurs in a marked fence today in objectui (4 findings at
2df07b7, all labelled correctly); objectstack's own marked population was not re-measured by the seat — re-measure at claim. So no verdict changes today; the row-key wording is what would be wrong the day such a site appears, and a wrong key is a baseline row that cannot be declared.Scope
IndexSignatureDeclarationarm before theisFunctionLikefallback with its own label (index signature), and decide whether a FunctionTypeNode's returnanyunder a type argument is in scope; state it in the header either way, and give the self-test one leg per case in both directions.scripts/check-skill-examples.mjs(its--self-testand its vitest pin suite have the same shape): one card across two repositories, or a twin card in objectui — the seat leaves the routing to triage.Verified
search_issuesin objectstack, 5 results read): [spec]check:skill-examples应拒绝 os:check 块内把入参标any—— 标记了却零覆盖的空门 #5943 (the assertion's origin, closed), [finding] check:skill-examples's marked-block EXTRACTION (not just the orphan scan) is not fence-aware — a fully worked nested example could misfire #11355 and [finding] check:skill-examples flags anos:checkmarker shown INSIDE a fenced example as an orphan, so the convention cannot be documented in the roots it governs #10791 (extraction and orphan scanning), Published-skills factual sweep: verify every behavioral claim in skills/** against the implementation — program anchor #13658, skills-sweep ③: objectstack-query (1,550 lines, 6 files) — behavioral-claim verification, content-class execution-first #13717 — none carries the labelling.Refs: #5943 · objectui#7463 · objectui PR #7490 ·
packages/spec/scripts/check-skill-examples.ts:885-894.