forked from heavy-duty/ceremony
Found by the first post-merge sweep after the 0.6.0 merge — #198's own acceptance probe — not by review. Three PRs in one run: labels: #208: could not read the head commit's date: forge_api: HTTP 404 from 'GET repos/heavy-duty/ceremony/commits/f3a1336…' — blocker:unrequested not judged this pass Measured against this instance: forgejo repos/{o}/{r}/commits/{sha} -> 404 forgejo repos/{o}/{r}/git/commits/{sha} -> 200, date under `.created` github repos/{o}/{r}/commits/{sha} -> 200, date nested A fourth asymmetry, alongside the three lib/forge-forgejo.sh's header already records. #198 ported this call site onto the shim with GitHub's path unchanged — correct against GitHub, and the block it lives in (#236 D2) arrived WITH the merge, so nothing here had ever executed it. So it becomes a verb rather than a path at the call site: the caller wants one timestamp and should not have to know either shape. Cost while it stood was bounded and loud rather than silent — guarded_read refused and the sweep said so — but blocker:unrequested could never be judged on this forge. The tests pin each backend's PATH and FIELD, because a stubbed forge_api cannot catch a wrong path; that is exactly how this shipped and why it took a live sweep to find. Swapping the paths reds the forgejo pair; swapping the fields reds the github one. test/run.sh 28/28 under jq 1.7 and jq 1.6; forge-backends 124/124; shellcheck 0.10.0 and actionlint clean. Refs #209
16 lines
700 B
Markdown
16 lines
700 B
Markdown
### Fixed
|
|
|
|
- `blocker:unrequested` is judged on this forge again. The head-commit date was
|
|
read from `repos/{o}/{r}/commits/{sha}`, which Forgejo answers **404** — so
|
|
every sweep degraded and left the blocker unjudged (#209).
|
|
|
|
- `forge_commit_at` is a verb on both backends: GitHub serves a single commit at
|
|
the bare path with the date nested, Forgejo at `git/commits/{sha}` with it
|
|
under `.created`. The caller asks for one timestamp and knows neither shape
|
|
(#209).
|
|
|
|
### Added
|
|
|
|
- `test/forge-backends.test.sh` pins each backend's path **and** field, because
|
|
a stubbed `forge_api` cannot catch a wrong path — which is how this shipped
|
|
and why a live sweep was what found it (#209).
|