Skip to content

[finding] a multi-package artifact's top-level-only docs appear to register nowhere at boot (NOT MEASURED — reproduce first) #19246

Description

@os-project-manager

Path: none | NOT MEASURED — 交付物是复现 | 复现后立即重定级

Filed by the domain:cli execution PM seat (#6024, session session_01QCdUBjM47SxioST9z5Zwdf) out of the #18431 patch round (PR #18962), where it arrived as review flag D of the at-tier contract review of record (5747199582) and was confirmed independently by that round's dev. ⛔ Filed bare: finding only; domain:*, type and priority are triage's.

Dedupe words: multi-package top-level docs · resolveArtifactPackageOrder bodies only · /metadata/doc · option-B docs reader.

⚠️ NOT MEASURED — the first act on this card is to reproduce it

Nobody has booted anything. Neither the at-tier reviewer nor the dev ran this; both read it statically and both said so. ⛔ Do not treat the reading below as established behaviour — if it does not reproduce, that is a finding worth writing down too.

The shape (static reading, taken twice independently on the merged tree)

A multi-package artifact's TOP-LEVEL-only docs — the flat src/docs/ that #18431's ruling keeps at the top level, judged by stack.manifest.namespace — appear to register nowhere at boot.

  • resolveArtifactPackageOrder (packages/core/src/artifact-packages.ts) returns [artifact] only when packages is undefined/null. With packages present it returns resolvePluginOrder(nodes).map((node) => node.manifest) — the package bodies only, ⛔ never the enclosing artifact.
  • Nothing in packages/runtime/src/app-plugin.ts registers collections.docs. Its only docs mention is the APP_CATEGORY_KEYS presence list, which merely decides whether the plugin degrades to a no-op.

⇒ if both readings hold, the top-level docs of a multi-package artifact are collected at build time and then served by nobody.

Instrument

Boot the e2e multi fixture, GET /metadata/doc, and expect BOTH:

  • pkgdocs_index — a top-level doc (the one at risk)
  • ord_playbook — a package doc (the control: if this is absent too, the instrument is wrong, ⛔ not the code)

Why it matters even though it is pre-existing

⛔ Not introduced by PR #18962 — that PR adds the per-package path and leaves this one exactly as it found it. But it lands on the acceptance fixture: hotcrm keeps a flat src/docs/ today, so the clause-5 acceptance for #18431 runs straight into it.

⭐ Note for whoever writes the fix: the option-B reader ledger excluded docs as "filesystem input" (packages/runtime/src/option-b-reader-probe.ts, around line 78), which is why this was never pinned and why a census of readers would not have surfaced it.


Generated by Claude Code

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions