Category
bootstrap
Problem
prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha can drift from the SHA of test/selfhost/compiler_lib_spine_smoke/main.php while fast M5 gates still pass with a stale gen-0 blob. Workers editing the spine entry can merge without refreshing sidecars, causing cold-boot / vendor-absent failures that surface only under --strict or manual wave-check.
Goal
Add script/check-selfhost-spine-sidecar-sync.php and wire it into script/ci-fast.sh (inventory tail) so PR CI fails when the stamp ≠ spine entry SHA unless explicitly waived.
Repro (failure mode today)
# 1. Touch spine entry without updating sidecar stamp
echo '// drift probe' >> test/selfhost/compiler_lib_spine_smoke/main.php
# 2. Fast gates may still pass
make north-star5-verify-fast
php script/bootstrap-inventory.php --check
# 3. Stale blob only obvious when comparing SHAs manually
cat prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha
sha256sum test/selfhost/compiler_lib_spine_smoke/main.php
Expected after fix: step 2 exits non-zero with actionable message listing refresh commands.
php-src reference
N/A — project bootstrap integrity gate (#1492, docs/bootstrap-m5-fast-path.md).
Scope (this repo)
| Piece |
Path |
| New script |
script/check-selfhost-spine-sidecar-sync.php |
| Stamp |
prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha |
| Entry SSOT |
test/selfhost/compiler_lib_spine_smoke/main.php |
| CI |
script/ci-fast.sh inventory tail (after check-selfhost-spine-coverage-sync.php) |
| Docs |
docs/bootstrap-m5-fast-path.md — refresh workflow |
| Unit test |
test/unit/script/CheckSelfhostSpineSidecarSyncTest.php |
Done when
Verify
php script/check-selfhost-spine-sidecar-sync.php
make north-star5-verify-fast
php script/check-selfhost-spine-coverage-sync.php
./script/ci-fast.sh
Links
#1492 · #8703 · docs/bootstrap-m5-fast-path.md
Category
bootstrapProblem
prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.shacan drift from the SHA oftest/selfhost/compiler_lib_spine_smoke/main.phpwhile fast M5 gates still pass with a stale gen-0 blob. Workers editing the spine entry can merge without refreshing sidecars, causing cold-boot / vendor-absent failures that surface only under--strictor manual wave-check.Goal
Add
script/check-selfhost-spine-sidecar-sync.phpand wire it intoscript/ci-fast.sh(inventory tail) so PR CI fails when the stamp ≠ spine entry SHA unless explicitly waived.Repro (failure mode today)
Expected after fix: step 2 exits non-zero with actionable message listing refresh commands.
php-src reference
N/A — project bootstrap integrity gate (#1492,
docs/bootstrap-m5-fast-path.md).Scope (this repo)
script/check-selfhost-spine-sidecar-sync.phpprelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.shatest/selfhost/compiler_lib_spine_smoke/main.phpscript/ci-fast.shinventory tail (aftercheck-selfhost-spine-coverage-sync.php)docs/bootstrap-m5-fast-path.md— refresh workflowtest/unit/script/CheckSelfhostSpineSidecarSyncTest.phpDone when
sha256(main.php)(or documented canonical hash input)BOOTSTRAP_ALLOW_STALE_SIDECAR=1opt-out documented for intentional blob batch PRs only./script/ci-fast.shinvokes the check by defaultmake bootstrap-selfhost-lib-spine-smoke→ refreshprelinked/bootstrap-gen0/Verify
Links
#1492 · #8703 ·
docs/bootstrap-m5-fast-path.md