Skip to content

Host bounded workspace observations - #706

Merged
flyingrobots merged 9 commits into
mainfrom
task/705-host-workspace-observation
Jul 30, 2026
Merged

Host bounded workspace observations#706
flyingrobots merged 9 commits into
mainfrom
task/705-host-workspace-observation

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Admit compiler-authored workspace observation requests through durable, capability-rooted external-action settlement. Closes #705.

Summary by CodeRabbit

  • New Features

    • Added support for securely admitting and processing compiler-produced external action requests.
    • Introduced bounded, read-only workspace observations with authorized path access, strict validation, deterministic outcomes, and replay without reopening the workspace.
    • Supports explicit unknown outcomes and durable settlement recording.
  • Documentation

    • Added comprehensive External Actions guidance and updated architecture, runtime authority, WAL, and release documentation.
  • Tests

    • Added extensive coverage for validation, security boundaries, filesystem behavior, settlement, recovery, concurrency, and determinism.

@flyingrobots

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@flyingrobots

Copy link
Copy Markdown
Owner Author

@codex please review

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@flyingrobots, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 22 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 74ac276c-b834-4d53-b71a-5911f1ec49fb

📥 Commits

Reviewing files that changed from the base of the PR and between 3e544b1 and 6a132e7.

⛔ Files ignored due to path filters (1)
  • tests/edict-provider-host-v1/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (9)
  • .ban-nondeterminism-allowlist
  • CHANGELOG.md
  • crates/warp-core/Cargo.toml
  • crates/warp-core/src/external_action_adapter.rs
  • crates/warp-core/src/lib.rs
  • crates/warp-core/tests/bounded_workspace_observation_tests.rs
  • docs/adr/0026-durable-external-action-settlement.md
  • docs/architecture/application-contract-hosting.md
  • docs/topics/ExternalActions.md
📝 Walkthrough

Walkthrough

Echo now admits compiler-produced external-action IR and runs bounded, capability-rooted workspace observations with strict path, basis, budget, settlement, recovery, and replay validation. Supporting fixtures, tests, documentation, dependencies, and generated digests were updated.

Changes

Bounded workspace external action

Layer / File(s) Summary
Compiler artifact admission and identity
crates/warp-core/src/external_action_adapter.rs, crates/warp-core/src/lib.rs, crates/warp-core/tests/fixtures/external_action/*, crates/warp-core/tests/bounded_workspace_observation_tests.rs
Canonical Core and Target IR artifacts are validated, constrained inputs are evaluated, and verified external-action requests with deterministic identities are constructed.
Workspace observation and settlement
crates/warp-core/src/external_action_adapter.rs, crates/warp-core/tests/bounded_workspace_observation_tests.rs, crates/warp-core/Cargo.toml, crates/echo-wesley-gen/assets/v1/repository/Cargo.lock.source
The adapter validates grants and relative paths, reads permitted regular files, enforces symlink and byte limits, validates settlement evidence, supports OutcomeUnknown, and durably records results.
Protocol documentation and evidence
docs/adr/0026-durable-external-action-settlement.md, docs/architecture/application-contract-hosting.md, docs/topics/*, docs/README.md
Documentation describes the external-action lifecycle, bounded workspace profile, settlement evidence, runtime authority, WAL replay, and linked topic indexes.
Package metadata and generated digests
CHANGELOG.md, crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json, schemas/edict-provider/package/v1/provider-manifest.echo.json, crates/echo-wesley-gen/tests/provider_package*.rs
Release notes, provider manifest digests, package hash expectations, and generated artifact metadata are synchronized.
Estimated code review effort: 4 (Complex) ~60 minutes

Possibly related issues

  • flyingrobots/hello-echo#10 — Covers consumption of the bounded workspace observation and durable settlement flow implemented here.
  • flyingrobots/graft#228 — Relates to request admission, path and basis validation, settlement, recovery, and replay.
  • flyingrobots/edict#172 — Relates to compiler-owned external-action request admission and deterministic request construction.

Possibly related PRs

  • flyingrobots/echo#704 — Provides the durable external-action protocol used by this adapter for request, claim, settlement, and replay.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 44.19% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the main change: adding bounded workspace observations as a host capability.
Linked Issues check ✅ Passed The changes implement the external-action workspace observation host, WAL-backed settlement flow, path/budget guards, and replay semantics requested by #705.
Out of Scope Changes check ✅ Passed No clear out-of-scope code changes are shown; the modified docs, tests, fixtures, and dependency updates all support the bounded observation feature.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Fix failing CI checks
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task/705-host-workspace-observation

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/warp-core/src/external_action_adapter.rs`:
- Around line 623-638: In the candidate construction flow, compute schema
admission evidence from result before constructing
ExternalActionSettlementCandidateV1, then move result directly into new instead
of cloning it. Update the ordering around schema_admission_evidence while
preserving all existing fields and budget validation.
- Around line 566-592: Remove the unused detail parameter from
refused_candidate_with_evidence and delete the let _ = detail statement. Update
the stale-basis call site and any other callers to match the new signature,
while preserving detail folding in refused_candidate before it delegates.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2cee58ac-7427-44cc-973f-f08c9bc32bdb

📥 Commits

Reviewing files that changed from the base of the PR and between 5413f55 and 3e544b1.

⛔ Files ignored due to path filters (7)
  • Cargo.lock is excluded by !**/*.lock
  • crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json is excluded by !**/generated/**
  • crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json is excluded by !**/generated/**
  • schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json is excluded by !**/generated/**
  • schemas/edict-provider/generated/v1/evidence/review.provider-generation.json is excluded by !**/generated/**
  • schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json is excluded by !**/generated/**
  • schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json is excluded by !**/generated/**
📒 Files selected for processing (22)
  • CHANGELOG.md
  • crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json
  • crates/echo-wesley-gen/assets/v1/repository/Cargo.lock.source
  • crates/echo-wesley-gen/tests/provider_package.rs
  • crates/echo-wesley-gen/tests/provider_package_corpus.rs
  • crates/warp-core/Cargo.toml
  • crates/warp-core/src/external_action_adapter.rs
  • crates/warp-core/src/lib.rs
  • crates/warp-core/tests/bounded_workspace_observation_tests.rs
  • crates/warp-core/tests/fixtures/external_action/SOURCE.md
  • crates/warp-core/tests/fixtures/external_action/observe-workspace.core.cbor
  • crates/warp-core/tests/fixtures/external_action/observe-workspace.core.sha256
  • crates/warp-core/tests/fixtures/external_action/observe-workspace.target-ir.cbor
  • crates/warp-core/tests/fixtures/external_action/observe-workspace.target-ir.sha256
  • docs/README.md
  • docs/adr/0026-durable-external-action-settlement.md
  • docs/architecture/application-contract-hosting.md
  • docs/topics/ExternalActions.md
  • docs/topics/README.md
  • docs/topics/RuntimeAuthority.md
  • docs/topics/WAL.md
  • schemas/edict-provider/package/v1/provider-manifest.echo.json

Comment thread crates/warp-core/src/external_action_adapter.rs
Comment thread crates/warp-core/src/external_action_adapter.rs

@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: 3e544b1157

ℹ️ 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/external_action_adapter.rs
Comment thread crates/warp-core/src/external_action_adapter.rs Outdated
Comment thread crates/warp-core/src/external_action_adapter.rs Outdated
Comment thread crates/warp-core/src/external_action_adapter.rs Outdated
Comment thread crates/warp-core/src/external_action_adapter.rs
Comment thread crates/warp-core/src/external_action_adapter.rs
Comment thread crates/warp-core/src/external_action_adapter.rs Outdated
Comment thread crates/warp-core/src/external_action_adapter.rs
@flyingrobots

Copy link
Copy Markdown
Owner Author

Merge gate OPEN at 6a132e7.

  • CI: 40/40 checks passed; none pending or failing.
  • Review threads: 0 unresolved. All CodeRabbit and Codex findings were answered with validation evidence and resolved.
  • Local validation: 686 warp-core tests; 25 bounded-observation tests; 25 external-action protocol tests; strict clippy; WASM check; 162 hook tests; exact provider-host witness; markdown lint; diff check.
  • Authority boundary: production scan found zero Graft, Hello Echo, greeting, createGreeting, or AlreadyExists vocabulary matches.
  • Approval substitution: main is unprotected (branch-protection API returned 404), and this is a solo-maintained repository. Criteria 1-4 substitute for human approval. The REVIEW_REQUIRED display is non-enforcing metadata after completed bot review and zero unresolved threads.

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.

Host bounded workspace observation through external-action settlement

1 participant