test(cli): run the promotion condition for ledger proof, and record what it says - #526
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
ion-alpha-dev
marked this pull request as ready for review
August 11, 2026 15:52
RequireLedgerProof is the boundary register's one staged row, and its promotion condition was written to be checkable and then checked by nobody. A capability nobody is on the hook for is how default-off becomes permanent without anyone deciding it should, which is the failure the staged verdict exists to prevent. This runs the condition on every platform CI runs on: a planned goal whose item carries a check that exits 0, driven through the assembly the binary uses, with the verdict read off the goal the run leaves behind. The assertion is an implication rather than an outcome, because what the host can contain decides which answer is correct. An item's check is model-authored, so it is dispatched as semi-trusted work; where the sandbox can contain that, the check must execute and prove the item, and where it cannot, no item can be proven and the run must say so. What is never correct on either host is an item marked proven with no executed check behind it. Signed-off-by: Ion Alpha <contact@ionalpha.io>
…ured The condition is run rather than argued, and the answer is in the register: on macOS and Windows the sandbox is kernel-confined and the planned item was proven by its executed check; on the Ubuntu runner the sandbox is a process jail, the containment gate refuses the check before it runs, and no item can be proven there at all. The obstacle is named and it is not the loop. An item's check is model-authored, so it is dispatched as semi-trusted work, and GitHub's Ubuntu image forbids unprivileged user namespaces. Where the host can contain the work, the producer proved what it planned. So the condition itself was wrong and is rewritten. Asking for every platform CI runs on conflates two questions: whether the producer proves what it plans, and whether the host can run a model-authored command at all. The first is met. The second is not a property of this repository and no amount of waiting changes it. What is left is a decision rather than more evidence: condition the default on the host's containment, which a run already reports, or leave it off with --require-proof as the operator's switch. The row stays staged with the measurement behind it instead of a date, and the measurement re-runs on every platform on every CI run. Signed-off-by: Ion Alpha <contact@ionalpha.io>
ion-alpha-dev
force-pushed
the
docs/ledger-proof-promotion
branch
from
August 11, 2026 16:28
2181adb to
d9e1355
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Runs the promotion condition that
RequireLedgerProofhas been staged behind, on the three platforms CI runs on, and records the answer in the boundary register. The condition itself is rewritten, because the measurement says the original could never hold.windows-latestmacos-latestubuntu-latestcontainment_gate: containment_insufficientWhy
RequireLedgerProofis the register's onestagedrow. A staged row owes a switch and a promotion condition; it had both, and the condition was written to be checkable and then checked by nobody. A capability nobody is on the hook for is how default-off becomes permanent without anyone deciding it should, which is the failure thestagedverdict exists to prevent.The condition asked for the repository's own planned goals to prove every item they plan through an executed check, over the platforms CI runs on. Measured, that conflates two questions. Whether the producer proves what it plans is about this repository, and it is met: on both hosts that can contain semi-trusted work, the planned item came back proven by its executed check. Whether the host can run a model-authored command at all is not about this repository: an item's check is dispatched as semi-trusted work, GitHub's Ubuntu image forbids unprivileged user namespaces, so the sandbox falls back to a process jail and the containment gate refuses the check before it runs. No item can be proven on that host, and no amount of waiting changes it.
So the row stays
staged, now with a measurement and a named obstacle behind it rather than a date, and what is left is a decision rather than more evidence: condition the default on the host's containment, which a run already reports before it starts, or leave it off with--require-proofas the operator's switch.How to verify
go test ./cmd/flynn/ -run TestThePromotionConditionForLedgerProof.It plans a goal whose item carries a check that exits 0, drives it through the assembly the binary uses, and reads the verdict off the goal the run leaves behind. The three platform rows in the table above are that test's output from this PR's own CI run.
Notes for reviewers
The assertion is an implication rather than an outcome, because what the host can contain decides which answer is correct. Where the sandbox can contain the check, the item must come back proven; where it cannot, no item can be proven and the run has to record why rather than leaving the item silently unsettled. What is never correct on either host is an item marked proven with no executed check behind it, and that is the third branch.
Keeping the measurement as a test rather than a note is the point: the row cannot go stale without a red check, and if a runner image changes what it allows, the table is wrong the same day rather than whenever somebody next reads the file.
No behaviour changes here. The default is untouched.