fix(build): refresh the dependency manifest after #743 - #750
Conversation
main is red at dd1d024: check-generated-manifest reports core_compiled.lgb, core_go_lowered/ and zz_primitives_generated.go stale, failing both generated-artifacts and build. #743 edits pkg/rt/keysource.go, keysource_queued.go, term.go and term_plan9.go, all declared inputs in #641's manifest, so their recorded hashes no longer match the tree. Its checks were green from a pre-#641 base, and GitHub does not re-run a PR when its base moves — the same sequence that took main down through #733. make generate changes only the manifest and its digest; no generated output content moves. Refs #747.
|
@nnunley sorry to send you a near-duplicate of #749 — same two-file fix, different trigger, and this one was avoidable. #743 edits four inputs the manifest declares:
The rule I should have been applying, and will from here: a PR is only safe to merge if its checks ran after 8ff841d. Eight open PRs still fail that test — #745, #501, #730, #698, #717, #723, #624 and #699 — so this will keep recurring until something enforces it rather than reporting it after the fact. That is the part of #747 I would most value your read on, whenever you have time. No rush on it or on #748; this one is just to get |
Editing any file declared as a generator input in pkg/rt/generated.manifest restages core_compiled.lgb, core_go_lowered/ and zz_primitives_generated.go, because #641 records a SHA-256 per input rather than comparing output content. Nothing local caught the omission — no hook ran check-generated at any stage — and no server-side operation can refresh the manifest, since a rebase, a merge driver and the stack UI all lack a generator. The gap cost main two outages (#749 and #750 were hand-written repairs) and three rebase-and-regenerate cycles on the #698/#699/#717 stack, where every branch stayed red through two rounds of restacking. Add check-generated as a pre-push hook. It is a hash comparison against the tree with no regeneration and no build, so it costs ~1.3s — the cheapest hook in the file, against go-test, the compat suite and the ir-stress ratchet already at that stage. always_run is set because a declared input can be a .go or a .lg file, so a types filter would miss half the sources. Drop the -stale flag from make check-generated-manifest so the target runs the digest check too, a gap @nooga caught in review. Under -stale the target listed outputs whose recorded input hashes no longer matched the tree and stopped, never comparing generated.sums against generated.manifest, so a wrongly-merged digest passed silently — the #747 case this target is relied on to catch. It also inverted the parity the hook's note promises, blocking a git contributor where a jj contributor running the Makefile target was not. The unflagged mode is a superset: stale inputs still exit 1 identically, and a digest mismatch now exits 1 as well. Verified with prek: the hook passes on a clean tree, and a committed edit to pkg/rt/os.go fails it with the message naming the three stale outputs and `make generate`. The failure only reproduces when the edit is committed — prek stashes unstaged changes before running hooks, so an uncommitted probe passes vacuously. Refs #641, #747, #751. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
mainis red at dd1d024, the same failure shape as #749 fixed for #733:#743 edits
pkg/rt/keysource.go,keysource_queued.go,term.goandterm_plan9.go— four inputs #641's manifest declares — so their recorded hashes stopped matching the tree at merge. Its own checks were green from a pre-#641 base, and GitHub does not re-run a PR when its base moves.This is the second time in one evening, which is the argument #747 is really about: a green badge measured against a base that no longer exists is not evidence, and nothing currently forces a re-run between approval and merge.
Fix
make generate. Only the manifest and its digest change; no generated output content moves.Verification
make check-generatedpasses after the change.Still exposed
Open PRs touching a declared input with no digest of their own: #745, #501, #730, #698, #717, #723, #624, #699. Each needs one
make generatewhen rebased, and none should be merged on checks that predate #641 landing.