diff --git a/changelog.d/251.md b/changelog.d/251.md new file mode 100644 index 0000000..eef754f --- /dev/null +++ b/changelog.d/251.md @@ -0,0 +1,3 @@ +### Fixed + +- Kept drill doctrine's release-path instructions aligned with the executable manifest by removing its duplicate path list (#251). diff --git a/drills/README.md b/drills/README.md index b75847f..bd71948 100644 --- a/drills/README.md +++ b/drills/README.md @@ -84,10 +84,10 @@ drill owed, that verdict wins. except the `CEREMONY_SELF_REF` pin line in `.github/workflows/release.yml`. 2. The release path is exactly the output of - `.github/scripts/release-path.sh`: `.github/workflows/release.yml`, `bin/`, - `lib/version.sh`, `lib/decide.sh`, `lib/facts.sh`, and - `lib/changelog.sh`. The script is the record author's copy-paste source; - its contract test keeps this inline list and the workflow's direct and + `.github/scripts/release-path.sh`. Run the script and paste its output into + the record; measure the diff with + `git diff ..HEAD -- $(sh .github/scripts/release-path.sh)`. + The script's contract test keeps its list and the workflow's direct and transitive dependencies in agreement. 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. diff --git a/test/release-path.test.sh b/test/release-path.test.sh index fad884d..2ba304a 100755 --- a/test/release-path.test.sh +++ b/test/release-path.test.sh @@ -97,6 +97,19 @@ path_check() { [ -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() { local name="$1" tree tree="$TMP/$name" @@ -125,6 +138,8 @@ check "manifest prints the specified ordered release path" 0 \ bash "$PATH_SCRIPT" check "real workflow and transitive dependencies match the manifest" 0 "" \ 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). tree="$(fixture missing)"