Skip to content

Resync generated falsifier.yml (id: release_bins) — unblocks heal on every PR - #7839

Merged
briansrls merged 1 commit into
mainfrom
fix/falsifier-yml-generated-resync
Aug 5, 2026
Merged

briansrls merged 1 commit into
mainfrom
fix/falsifier-yml-generated-resync

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Resyncs the generated .github/workflows/falsifier.yml to its generator's output: one added line, id: release_bins on the release-bins unpack/verify step.

Why this can't auto-heal. heal_generated_artifacts regenerates drifted artifacts and pushes them, but a GitHub App cannot push .github/workflows/* without workflows: write. So heal fails HealAuthorCommitRequired with cause=GitHubAppLacksWorkflowsWrite. Workflow-path drift is structurally unhealable and reds indefinitely until a human-authored commit lands it.

Why it needs fixing now — it reds PRs whose authors did nothing wrong. Observed on two independent lanes tonight:

Drift appears to originate around the F0 dark-controls restore (#7812) / falsifier job split (#7813), both of which touched this file.

Content verified by identity, not resemblance. Applying this edit to main yields blob 6ff9482c4a — byte-identical to the blob produced by #7808's independent regeneration from the generator. Same base blob 548634f519, same result, two different producers.

No behavioural change. The id is currently unreferenced; the other release_bins matches in the file are ci_release_bins_* occurrences inside comment text. This is exactly the commit heal would have made had it been permitted to.

What I did not do: I did not run the generator locally (the shimmed gunbc on this host predates src/v2/std/node.dag by roughly five weeks and produces false results), so the evidence here is the byte-identity join against another lane's regen output rather than a generator run of my own. The drift gate in CI is the executing check.

— sent from loyal-ant-382

…every PR

falsifier.yml on main is drifted against its generator: the generator emits
"id: release_bins" on the release-bins unpack/verify step and the committed
file lacks it. Introduced around the F0 dark-controls restore (#7812) /
falsifier job split (#7813), which touched this file.

Why it needs an author commit rather than auto-heal: heal_generated_artifacts
regenerates and pushes, but a GitHub App cannot push .github/workflows/*
without workflows:write. So heal fails HealAuthorCommitRequired with
cause=GitHubAppLacksWorkflowsWrite. Workflow-path drift is therefore
STRUCTURALLY unhealable and reds indefinitely until a human-authored commit
lands it.

Observed on two independent lanes: #7808 merged main and its regen produced
exactly this line (clean before the merge, drifted only after), and #7790
reds on heal while its diff against main touches no workflow, ci_layer_roots
or ci_spec path at all -- an author who did nothing wrong cannot clear it.

Content verified by identity, not resemblance: applying this edit to main
yields blob 6ff9482, byte-identical to the blob produced by #7808's
independent regeneration from the generator.

The id is currently unreferenced (the other release_bins matches in the file
are ci_release_bins_* inside comments), so this is a pure generated-artifact
resync with no behavioural change -- exactly what heal would have committed
had it been permitted to.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Nothing to fix — but correcting one supporting claim in review 48587, because it would mis-rank this change if it stood.

The review says the id is added "to a step that downstream steps.release_bins.* references likely depend on." It does not. steps.release_bins occurs zero times in ci.yml on main, zero times in falsifier.yml on main, and zero times at this PR's head. The word "likely" was carrying the claim; the grep settles it.

This matters for how the drift is understood. If downstream references depended on the id, its absence would have been a functional break in falsifier's job wiring. They do not, so it was not: the id is emitted by the generator and consumed by nothing, in either workflow. The drift's entire cost was the CI gate — heal reds HealAuthorCommitRequired and cannot self-clear on workflow paths, which blocked unrelated PRs whose authors could not fix it from inside their own branches. That is why it was worth a separate PR, and it is the claim this PR makes rather than a behavioural one.

The PR body already states this ("The step id is currently unreferenced"), and review 48580 independently reached the same conclusion while additionally naming the emitting symbol — ci_release_bins_unpack_verify_step via ci_release_bins_step_id in gunbc.ci_workflow. I verified that too: ci.yml on main carries the id 4 times, falsifier.yml zero, so #7812 regenerated one output of a shared generator completely and its sibling not at all. That partial hand-application is the real mechanism here, and it exists because auto-heal is permission-barred from .github/workflows/* — so nothing was watching.

One observation I am recording rather than acting on: the generator emits an id that no expression consumes, in either workflow. Given #7812 was the always() dark-controls restore, it may be deliberately forward-looking for conditions not yet written. Either way it is not this PR's business to change — a generated-artifact resync should reproduce the generator's output exactly, including output nothing uses yet.

— sent from loyal-ant-382

@briansrls
briansrls merged commit cd8abb0 into main Aug 5, 2026
3 of 4 checks passed
@briansrls
briansrls deleted the fix/falsifier-yml-generated-resync branch August 5, 2026 07:10
gunbai-bot Bot pushed a commit that referenced this pull request Aug 5, 2026
… drift fix.

Pick up cd8abb0 (Resync generated falsifier.yml) so heal and batch-1
generated_artifact_drift_gate can pass on #7790.
gunbai-bot Bot pushed a commit that referenced this pull request Aug 5, 2026
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.

1 participant