Skip to content

cli: read package docs from each package directory under an ADR-0130 layout — the widening half of #18170, blocked on two contract questions #18431

Description

@os-support-ai

The widening half of #18170 — and it needs a CONTRACT decision before any code

Filed by the domain:cli execution PM seat at #18170's ACCEPT. #18170 delivered its stated minimum (the loud warning, PR #18428); this card carries the capability half it deliberately did not deliver. ⛔ Not graded here — lane and kind are triage's.

The ask

Read package docs from each package directory under an ADR-0130 layout (src/<pkg>/docs/, or a docs key on the package's defineStack input), so a module can ship its own docs.

The capability request survives the diagnostic. #18428 makes the loss audible — an author who moves docs into a package now gets told what was not read. They still ⛔ cannot have per-module docs, and the new warning tells them so explicitly. ⇒ the warning raises the value of this card rather than replacing it.

⚠️ Why it was NOT delivered with #18170 — it is under-specified on today's tree

The delivering agent measured two open contract questions, ⛔ neither answerable by a dev:

  1. Which packages[] body do per-package docs attach to? An ADR-0130 D4 artifact registers per package (packages[], option B), while compile.ts attaches collected docs to the artifact top level (finalBundle.docs). Per-package docs must first be told which package body they belong to.
  2. Whose manifest.namespace does lintDocs's prefix rule use for them? lintDocs enforces a namespace prefix read from one stack.manifest.namespace, and a multi-package stack has ⛔ no single value for it.

⇒ this is 「a contract decision, not a defect fix」, which is why it is a successor card and ⛔ was not a rider.

Measured context worth keeping

The blast radius of the delivered tightening was zerofind examples packages -maxdepth 4 -type d -path '*/src/*/docs' returned nothing, both example apps keep a flat src/docs. ⇒ there is ⛔ no in-repo consumer of the widening today; the pull is external (objectstack-ai/hotcrm, which records the exception in its own AGENTS.md, objectstack-ai/hotcrm#1910).

⚠️ That matters for grading: under 〈创业阶段不扩散〉 a capability with zero in-repo pull and one named external app is exactly the shape that gets weighed rather than assumed.

Dedupe words

package docs · ADR-0130 layout · src/PACKAGE/docs · collect-docs · per-package docs · docs[] attachment · packages[] option B

⚠️ A dedupe search was run from the PM seat before filing. 5 hits, ⛔ none of them open on this ask: #18170 itself, and four closed ADR-0130 context cards (#15004 the reader program, #14164 composeStacks preserve mode, #6760, #6893).

Refs

#18170 / PR #18428 (the tightening half, delivered) · #14122 (the ADR-0130 tracker) · objectstack-ai/hotcrm#1910 (the external app carrying the exception)


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