You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] the docs sweep scans one level under src/, so a doc in this repo's own ADR-0130 reference fixture (src/packages/PKG/docs/) is dropped silently — exit 0, nothing printed #18965
The docs sweep looks exactly ONE level under src/ — and this repo's own ADR-0130 reference fixture nests one level deeper
os build reads package docs from src/docs/ (flat). #18170 / PR #18428 made the loss audible: a Markdown file sitting in src/<pkg>/docs/ is not collected, but a warning names it. #18431 then made those directories collectable.
Both the diagnostic and the collection scan one level. packages/cli/src/utils/collect-docs.ts, uncollectedDocsDirectories (⭐ located from the symbol, not a line number):
⇒ it asks, for each direct child of src/, whether src/<child>/docs holds Markdown.
This repo's own ADR-0130 D4 reference fixture does not have that shape. Measured on origin/main:
find examples/app-multi-package/src -maxdepth 3 -type d
examples/app-multi-package/src
examples/app-multi-package/src/packages ← the only direct child
examples/app-multi-package/src/packages/core
examples/app-multi-package/src/packages/orders
Its packages live at src/packages/<pkg>/, two levels down. So for that layout the sweep's only question is "does src/packages/docs exist?" — it does not, and the loop yields nothing.
Put a doc at src/packages/orders/docs/ord_guide.md.
Run os build.
Result: the doc is silently dropped. The artifact carries no docs[] entry for it, the command exits 0, and nothing is printed — not the docs/uncollected-directory warning either, because the sweep never looked there.
⇒ That is the #18170 defect verbatim, one level deeper — and after #18431 it is unreachable by both the diagnostic and the collection. #18170's stated minimum was to make the loss audible; at this depth it is inaudible again.
⛔ Why #18431 deliberately did not fix it, and why that was right
The maintainer's ruling on #18431 (batch #147 item 4, comment 5715694492) fences it: a single-package stack's existing behaviour must not move, and the source convention is src/<pkg>/docs/. Widening the scan depth is a convention decision that ruling did not make — it changes which directories the build claims to understand. #18431's deliverer measured this, named it, and left it alone. ⇒ ⛔ not a defect in #18431, and ⛔ not a reason to hold #18962.
What has to be settled, and by whom
Which depth the ADR-0130 convention actually means. The two candidate readings are not equivalent:
any package directory the artifact registers — resolve the docs directory from packages[]/the assembled body rather than from a fixed depth. That reaches both layouts and stops the sweep guessing from the filesystem shape at all.
⚠️ This card ⛔ does not choose. It reports that the reference fixture and the convention currently disagree, and that the disagreement is silent.
Dedupe — complete enumeration, with controls
/search/* answers 403 for this session, so every open issue was enumerated (GET /issues?state=open&per_page=100&page=1..6) and scanned locally — 529 cards, not a sample:
#18170 / PR #18428 (made the one-level loss audible) · #18431 / PR #18962 (made the one-level directory collectable; its deliverer measured and reported this) · #14122 (the ADR-0130 tracker) · objectstack-ai/hotcrm#1904, objectstack-ai/hotcrm#1910 (the external split the convention has to serve)
⛔ Not graded here — lane, kind and priority are triage's.
The docs sweep looks exactly ONE level under
src/— and this repo's own ADR-0130 reference fixture nests one level deeperos buildreads package docs fromsrc/docs/(flat). #18170 / PR #18428 made the loss audible: a Markdown file sitting insrc/<pkg>/docs/is not collected, but a warning names it. #18431 then made those directories collectable.Both the diagnostic and the collection scan one level.
packages/cli/src/utils/collect-docs.ts,uncollectedDocsDirectories(⭐ located from the symbol, not a line number):⇒ it asks, for each direct child of
src/, whethersrc/<child>/docsholds Markdown.This repo's own ADR-0130 D4 reference fixture does not have that shape. Measured on
origin/main:Its packages live at
src/packages/<pkg>/, two levels down. So for that layout the sweep's only question is "doessrc/packages/docsexist?" — it does not, and the loop yields nothing.The failure, stated as a repro
examples/app-multi-package's layout (src/packages/<pkg>/).src/packages/orders/docs/ord_guide.md.os build.Result: the doc is silently dropped. The artifact carries no
docs[]entry for it, the command exits 0, and nothing is printed — not thedocs/uncollected-directorywarning either, because the sweep never looked there.⇒ That is the #18170 defect verbatim, one level deeper — and after #18431 it is unreachable by both the diagnostic and the collection. #18170's stated minimum was to make the loss audible; at this depth it is inaudible again.
⛔ Why #18431 deliberately did not fix it, and why that was right
The maintainer's ruling on #18431 (batch #147 item 4, comment 5715694492) fences it: a single-package stack's existing behaviour must not move, and the source convention is
src/<pkg>/docs/. Widening the scan depth is a convention decision that ruling did not make — it changes which directories the build claims to understand. #18431's deliverer measured this, named it, and left it alone. ⇒ ⛔ not a defect in #18431, and ⛔ not a reason to hold #18962.What has to be settled, and by whom
Which depth the ADR-0130 convention actually means. The two candidate readings are not equivalent:
src/<pkg>/docs/— what the code and the fix(cli): say what the ADR-0046 package-docs collector did not read (#18170) #18428 warning implement today, and what the ruling names. Thenexamples/app-multi-packageis simply not in that convention, and the reference fixture disagrees with the convention it references.packages[]/the assembled body rather than from a fixed depth. That reaches both layouts and stops the sweep guessing from the filesystem shape at all.Dedupe — complete enumeration, with controls
/search/*answers 403 for this session, so every open issue was enumerated (GET /issues?state=open&per_page=100&page=1..6) and scanned locally — 529 cards, not a sample:uncollected-directorysrc/packages/app-multi-packageneardocsADR-0130⇒ no open card covers this.
Dedupe words
src/packages/PACKAGE/docs·ADR-0130 nested package directory·uncollected-directory depth·app-multi-package docs layout·docs silently dropped·docs sweep depthRefs
#18170 / PR #18428 (made the one-level loss audible) · #18431 / PR #18962 (made the one-level directory collectable; its deliverer measured and reported this) · #14122 (the ADR-0130 tracker) ·
objectstack-ai/hotcrm#1904,objectstack-ai/hotcrm#1910(the external split the convention has to serve)⛔ Not graded here — lane, kind and priority are triage's.
Generated by Claude Code