Merge pull request 'docs: make release-path script the sole source' (#260) from build/251-release-path-doc into main
All checks were successful
CI / test (push) Successful in 3m48s
CI / release-exercise (push) Has been skipped
CI / self-guards (push) Successful in 21s
CI / action-exercise (push) Successful in 20s
CI / docs-sync-exercise (push) Successful in 20s
release / release (push) Successful in 21s

Reviewed-on: #260
Reviewed-by: glm-bot-andresmgsl <andres+5@heavyduty.builders>
Reviewed-by: kimi-bot-andresmgsl <andres+4@heavyduty.builders>
Reviewed-by: claude-bot-andresmgsl <andres+1@heavyduty.builders>
This commit is contained in:
andres 2026-08-25 08:57:40 +00:00
commit f6f2ec7fff
3 changed files with 22 additions and 4 deletions

3
changelog.d/251.md Normal file
View file

@ -0,0 +1,3 @@
### Fixed
- Kept drill doctrine's release-path instructions aligned with the executable manifest by removing its duplicate path list (#251).

View file

@ -84,10 +84,10 @@ drill owed, that verdict wins.
except the `CEREMONY_SELF_REF` pin line in except the `CEREMONY_SELF_REF` pin line in
`.github/workflows/release.yml`. `.github/workflows/release.yml`.
2. The release path is exactly the output of 2. The release path is exactly the output of
`.github/scripts/release-path.sh`: `.github/workflows/release.yml`, `bin/`, `.github/scripts/release-path.sh`. Run the script and paste its output into
`lib/version.sh`, `lib/decide.sh`, `lib/facts.sh`, and the record; measure the diff with
`lib/changelog.sh`. The script is the record author's copy-paste source; `git diff <last-rehearsed-tag>..HEAD -- $(sh .github/scripts/release-path.sh)`.
its contract test keeps this inline list and the workflow's direct and The script's contract test keeps its list and the workflow's direct and
transitive dependencies in agreement. transitive dependencies in agreement.
3. The last rehearsed tag's own record is a full rehearsal, its release is 3. The last rehearsed tag's own record is a full rehearsal, its release is
published, and `main` was re-armed to `-dev` after it. published, and `main` was re-armed to `-dev` after it.

View file

@ -97,6 +97,19 @@ path_check() {
[ -z "$missing" ] && [ -z "$extra" ] [ -z "$missing" ] && [ -z "$extra" ]
} }
readme_has_no_path_enumeration() {
local token found=no
for token in \
bin/ lib/version.sh lib/decide.sh lib/facts.sh lib/changelog.sh lib/forge.sh
do
if grep -qF "$token" "$ROOT/drills/README.md"; then
printf 'drill doctrine enumerates release path: %s\n' "$token" >&2
found=yes
fi
done
[ "$found" = no ]
}
fixture() { fixture() {
local name="$1" tree local name="$1" tree
tree="$TMP/$name" tree="$TMP/$name"
@ -125,6 +138,8 @@ check "manifest prints the specified ordered release path" 0 \
bash "$PATH_SCRIPT" bash "$PATH_SCRIPT"
check "real workflow and transitive dependencies match the manifest" 0 "" \ check "real workflow and transitive dependencies match the manifest" 0 "" \
path_check "$ROOT" path_check "$ROOT"
check "drill doctrine does not duplicate the executable release path" 0 "" \
readme_has_no_path_enumeration
# A door growing a dependency must name the missing path (#237 D7). # A door growing a dependency must name the missing path (#237 D7).
tree="$(fixture missing)" tree="$(fixture missing)"