Why: test-pg built each pinned RDM artifact on top of the previous pin's submodule content, and a pin whose nested submodules never landed degraded silently — Go then fell back to remote module resolution and failed with a misleading missing go.sum entry. This makes the RDM materialization step correct and, more importantly, makes it fail loudly instead of quietly.
Evidence:
The step had two loops. The first updated submodules per pin; the build loop then checked out each pin and ran make -C rdm build without updating them, so a pin could be built against another pin's submodule content.
The build loop now updates submodules after each checkout, so every pin is built against its own.
A fail-loud assertion runs before each build: for every pins/* submodule recorded in that pin, its HEAD must equal the pin's gitlink and its working tree must contain tracked files. Landing is deliberately judged this way rather than by the presence of a go.mod — the pin set mixes Go and non-Go repositories, and the frontend pin has no go.mod at its root. That distinction was learned the hard way: an earlier version of this assertion used go.mod and rejected a pin that git had just reported as checked out correctly.
Credentials stay available for the submodule updates and are stripped from the environment for make via a small helper, so the build process never receives them and nothing is written to disk or exposed in a command line.
This is deliberately independent of any pin value: it changes no pin, and the comment describing the first-parent distance is left as-is because it remains true for the current pins.
Refs: surfaced by RDM PR #460's pin advance, which is held in a separate pull request.
Why: `test-pg` built each pinned RDM artifact on top of the previous pin's submodule content, and a pin whose nested submodules never landed degraded silently — Go then fell back to remote module resolution and failed with a misleading `missing go.sum entry`. This makes the RDM materialization step correct and, more importantly, makes it fail loudly instead of quietly.
Evidence:
- The step had two loops. The first updated submodules per pin; the build loop then checked out each pin and ran `make -C rdm build` without updating them, so a pin could be built against another pin's submodule content.
- The build loop now updates submodules after each checkout, so every pin is built against its own.
- A fail-loud assertion runs before each build: for every `pins/*` submodule recorded in that pin, its HEAD must equal the pin's gitlink and its working tree must contain tracked files. Landing is deliberately judged this way rather than by the presence of a `go.mod` — the pin set mixes Go and non-Go repositories, and the frontend pin has no `go.mod` at its root. That distinction was learned the hard way: an earlier version of this assertion used `go.mod` and rejected a pin that git had just reported as checked out correctly.
- Credentials stay available for the submodule updates and are stripped from the environment for `make` via a small helper, so the build process never receives them and nothing is written to disk or exposed in a command line.
This is deliberately independent of any pin value: it changes no pin, and the comment describing the first-parent distance is left as-is because it remains true for the current pins.
Refs: surfaced by RDM PR #460's pin advance, which is held in a separate pull request.
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=5a907f42944af56dbca68b6a058cc4f0bc2681d7.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
weichen
merged commit b25846d25b into main2026-10-21 15:52:46 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why:
test-pgbuilt each pinned RDM artifact on top of the previous pin's submodule content, and a pin whose nested submodules never landed degraded silently — Go then fell back to remote module resolution and failed with a misleadingmissing go.sum entry. This makes the RDM materialization step correct and, more importantly, makes it fail loudly instead of quietly.Evidence:
make -C rdm buildwithout updating them, so a pin could be built against another pin's submodule content.pins/*submodule recorded in that pin, its HEAD must equal the pin's gitlink and its working tree must contain tracked files. Landing is deliberately judged this way rather than by the presence of ago.mod— the pin set mixes Go and non-Go repositories, and the frontend pin has nogo.modat its root. That distinction was learned the hard way: an earlier version of this assertion usedgo.modand rejected a pin that git had just reported as checked out correctly.makevia a small helper, so the build process never receives them and nothing is written to disk or exposed in a command line.This is deliberately independent of any pin value: it changes no pin, and the comment describing the first-parent distance is left as-is because it remains true for the current pins.
Refs: surfaced by RDM PR #460's pin advance, which is held in a separate pull request.