Skip to content

fix(build): refresh the dependency manifest after #743 - #750

Merged
mparrett merged 1 commit into
mainfrom
fix/manifest-refresh-after-743
Aug 17, 2026
Merged

fix(build): refresh the dependency manifest after #743#750
mparrett merged 1 commit into
mainfrom
fix/manifest-refresh-after-743

Conversation

@mparrett

Copy link
Copy Markdown
Collaborator

main is red at dd1d024, the same failure shape as #749 fixed for #733:

pkg/rt/core_compiled.lgb
pkg/rt/core_go_lowered/
pkg/rt/zz_primitives_generated.go
ERROR: dependency manifest stale or check errored — run 'make generate'.

#743 edits pkg/rt/keysource.go, keysource_queued.go, term.go and term_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

  • Reproduced at dd1d024 in a clean worktree.
  • make check-generated passes 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 generate when rebased, and none should be merged on checks that predate #641 landing.

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.
@mparrett
mparrett requested a review from nnunley August 17, 2026 01:14
@mparrett

Copy link
Copy Markdown
Collaborator Author

@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: pkg/rt/keysource.go, keysource_queued.go, term.go and term_plan9.go. I had already worked out that it was in that category and merged it anyway on the strength of an APPROVED badge and green checks that predated #641. That is my error, not a problem with #743 — it is a good change and it landed clean.

make generate only; no generated output content moves. All 14 checks green.

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 main green again.

@mparrett
mparrett merged commit a759f86 into main Aug 17, 2026
19 checks passed
@mparrett
mparrett deleted the fix/manifest-refresh-after-743 branch August 17, 2026 19:35
mparrett added a commit that referenced this pull request Aug 20, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants