-
Notifications
You must be signed in to change notification settings - Fork 0
Prove basis-bound validated patch application #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
b0a796d
test: require basis-bound patch witness
flyingrobots 2d03db5
test: bind patch refusal boundaries
flyingrobots 4aeb1b8
feat: prove basis-bound patch application
flyingrobots 2b66446
docs: record validated patch witness
flyingrobots 40c6507
docs: note basis-bound patch application
flyingrobots b03318f
test: seal patch proposal authority
flyingrobots c92989d
fix: seal patch host authority
flyingrobots fd21e84
docs: define patch host authority
flyingrobots 48e82a0
test: require patch settlement bindings
flyingrobots 1619b1b
fix: expose patch settlement bindings
flyingrobots 4c16dcf
docs: define patch settlement evidence
flyingrobots d8fcafd
docs: scope patch observation input
flyingrobots e99a922
test: harden patch consumer witness
flyingrobots 5c977c3
test: require resolved schema identities and chained writer epochs
flyingrobots c6ec296
fix: bind external requests to vendored schema resources
flyingrobots 61f41f6
fix: acquire fresh writer epochs from the producer
flyingrobots 8f4e30e
docs: record resolved schema identities and epoch fencing
flyingrobots 710623f
Fix: bind each schema slot to its vendored artifact identity
flyingrobots 36f9196
Fix: require a lowercase hexadecimal resource identity
flyingrobots 8e1a143
Fix: detect sentinel identities structurally
flyingrobots 179e1d5
Fix: share and cover the writer-epoch assertions
flyingrobots da4bfb4
Fix: read each slot's own digest within its declaration
flyingrobots 9d176c0
Fix: compare the predecessor commit digest with the actual commit
flyingrobots 433202c
Fix: refuse an uncarryable replacement for a stated reason
flyingrobots ae76db0
Docs: correct a duplicated list conjunction
flyingrobots f56bcf8
Fix: reject whitespace embedded in an identity sidecar
flyingrobots e2dc13d
Fix: require the read-only epoch field to be present
flyingrobots 4038663
Fix: require numeric writer-epoch start LSNs
flyingrobots 141a8a9
Fix: prove the epoch ledger plateaus instead of capping its size
flyingrobots 83def9f
Docs: record the uniform-digest trade-off in the sentinel check
flyingrobots 18e3a1c
Fix: reject trailing content after an identity sidecar
flyingrobots 751c7d7
Fix: exercise the unproven refusal branches
flyingrobots a41be74
Docs: attribute the replacement budget to the producer
flyingrobots 2d3a174
Fix: validate the sidecar terminator and stop at a new coordinate
flyingrobots b5f66eb
Fix: require every writer-epoch field to be present
flyingrobots 9b29c19
Fix: report an oversized observation as its own refusal
flyingrobots 9b77176
Fix: close four acceptance gaps found in round five
flyingrobots f74e3fb
Fix: bind the remaining self-consistent evidence to witnessed bytes
flyingrobots 1c7cf27
Fix: close the round-seven gaps
flyingrobots 52f50a7
Fix: cover the write entrypoints the epoch evidence missed
flyingrobots 1ec9b2f
Fix: bind the reconciled success evidence to the observed bytes
flyingrobots 978bf02
Fix: hold the worldline constant across every basis comparison
flyingrobots d4d1995
Remove the consumer-owned Edict parser and pin the producers
flyingrobots 7866614
ci: fail with a stated reason when the producer token is absent
flyingrobots 26fbb20
ci: drop the producer token; Edict and Echo are public
flyingrobots 1a87d3d
Fix: resolve producer symlink targets in the relative-path probe
flyingrobots e14abd3
Fix: carry large file bodies to jq through a file
flyingrobots 415cbec
Fix: require the pinned producer worktrees to be clean
flyingrobots File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,127 @@ | ||
| name: CI | ||
|
|
||
| on: | ||
| pull_request: | ||
| push: | ||
| branches: [main] | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| concurrency: | ||
| group: ci-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| jobs: | ||
| witnesses: | ||
| name: Witness gate | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Check out Hello Echo | ||
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
|
|
||
| - name: Read the pinned producer commits | ||
| id: producers | ||
| run: | | ||
| set -eu | ||
| test "$(jq -r '.version' producers.lock.json)" = 1 | ||
| { | ||
| printf 'edict_repo=%s\n' "$(jq -r '.edict.repository' producers.lock.json)" | ||
| printf 'edict_commit=%s\n' "$(jq -r '.edict.commit' producers.lock.json)" | ||
| printf 'echo_repo=%s\n' "$(jq -r '.echo.repository' producers.lock.json)" | ||
| printf 'echo_commit=%s\n' "$(jq -r '.echo.commit' producers.lock.json)" | ||
| } >>"$GITHUB_OUTPUT" | ||
|
|
||
| - name: Check out Edict at the pinned commit | ||
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
| with: | ||
| repository: ${{ steps.producers.outputs.edict_repo }} | ||
| ref: ${{ steps.producers.outputs.edict_commit }} | ||
| path: .producers/edict | ||
|
|
||
| - name: Check out Echo at the pinned commit | ||
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
| with: | ||
| repository: ${{ steps.producers.outputs.echo_repo }} | ||
| ref: ${{ steps.producers.outputs.echo_commit }} | ||
| path: .producers/echo | ||
|
|
||
| - name: Install the Rust toolchain | ||
| run: | | ||
| set -eu | ||
| rustup toolchain install stable --profile minimal \ | ||
| --component rustfmt --component clippy | ||
| rustup default stable | ||
|
|
||
| - name: Install witness tools | ||
| run: | | ||
| set -eu | ||
| sudo apt-get update | ||
| sudo apt-get install --yes --no-install-recommends b3sum xxd | ||
|
|
||
| - name: Cache cargo | ||
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | ||
| with: | ||
| path: | | ||
| ~/.cargo/registry | ||
| ~/.cargo/git | ||
| .build | ||
| key: cargo-${{ runner.os }}-${{ steps.producers.outputs.edict_commit }}-${{ steps.producers.outputs.echo_commit }} | ||
| restore-keys: cargo-${{ runner.os }}- | ||
|
|
||
| - name: Check shell syntax | ||
| run: | | ||
| set -eu | ||
| for script in tests/*.sh tests/lib/*.sh; do | ||
| test -e "$script" || continue | ||
| sh -n "$script" | ||
| done | ||
|
|
||
| - name: Verify the producer lock | ||
| env: | ||
| EDICT_REPO: .producers/edict | ||
| ECHO_REPO: .producers/echo | ||
| run: ./tests/producer-lock.sh | ||
|
|
||
| # Every witness builds what it needs, so the build boundaries are covered | ||
| # by the suites that invoke them. | ||
| - name: Run the pure runtime witness | ||
| env: | ||
| EDICT_REPO: .producers/edict | ||
| ECHO_REPO: .producers/echo | ||
| run: ./tests/runtime.sh | ||
|
|
||
| - name: Run the workspace observation witness | ||
| env: | ||
| EDICT_REPO: .producers/edict | ||
| ECHO_REPO: .producers/echo | ||
| run: ./tests/effect-runtime.sh | ||
|
|
||
| - name: Run the validated patch witness | ||
| env: | ||
| EDICT_REPO: .producers/edict | ||
| ECHO_REPO: .producers/echo | ||
| run: ./tests/patch-runtime.sh | ||
|
|
||
| - name: Run the stale-output witness | ||
| env: | ||
| EDICT_REPO: .producers/edict | ||
| ECHO_REPO: .producers/echo | ||
| run: ./tests/build-cleans-output.sh | ||
|
|
||
| - name: Run the hermetic assertion tests | ||
| run: ./tests/writer-epoch-assertions.sh | ||
|
|
||
| - name: Check host formatting | ||
| run: | | ||
| set -eu | ||
| cargo fmt --manifest-path .build/effect/host/Cargo.toml -- --check | ||
| cargo fmt --manifest-path .build/patch/host/Cargo.toml -- --check | ||
|
|
||
| - name: Lint the generated hosts | ||
| run: | | ||
| set -eu | ||
| cargo clippy --manifest-path .build/effect/host/Cargo.toml \ | ||
| --target-dir .build/effect/host-target --all-targets -- -D warnings | ||
| cargo clippy --manifest-path .build/patch/host/Cargo.toml \ | ||
| --target-dir .build/patch/host-target --all-targets -- -D warnings |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,4 @@ | ||
| /.build/ | ||
|
|
||
| # Producer checkouts materialised by CI. | ||
| .producers/ |
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.