Filed unassigned by the os-dev seat while measuring for #6075. Grading and domain:* are the triage seat's. ⛔ Not fixed in #6075's PR — that card changes the recogniser, not the scan scope.
The defect
packages/cli/src/commands/check.ts:
constfiles=globSync('**/*.{json,yaml,yml}',{
cwd,ignore: ['node_modules/**','dist/**','.git/**']});glob matches ignore patterns against the path relative to cwd, so dist/** excludes only a dist/ directory at the project root. Every nested one — packages/*/dist/, examples/*/dist/, apps/*/dist/ — is scanned. node_modules/** has the same shape and the same hole for nested installs.
So in any built workspace objectui check reports on build output: generated copies of the author's own schemas, counted a second time, in paths the author cannot fix by editing.
Measured, on this repository at 090927f4f
Same command, same tree, the only difference being whether packages had been built:
| tree state | files globbed | eligible | recognised | reported/skipped |
|---|
| clean checkout | 617 | 475 | 375 | 54 / 46 |
| after a full build | 1047 | 903 | 749 | 107 / 47 |
examples/schema-catalog/dist/schemas/** is the bulk of the difference: the same schema files the command already read under src/, read again from build output. Every count the command prints roughly doubles, and nothing in the output tells the reader why.
This is why any measurement of the skip/report counts has to state whether the tree was built — the numbers on #6075 and #5329 are clean-checkout numbers.
Suggested direction (measurement wins)
'**/dist/**' and '**/node_modules/**' fix the stated intent, and the glob is cheap enough that the extra pattern costs nothing. Worth confirming against a project that legitimately keeps authored schemas under a directory called dist before treating the exclusion as unconditional — but the current behaviour excludes nothing but the root, which is almost certainly not what was meant.
Independent of #6075: the hole predates it and is visible on main today.
Generated by Claude Code
Filed unassigned by the
os-devseat while measuring for #6075. Grading anddomain:*are the triage seat's. ⛔ Not fixed in #6075's PR — that card changes the recogniser, not the scan scope.The defect
packages/cli/src/commands/check.ts:globmatchesignorepatterns against the path relative tocwd, sodist/**excludes only adist/directory at the project root. Every nested one —packages/*/dist/,examples/*/dist/,apps/*/dist/— is scanned.node_modules/**has the same shape and the same hole for nested installs.So in any built workspace
objectui checkreports on build output: generated copies of the author's own schemas, counted a second time, in paths the author cannot fix by editing.Measured, on this repository at
090927f4fSame command, same tree, the only difference being whether packages had been built:
examples/schema-catalog/dist/schemas/**is the bulk of the difference: the same schema files the command already read undersrc/, read again from build output. Every count the command prints roughly doubles, and nothing in the output tells the reader why.This is why any measurement of the skip/report counts has to state whether the tree was built — the numbers on #6075 and #5329 are clean-checkout numbers.
Suggested direction (measurement wins)
'**/dist/**'and'**/node_modules/**'fix the stated intent, and the glob is cheap enough that the extra pattern costs nothing. Worth confirming against a project that legitimately keeps authored schemas under a directory calleddistbefore treating the exclusion as unconditional — but the current behaviour excludes nothing but the root, which is almost certainly not what was meant.Independent of #6075: the hole predates it and is visible on
maintoday.Generated by Claude Code