022 — New projects start at code maturity 1 (#94)
Status: shipped (v0.28.0) Roadmap: #50
Why
Code maturity 1 — every release through a pull request onto a protected
base branch — is now the working default across the repos, but nothing
says so. tp --init writes a task-plus.yml with no maturity key, so
a new project starts at 0 and releases by pushing straight to main,
and tp check is silent about it: a repo left at 0 is only noticed when
someone remembers. The default should be the practice, and a repo below
it should show up in tp check.
What changes
tp --init: thetask-plus.ymlit writes declaresmaturity: {code: 1}andmerge_wait: 10m, so both defaults are visible in the file.merge_wait: unset means10m(was: no wait);merge_wait: 0turns the wait off. Only a pull request mode release waits, so a direct release is unchanged.tp check,task-plus.ymlsection: a warning whenmaturity.codeis not declared, or is declared below 1, naming the fix (tp maturity code 1). A warning, not an error: existing repos at 0 keep passingcheckand their releases are unchanged.docs/maturity.md,docs/release-workflow.md, README: the defaults and the check.
Acceptance
task-plus.yml |
maturity.code |
tp check |
|---|---|---|
| absent | — | File not found (using defaults) as now; no maturity finding |
| present | not declared | WARN maturity.code not declared — projects start at 1: run 'tp maturity code 1' |
| present | 0 | WARN maturity.code 0 is below 1 — run 'tp maturity code 1' |
| present | 1 or 2 | no maturity warning; the pull request mode checks as now |
| Command | Result |
|---|---|
tp --init |
task-plus.yml loads with maturity.code 1 and merge_wait 10m |
merge_wait |
Pull request mode release |
|---|---|
| unset | waits up to 10m for the merge, then tags |
10m, any duration |
waits that long |
0 |
does not wait; two runs |
Out of scope
- Changing what a missing
maturity.codemeans at release time: it stays 0, so an existing repo's release mode does not flip silently. - Special-casing a GitHub release remote, where code 1 is refused; the
warning still shows and
tp maturity code 1explains why it can't. - The rest of
tp --init's template (itsstatichostdeploy target is stale) and reporting the deploy ladder (#50 proper).
Decisions
none
Done when
- tests express the acceptance table and pass
- spec updated
- ADR written if a fork was resolved
- roadmap ticked and stamped; changelog entry
- issue closed with a link to the release