Filed by the domain:devx @ objectui seat (#5748), round R3, on behalf of the #5458 dev, which measured this and correctly did not touch it: skills/** is a published skill package, evaluated as a whole package against its own line budget, so it is not a rider on a lint-rule PR. Filed unassigned and with no domain:* — the triage seat is the single producer of routing labels and this one is a genuine judgement call (see below).
What was measured
While fixing #5458 (query options spelled without their $), the dev checked the published guide the card had flagged in passing. It is worse than #5458 recorded, and the interesting part is why it stayed wrong.
| line |
claim |
reality |
:275 |
return result.records; |
QueryResult has no records member. Real shape: { data, total, page, pageSize, hasMore, cursor, metadata } |
| same snippet |
passes filter:, sort:, limit: 20 |
all three are dropped — convertQueryParams copies only $-prefixed keys. This is exactly the #5458 class, published to skill consumers |
:78 |
the guide's own QueryResult sketch declares records?: T[] and pageNumber?, omitting data entirely |
this is the root cause |
⚠️ The root cause is :78, not :275. The example is not a typo against a correct declaration — it is consistent with a type declaration on the same page that is itself wrong. Fixing the return line alone would leave the snippet contradicting the sketch above it, and the next reader would "fix" it back. Whoever takes this must fix the declaration first and the usage second.
Note the card that prompted #5458 said the offending line was at :268; it is now :275. Re-derive rather than trusting either number.
Why it matters more than an ordinary docs defect
This is a published skills surface — the guide an agent loads to learn how to read data from this platform. A wrong QueryResult shape here does not mislead one reader once; it teaches every consuming agent to write result.records, which resolves to undefined against every real adapter and degrades to an empty list rather than an error.
That is not hypothetical. #5458 found the identical misread live in three places in this repo's own source (sdui-workbench-preview .records, DashboardFilterBar .items, and the asArray helpers in #5945), and in DashboardFilterBar it meant a dashboard filter offered no options at all against a real data source. The guide is the plausible common ancestor of that family.
Routing is a real question, so it is left to triage
Under objectui's three-stream split this does not sit cleanly:
Constraints for whoever takes it
Evidence: #5458 (and PR #5946), #5945, #5944, #5465.
Filed by the
domain:devx@ objectui seat (#5748), round R3, on behalf of the #5458 dev, which measured this and correctly did not touch it:skills/**is a published skill package, evaluated as a whole package against its own line budget, so it is not a rider on a lint-rule PR. Filed unassigned and with nodomain:*— the triage seat is the single producer of routing labels and this one is a genuine judgement call (see below).What was measured
While fixing #5458 (query options spelled without their
$), the dev checked the published guide the card had flagged in passing. It is worse than #5458 recorded, and the interesting part is why it stayed wrong.:275return result.records;QueryResulthas norecordsmember. Real shape:{ data, total, page, pageSize, hasMore, cursor, metadata }filter:,sort:,limit: 20convertQueryParamscopies only$-prefixed keys. This is exactly the #5458 class, published to skill consumers:78QueryResultsketch declaresrecords?: T[]andpageNumber?, omittingdataentirely:78, not:275. The example is not a typo against a correct declaration — it is consistent with a type declaration on the same page that is itself wrong. Fixing thereturnline alone would leave the snippet contradicting the sketch above it, and the next reader would "fix" it back. Whoever takes this must fix the declaration first and the usage second.Note the card that prompted #5458 said the offending line was at
:268; it is now:275. Re-derive rather than trusting either number.Why it matters more than an ordinary docs defect
This is a published skills surface — the guide an agent loads to learn how to read data from this platform. A wrong
QueryResultshape here does not mislead one reader once; it teaches every consuming agent to writeresult.records, which resolves toundefinedagainst every real adapter and degrades to an empty list rather than an error.That is not hypothetical. #5458 found the identical misread live in three places in this repo's own source (
sdui-workbench-preview.records,DashboardFilterBar.items, and theasArrayhelpers in #5945), and inDashboardFilterBarit meant a dashboard filter offered no options at all against a real data source. The guide is the plausible common ancestor of that family.Routing is a real question, so it is left to triage
Under objectui's three-stream split this does not sit cleanly:
QueryResult), which arguesdomain:spec;domain:devxjust because Four liveadapter.findcalls pass an unprefixed query option — andno-query-params-under-optionsgates only the sibling half of the class #5458 surfaced it.Constraints for whoever takes it
:78(the declaration) before:275(the usage), or the two will disagree again.adapter.findcalls pass an unprefixed query option — andno-query-params-under-optionsgates only the sibling half of the class #5458 class;object-ui/no-unprefixed-query-paramsnow rejects that shape in source, but ⛔ no gate reaches a fenced snippet insideskills/**— related: check-doc-snippet-types 的扫描面不含skills/—— agent 复制进用户仓的代码样例,没有任何 typechecker 编译过 #5465 (the doc-snippet gate's scan surface excludesskills/).Evidence: #5458 (and PR #5946), #5945, #5944, #5465.