Capability 009: Next Steps¶
Status: Accepted
Context¶
Some generated artifacts need a step from the developer before their first push succeeds: a Go
repository has no go.sum until make init runs, a firmware has no CubeMX code, and a new board
has no outline. Without a hint, the developer learns this from a red pipeline, contrary to the
goal that the pipeline works from the first commit (mission statement,
Head start). This capability names these steps when repo update generates an artifact and in
the artifact's README.md.
References¶
Details¶
A Next Step is a manual step the developer has to take after generation; without it, a
make target or the pipeline of the artifact fails.
Next Steps, by profile:
| Profile | Next Step |
|---|---|
| Go, every type | Run make init and commit go.sum. |
TypeScript frontend-react |
Run make init and commit package-lock.json. |
C++ firmware-stm32 |
Generate the CubeMX code as described in vendor/cubemx/README.md. |
KiCad electronics |
Draw the board outline on layer Edge.Cuts; make drc fails until then. |
| Every profile | Replace the TODO markers in the generated files. |
Output of repo update for a new Go service planner and a new firmware bridge:
next: planner: Run `make init` and commit `go.sum`.
next: bridge: Generate the CubeMX code as described in `vendor/cubemx/README.md`.
next: Replace the `TODO` markers in the generated files.
Section Next Steps of the root README.md of a mono-repository explains how to work in it:
- Specifications that concern the whole system go to the root
specs/: the mission statement, decisions across artifacts, and shared interfaces. Specifications of one artifact go to its ownspecs/. - A new artifact is added with
repo add, completed in.repo.yaml, and generated withrepo update.
Functional Requirements¶
repo updateprints the Next Steps of each artifact it generates for the first time, one per line, prefixed withnext:and the artifact's name.- The Next Step that applies to every profile is printed once per run, without an artifact name.
repo updateprints no Next Step for an artifact thatmetaalready records.- Next Steps follow the
review:lines (capability 002, Functional Requirement 11). - Section
Next Stepsof the artifact'sREADME.mdlists the artifact's Next Steps, the one for every profile included. - The root
README.mdof a mono-repository has sectionNext Stepswith the content in Details.
Non-Functional Requirements¶
None.
Technical Requirements¶
None.
Error Handling¶
None.
Out of Scope¶
- Steps that are recommended but not required, e.g.
devbox shellormake build - Setting up credentials and secrets on the forge (capability 006)
- Next Steps for a module added to an existing artifact
repo check; it prints the files only
Acceptance Criteria¶
- Empty Git repository with a Go service
planner,repo update: standard output containsnext: planner:withmake init, and one line withTODOand no artifact name. - Same repository, committed,
repo updateagain: standard output contains nonext:line. - Mono-repository with the artifacts
planner(Go service) andbridge(C++ firmware-stm32), generated and committed, artifactboard(KiCad electronics) added,repo update: standard output containsnext: board:withEdge.Cuts, and nonext: planner:ornext: bridge:. - Java service
ledger,repo update: standard output contains nonext: ledger:line. - KiCad electronics, generated: section
Next StepsofREADME.mdcontainsEdge.CutsandTODO. - Mono-repository, generated: section
Next Stepsof the rootREADME.mdcontainsrepo addandspecs/.
Decisions¶
- Only steps without which a target or the pipeline fails. A list of recommendations is read once and then ignored; the README describes the rest. Consequence: Java and C++ other than firmware get no Next Step of their own.
- Printed when the artifact is first generated, not on every run.
repo updateruns repeatedly; a repeated hint is noise, and silence on success remains the rule (guidelinecli_tool.md). Consequence: a developer who misses the output finds the steps in the artifact'sREADME.md; no command repeats them. - A prefix per line instead of a block, as for
review:. The output stays one line per finding and can be filtered withgrep. Consequence: no option is needed to silence the output for scripts; commands keep taking no options. repo updatedoes not runmake inititself. Running it would need the toolchain on the generator's host and would mix generation with dependency resolution. Consequence: the Next Step for Go and TypeScript remains a manual step.- How to work in a mono-repository goes to its root
README.md, not to the output. Where specifications belong and how an artifact is added are guidance, not steps without which something fails (Decision 1). Consequence: a developer learns it from the README;repo updateprints no hint about it.