Skip to content

Commit 7f0fdf8

Browse files
committed
fix(manifest): store full 40-char SHAs (PR #81 static review)
Static review on PR #81 caught a real correctness bug in the manifest pinning: I stored 12-char abbreviated SHAs in ``external/MANIFEST.toml`` (e.g. ``dd5feaaaa500``), but ``scripts/verify_external_data.py:118-126`` compares ``spec["sha"]`` to ``git rev-parse HEAD`` with exact string equality. ``git rev-parse HEAD`` returns the full 40-char object ID, so every populated git-backed entry would FAIL verification even when checked out to the intended commit. The ``Generate verifier report`` step in ``.github/workflows/ validation.yml`` would have failed on every workflow run, which defeats the entire 1.8.1 pinning effort. Fix --- - Replace each 12-char abbreviation in ``external/MANIFEST.toml`` with the full 40-char SHA (read again from the same local clones, this time without ``rev-parse --short``). - Update the ``git checkout`` commands in ``.github/workflows/ validation.yml`` to use the full SHAs so the workflow and the manifest are byte-identical references. Verified locally ---------------- ``python scripts/verify_external_data.py --strict`` now reports ``9 PASS, 0 WARN, 0 SKIP, 0 FAIL`` (previously was ``1 PASS, 8 WARN, 0 SKIP, 0 FAIL`` in 1.8.0 with TBD pins; the abbreviated-SHA version of 1.8.1 would have flipped that to ``8 FAIL`` — exactly the contradiction the static-review pass flagged).
1 parent 4400299 commit 7f0fdf8

2 files changed

Lines changed: 21 additions & 16 deletions

File tree

‎.github/workflows/validation.yml‎

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,27 +84,32 @@ jobs:
8484
# ---------------------------------------------------------------
8585

8686
- name: Clone OpenFAST r-test at manifest-pinned SHA
87-
# 1.8.1 manifest pin: dd5feaaaa500 (NREL 5MW land / monopile
88-
# / OC3 spar regression decks).
87+
# 1.8.1 manifest pin (NREL 5MW land / monopile / OC3 spar
88+
# regression decks). Full 40-char SHA matches what
89+
# ``scripts/verify_external_data.py`` compares ``git rev-parse
90+
# HEAD`` against — abbreviated SHAs in the manifest would
91+
# silently FAIL the verifier (static review on PR #81).
8992
run: |
9093
git clone https://github.com/OpenFAST/r-test.git \
9194
external/OpenFAST_files/r-test
92-
git -C external/OpenFAST_files/r-test checkout dd5feaaaa500
95+
git -C external/OpenFAST_files/r-test \
96+
checkout dd5feaaaa500ba7283140107806300d551cff0a7
9397
9498
- name: Clone IEA-3.4-130-RWT at manifest-pinned SHA
95-
# 1.8.1 manifest pin: 824f8d65196f.
9699
run: |
97100
git clone https://github.com/IEAWindTask37/IEA-3.4-130-RWT.git \
98101
external/OpenFAST_files/IEA-3.4-130-RWT
99-
git -C external/OpenFAST_files/IEA-3.4-130-RWT checkout 824f8d65196f
102+
git -C external/OpenFAST_files/IEA-3.4-130-RWT \
103+
checkout 824f8d65196f9f84ee66df5e58e3a48a70a8f0c5
100104
101105
- name: Clone IEA-15-240-RWT at manifest-pinned SHA
102-
# 1.8.1 manifest pin: 86d51c8a1ee6 (v1.1 tower redesign —
103-
# Allen 2020 free-decay reference).
106+
# 1.8.1 manifest pin (v1.1 tower redesign — Allen 2020
107+
# free-decay reference).
104108
run: |
105109
git clone https://github.com/IEAWindTask37/IEA-15-240-RWT.git \
106110
external/OpenFAST_files/IEA-15-240-RWT
107-
git -C external/OpenFAST_files/IEA-15-240-RWT checkout 86d51c8a1ee6
111+
git -C external/OpenFAST_files/IEA-15-240-RWT \
112+
checkout 86d51c8a1ee65be4f3686087a5c443c0b57e5cfb
108113
109114
# ---------------------------------------------------------------
110115
# Run the verifier + integration suite.

‎external/MANIFEST.toml‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ maintainer = "Jae Hoon Seo <jaehoon.seo@inha.ac.kr>"
4040
# NREL 5MW land + monopile + OC3 Hywind integration tests.
4141
[clone.openfast_r-test]
4242
repo = "https://github.com/OpenFAST/r-test.git"
43-
sha = "dd5feaaaa500" # pinned 1.8.1 (was TBD in 1.8.0)
43+
sha = "dd5feaaaa500ba7283140107806300d551cff0a7" # pinned 1.8.1
4444
relative_path = "external/OpenFAST_files/r-test"
4545
fetch_at = "shallow" # ``git clone --depth=1`` is enough
4646
hashes = { } # populated by --update; see script docstring
@@ -55,29 +55,29 @@ hashes = { } # populated by --update; see script doc
5555

5656
[clone.iea_3_4_130]
5757
repo = "https://github.com/IEAWindTask37/IEA-3.4-130-RWT.git"
58-
sha = "824f8d65196f" # pinned 1.8.1 (was TBD in 1.8.0)
58+
sha = "824f8d65196f9f84ee66df5e58e3a48a70a8f0c5" # pinned 1.8.1
5959
relative_path = "external/OpenFAST_files/IEA-3.4-130-RWT"
6060
fetch_at = "shallow"
6161
hashes = { }
6262

6363
[clone.iea_10_198]
6464
repo = "https://github.com/IEAWindTask37/IEA-10.0-198-RWT.git"
65-
sha = "350cf06f5db9" # pinned 1.8.1 (was TBD in 1.8.0)
65+
sha = "350cf06f5db9cec12bcd73c2b174a5d9642958d8" # pinned 1.8.1
6666
relative_path = "external/OpenFAST_files/IEA-10.0-198-RWT"
6767
fetch_at = "shallow"
6868
hashes = { }
6969

7070
[clone.iea_15_240]
7171
repo = "https://github.com/IEAWindTask37/IEA-15-240-RWT.git"
72-
sha = "86d51c8a1ee6" # pinned 1.8.1 (was TBD in 1.8.0)
72+
sha = "86d51c8a1ee65be4f3686087a5c443c0b57e5cfb" # pinned 1.8.1
7373
relative_path = "external/OpenFAST_files/IEA-15-240-RWT"
7474
fetch_at = "shallow"
7575
notes = "v1.1 tower redesign is the pinned target — Allen 2020 free-decay reference."
7676
hashes = { }
7777

7878
[clone.iea_22_280]
7979
repo = "https://github.com/IEAWindTask37/IEA-22-280-RWT.git"
80-
sha = "57979ece000e" # pinned 1.8.1 (was TBD in 1.8.0)
80+
sha = "57979ece000ec5cc394962b964805ddf20e387be" # pinned 1.8.1
8181
relative_path = "external/OpenFAST_files/IEA-22-280-RWT"
8282
fetch_at = "shallow"
8383
hashes = { }
@@ -87,7 +87,7 @@ hashes = { }
8787
# ---------------------------------------------------------------------------
8888
[clone.wisdem]
8989
repo = "https://github.com/WISDEM/WISDEM.git"
90-
sha = "40a68818e7f2" # pinned 1.8.1 (was TBD in 1.8.0)
90+
sha = "40a68818e7f225065150786daff8d33f7e05d850" # pinned 1.8.1
9191
relative_path = "external/OpenFAST_files/WISDEM"
9292
fetch_at = "shallow"
9393
hashes = { }
@@ -111,15 +111,15 @@ hashes = { } # populated by --update on a maintainer
111111
# ---------------------------------------------------------------------------
112112
[clone.moorpy]
113113
repo = "https://github.com/NREL/MoorPy.git"
114-
sha = "1fb29f8eca26" # pinned 1.8.1 (was TBD in 1.8.0)
114+
sha = "1fb29f8eca2618543b2df7056adfdfce0265737b" # pinned 1.8.1
115115
relative_path = "external/MoorPy"
116116
fetch_at = "shallow"
117117
notes = "Optional — used for cross-comparison against pybmodes.mooring on OC3 Hywind."
118118
hashes = { }
119119

120120
[clone.raft]
121121
repo = "https://github.com/WISDEM/RAFT.git"
122-
sha = "a1e6a0a95326" # pinned 1.8.1 (was TBD in 1.8.0)
122+
sha = "a1e6a0a95326edaca713e031d9d06a5fd057d8fa" # pinned 1.8.1
123123
relative_path = "external/RAFT"
124124
fetch_at = "shallow"
125125
notes = "Optional — used for the WindIO floating screening-tier cross-check."

0 commit comments

Comments
 (0)