Skip to content

Retain observed execution footprints (first part of #716) - #844

Merged
flyingrobots merged 6 commits into
mainfrom
feat/execution-footprint-evidence
Oct 14, 2026
Merged

flyingrobots merged 6 commits into
mainfrom
feat/execution-footprint-evidence

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Ports the evidence foundation of draft PR #716 onto current main, per the owner direction (2026-10-13) to split #716 for re-integration.

What it adds

  • ActualFootprint records the graph resources an execution actually touched and compares them with the declared Footprint. ActualFootprintPosture states what a record may claim.
  • ExecutionGraphView is the executor-only capability that records each read before the declared-footprint guard applies, so an unwind cannot erase the access that caused it.
  • RuleExecutor chooses the execution ABI per rule: Observed for native rules, Legacy for frozen compatibility callbacks such as provider-v1, which yield UnavailableLegacyExecutor evidence.
  • ExecutionFootprintEvidence, keyed by canonical execution sequence, is kept per worldline (last_execution_footprints) and carried through worker merges and worldline checkpoints. ExecItem takes that sequence explicitly.
  • The branch's tests for the recorder, worker invariance, checkpoints and the differential write check.

This is the trusted footprint source that site-scoped settlement (#798) needs.

Adapted to main

  • WorldlineStateParts and the rollback copy carry the new field.
  • One host test fixture that assigns a GraphView executor is wrapped as RuleExecutor::legacy, keeping its behaviour.
  • New sequence arguments in tests use checked conversions.
  • Two conflicts kept main, which already had the change in fuller form: the domain-separated snapshot root and a test lint allowance.

Not included, and why

Part of #716 Where it goes
The admission proposal page Moved to #842
Writer-lease release and barren-epoch fixes Already on main
The 3,000-line trusted_runtime_host.rs change On inspection it only moves the inline test module; that relocation belongs with #821
required-features for feature-gated test targets A separate improvement
docs/topics/FalsificationWitnesses.md (1,792 lines) Needs review against the knowledge model before it lands

So there is no substantive second, host-side pull request. Once this merges I'll propose closing #716.

Evidence (guarded container, after merging current main)

  • warp-core: 1,484 tests with default features, 1,824 with the runtime features; 843 with delta_validate before the merge.
  • Rest of the workspace: 990 tests; warp-wasm engine kernel: 55.
  • Clippy on all targets in every configuration CI uses, and the library with missing_docs; rustdoc; cargo fmt --check; both ban scripts; licence headers.

Refs #716.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added recording of actual graph reads and writes during rule execution, with retained footprint evidence for completed and aborted attempts.
    • Evidence now has deterministic ordering across worker counts and indicates whether read data is complete and authoritative.
    • Rules can use an observed execution interface to track graph access.
  • Tests
    • Added coverage for footprint accuracy, evidence retention, ordering, and behavior across execution modes.

flyingrobots and others added 2 commits October 13, 2026 20:54
Ports the evidence foundation of draft PR #716 onto current main, per the
owner direction to split that PR for re-integration.

- ActualFootprint records the graph resources an execution touched and
  compares them with the declared Footprint; ActualFootprintPosture states
  what a record may claim.
- ExecutionGraphView is the executor-only capability that records reads
  before the declared-footprint guard applies, so an unwind cannot erase the
  access that caused it.
- RuleExecutor chooses the execution ABI per rule: Observed for native rules,
  Legacy for frozen compatibility callbacks such as provider-v1, which
  produce UnavailableLegacyExecutor evidence.
- ExecutionFootprintEvidence keyed by canonical execution sequence is kept
  per worldline (last_execution_footprints) and carried through worker
  merges and worldline checkpoints. ExecItem takes that sequence explicitly.
- The branch tests for the recorder, worker invariance, checkpoints and the
  differential write check come with it.

Adapted to main:
- WorldlineStateParts and the rollback copy carry the new field.
- One host test fixture that assigns a GraphView executor is wrapped as
  RuleExecutor::legacy, keeping its behaviour.
- New sequence arguments in tests use checked conversions.
- Two conflicts kept main, which already had the change in fuller form: the
  domain-separated snapshot root and a test lint allowance.

Not included, and why:
- The admission proposal: moved to #842.
- Writer-lease release and barren-epoch fixes: already on main.
- The trusted_runtime_host.rs change: on inspection it only moves the inline
  test module, a relocation that belongs with #821.
- required-features for feature-gated test targets: a separate improvement.

Refs #716.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T04:28:39.170802Z d70c0bc New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Repository: flyingrobots/echo/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 2f645111-16cc-4f1d-ba97-a2ec6e99680c
📥 Commits

Reviewing files that changed from the base of the PR and between 861c418 and d70c0bc.

📒 Files selected for processing: 44
  • CHANGELOG.md
  • crates/echo-dind-tests/src/rules.rs
  • crates/echo-dry-tests/src/demo_rules.rs
  • crates/echo-dry-tests/src/rules.rs
  • crates/echo-wesley-gen/src/main.rs
  • crates/echo-wesley-gen/tests/generation.rs
  • crates/warp-benches/benches/parallel_baseline.rs
  • crates/warp-benches/benches/scheduler_drain.rs
  • crates/warp-cli/tests/support/runtime_wal_fixture.rs
  • crates/warp-core/src/actual_footprint.rs
  • crates/warp-core/src/attachment.rs
  • crates/warp-core/src/cmd.rs
  • crates/warp-core/src/contract_host.rs
  • crates/warp-core/src/coordinator.rs
  • crates/warp-core/src/engine_impl.rs
  • crates/warp-core/src/execution_evidence.rs
  • crates/warp-core/src/execution_graph_view.rs
  • crates/warp-core/src/footprint_guard.rs
  • crates/warp-core/src/graph_view.rs
  • crates/warp-core/src/inbox.rs
  • crates/warp-core/src/lib.rs
  • crates/warp-core/src/parallel/exec.rs
  • crates/warp-core/src/parallel/mod.rs
  • crates/warp-core/src/parallel/shard.rs
  • crates/warp-core/src/provider_contract.rs
  • crates/warp-core/src/rule.rs
  • crates/warp-core/src/tick_delta.rs
  • crates/warp-core/src/worldline_state.rs
  • crates/warp-core/tests/common/mod.rs
  • crates/warp-core/tests/dpo_concurrency_litmus.rs
  • crates/warp-core/tests/duplicate_rule_registration_tests.rs
  • crates/warp-core/tests/external_consumer_contract_fixture_tests.rs
  • crates/warp-core/tests/installed_contract_intent_pipeline_tests.rs
  • crates/warp-core/tests/installed_contract_registry_tests.rs
  • crates/warp-core/tests/parallel_engine_integration_multiwarp.rs
  • crates/warp-core/tests/parallel_engine_worker_invariance.rs
  • crates/warp-core/tests/parallel_footprints.rs
  • crates/warp-core/tests/parallel_parallel_exec.rs
  • crates/warp-core/tests/parallel_stress_multiwarp.rs
  • crates/warp-core/tests/provider_contract_admission_tests.rs
  • crates/warp-core/tests/slice_theorem_proof.rs
  • crates/warp-core/tests/tick_receipt_tests.rs
  • crates/warp-core/tests/trusted_runtime_host_loop_tests.rs
  • xtask/src/runtime_counter_diagnostic.rs
 _________________________________
< Please hold while I ignore you. >
 ---------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6fbddddad0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/warp-core/src/engine_impl.rs Outdated
Comment thread crates/warp-core/src/execution_evidence.rs
Comment thread crates/warp-core/src/parallel/exec.rs
Comment thread crates/warp-core/src/execution_evidence.rs
Comment thread crates/warp-core/src/worldline_state.rs
…re the transcript

- Engine::last_execution_footprints, and the copy in worldline state, now hold
  only evidence from an execution whose worker changes merged. An attempt that
  unwinds or fails publishes to last_aborted_execution_footprints instead: a
  failure artifact, cleared at the next execution, never part of worldline
  state, checkpoints or history. The access that caused an unwind is still
  inspectable, which is the point of recording reads before the guard.
- The retained transcript is held behind shared ownership, so a rollback
  marker or checkpoint no longer deep-copies the previous execution records.
- execution_evidence.rs states what a record does not claim yet: it is not
  bound to its commit, does not carry the declared footprint, and reports
  UnavailableBuildProfile without enforcement. Those belong to the admission
  design in #842.

Found by review of #844.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bd4672bdbe

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/warp-core/src/engine_impl.rs Outdated
flyingrobots and others added 2 commits October 13, 2026 21:23
An operation can satisfy its declared footprint and still fail when the
merged patch is applied, for example a DeleteNode for a node that does not
exist. Evidence was promoted to retained right after the merge, so such a
tick left retained evidence although it sealed nothing.

Evidence now waits in the aborted slot through the merge and the patch
application, and commit promotes it only after the snapshot, receipt and
history entry exist. A test deletes a missing node and checks that nothing
is retained and the attempt is in the aborted record.

Found by review of #844.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@flyingrobots
flyingrobots merged commit 67d0aa7 into main Oct 14, 2026
43 of 44 checks passed
@flyingrobots
flyingrobots deleted the feat/execution-footprint-evidence branch October 14, 2026 04:32
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