Capability 007: Artifact List¶
Status: Accepted
Context¶
The root of a mono-repository lists its artifacts in developer-owned files: CLAUDE.md for the
assistant, specs/index.md for the docs site, and README.md. repo update never overwrites a
developer-owned file (capability 002), so a new artifact had to be added to each list by hand.
This capability lets the generator maintain the lists in marked sections of these files and
removes the list from README.md.
References¶
Details¶
A generated section is the text between two marker lines in a developer-owned file:
Generated sections at the root of a mono-repository:
| File | Module | Section | Content per artifact, in the order of artifacts |
|---|---|---|---|
CLAUDE.md |
ai, assistant claude |
artifact-list |
Bullet: title linked to its directory, description, and its CLAUDE.md |
specs/index.md |
specs |
artifact-version-table |
Table row: title linked to its directory, — as version, release date, and commit |
The pipeline that builds the docs site fills the version table from the release tags, in its own working copy only.
Functional Requirements¶
repo updaterewrites each generated section on every run and leaves the rest of the file unchanged.- A file that lacks one of the markers of its section stays unchanged.
repo checklists a file whose generated section differs from whatrepo updatewould write.- A change confined to generated sections is no reason for a
review:line (capability 002, Functional Requirement 11). - The root
README.mdof a mono-repository names no artifact; it linksspecs/index.mdas the overview of the artifacts.
Non-Functional Requirements¶
None.
Technical Requirements¶
None.
Error Handling¶
- A file with a BEGIN marker but no matching END marker after it is left unchanged, and
repo updateprints areview:line with its path.
Out of Scope¶
- Generated sections in an artifact's own files or in a single repository
- Generated sections other than those in Details
- Converting a
README.mdgenerated before this capability; it keeps its list until the developer removes it
Acceptance Criteria¶
- Mono-repository with the artifacts
plannerandbridge, generated;CLAUDE.mdchanged outside its generated section; all committed; artifacttrackeradded,repo update:CLAUDE.mdkeeps the change and liststrackerin its generated section;specs/index.mdhas a row fortracker; standard output contains noreview:line. - Same repository, the markers removed from
CLAUDE.mdand committed, artifacttrackeradded,repo update:CLAUDE.mdis unchanged. - Same repository, the generated section of
CLAUDE.mdchanged and committed,repo check: listsCLAUDE.mdand exits non-zero. - Same repository, the END marker removed from
CLAUDE.mdand committed,repo update:CLAUDE.mdis unchanged, andreview: CLAUDE.mdis printed. - Mono-repository with the artifacts
plannerandbridge, generated:README.mdcontains neitherplannernorbridgeand linksspecs/index.md.
Decisions¶
- The generator maintains a marked section instead of taking over the whole file.
CLAUDE.mdandspecs/index.mdcarry project-specific text that the generator cannot know. Consequence: the developer edits the list only through.repo.yaml; a hand edit inside the section is lost on the next run. README.mdlinks the overview instead of listing the artifacts. One list fewer to keep in step; the docs site shows the artifacts with their versions. Consequence: a reader ofREADME.mdneeds one more click to see the artifacts.- Missing markers mean the developer opted out. Restoring them would overwrite a deliberate decision, as regenerating a deleted file would (capability 002, Decision 1).