Skip to content

test(cli): run the promotion condition for ledger proof, and record what it says - #526

Merged
ion-alpha-dev merged 3 commits into
mainfrom
docs/ledger-proof-promotion
Aug 14, 2026
Merged

test(cli): run the promotion condition for ledger proof, and record what it says#526
ion-alpha-dev merged 3 commits into
mainfrom
docs/ledger-proof-promotion

Conversation

@ion-alpha-dev

@ion-alpha-dev ion-alpha-dev commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

What

Runs the promotion condition that RequireLedgerProof has 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.

Platform Sandbox containment The planned item
windows-latest kernel-confined proven by its executed check
macos-latest kernel-confined proven by its executed check
ubuntu-latest process-jail unproven: containment_gate: containment_insufficient

Why

RequireLedgerProof is the register's one staged row. 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 the staged verdict 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-proof as 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.

@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ion-alpha-dev
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
ion-alpha-dev force-pushed the docs/ledger-proof-promotion branch from 2181adb to d9e1355 Compare August 11, 2026 16:28
@ion-alpha-dev
ion-alpha-dev merged commit f856e01 into main Aug 14, 2026
28 checks passed
@ion-alpha-dev
ion-alpha-dev deleted the docs/ledger-proof-promotion branch August 14, 2026 17:48
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant