Skip to content

ci: this repo's own emitter job could not pass at any commit - #18

Merged
chris-dare-dev merged 1 commit into
mainfrom
agent/fix-mfc-self-ci-commit-binding
Aug 19, 2026
Merged

chris-dare-dev merged 1 commit into
mainfrom
agent/fix-mfc-self-ci-commit-binding

Conversation

@chris-dare-dev

Copy link
Copy Markdown
Owner

main has been red since 21e3b442 (2026-08-19 02:56). Every commit since — f32a41b, 5acddfc — failed the emitter job for the same reason, and it was not caused by any of them. I merged two PRs onto that red main without checking, which is how it went unnoticed for the day.

Why it cannot pass

#628's commit binding refuses a bundle whose emission was produced at one commit and whose environment describes another. It is right to — that pairing attests commit B's subject with commit A's declaration content, and every other rule stays green while it happens.

This job hits it structurally:

  • the emission is live, generated from the checkout one step earlier
  • the environment is a fixture, pinned to bridgeland-stab-lean's f166a3d

They can never agree. The job became unpassable at every commit the moment the binding landed — not flaky, not commit-specific, simply impossible.

Why re-point the fixture rather than weaken the check

This pairing was never a trust record, and the README says so already:

this repo's own CI cannot produce a real environment record for itself, and its use of the fixture is a test of the emitter rather than a trust record

A real record is not available either: mfc env needs the contract package in a lake manifest, and this package deliberately has no dependencies at all.

So the emitter job copies the fixture, sets root_package.rev to GITHUB_SHA, and bundles against that. tag is nulled in the same copy — leaving the fixture's v0.1.0 would be a lie in the other direction, since this checkout is not that release and seal reads tag straight into subject.digest.gitTag.

The binding keeps full strength everywhere it is a trust claim: a topic repo, where both artifacts are real, and the contract job's fixtures, which pair fixture with fixture. Only this one job — the one pairing live with fixture — opts out, and it explains itself in the workflow rather than behind a flag that the next caller to hit the error would reach for.

Verified

Emission regenerated at HEAD, fixture rev re-pointed: mfc bundle writes 285 declarations and validates.

Unblocks #17, which is failing on this and nothing else.

main has been red since 21e3b44. Every commit since -- f32a41b, 5acddfc --
failed the `emitter` job for the same reason, and it was not any of them.

#628's commit binding refuses a bundle whose emission was produced at one
commit and whose environment describes another. It is right to: that pairing
attests commit B's subject with commit A's declaration content, and every other
rule stays green while it happens.

This job hits it structurally. The emission is LIVE, generated from the
checkout one step earlier. The environment is a FIXTURE pinned to
bridgeland-stab-lean's f166a3d. They can never agree, so the job became
unpassable at every commit the moment the binding landed -- not flaky, not
commit-specific, simply impossible.

Re-pointing the fixture's rev at the checkout is the repair rather than
weakening the check, because this pairing was never a trust record. README
already says so: "this repo's own CI cannot produce a real environment record
for itself, and its use of the fixture is a test of the emitter rather than a
trust record." A real record is not available either -- `mfc env` needs the
contract package in a lake manifest, and this package deliberately has no
dependencies at all.

`tag` is nulled in the same copy. Leaving the fixture's `v0.1.0` would be a lie
in the other direction: this checkout is not that release, and `seal` reads
`tag` straight into subject.digest.gitTag.

The binding keeps full strength everywhere it is a trust claim -- a topic repo,
where both artifacts are real, and the contract job's fixtures, which pair
fixture with fixture. Only this one job, which pairs live with fixture, opts
out, and it says why in twenty lines rather than a flag.

Verified locally: with the emission regenerated at HEAD and the fixture rev
re-pointed, `mfc bundle` writes 285 declarations and validates.
@chris-dare-dev
chris-dare-dev merged commit 365b532 into main Aug 19, 2026
5 checks passed
@chris-dare-dev
chris-dare-dev deleted the agent/fix-mfc-self-ci-commit-binding branch August 22, 2026 15:05
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