Skip to content

Preserve typed executable-operation obstructions - #697

Merged
flyingrobots merged 16 commits into
mainfrom
task/696-preserve-typed-obstruction
Jul 28, 2026
Merged

Preserve typed executable-operation obstructions#697
flyingrobots merged 16 commits into
mainfrom
task/696-preserve-typed-obstruction

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Preserves lawpack-qualified obstruction coordinates from Edict Core through independent verification and scheduler outcomes. Refreshes checked provider artifacts and the real compiler/runtime witness.

Closes #696.

Summary by CodeRabbit

  • New Features

    • Executable-operation packages now preserve and report the exact typed obstruction coordinate declared by the package.
    • Duplicate-operation outcomes now identify specific obstruction types, such as causal.cell@1.AlreadyExists, instead of a generic mismatch.
  • Bug Fixes

    • Improved alias resolution during executable-operation lowering and verification, preventing application-local aliases from appearing in runtime results.
    • Runtime action outcomes are now recovered in deterministic order.
  • Documentation

    • Updated guides and architecture documentation to describe typed, lawpack-qualified obstruction reporting and alias resolution.

@flyingrobots

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@flyingrobots

Copy link
Copy Markdown
Owner Author

@codex please review

@coderabbitai

coderabbitai Bot commented Jul 28, 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 28, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

No new commits to review since the last review.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 43a8b260-abc0-46de-a2af-350a95fd802b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The executable-operation pipeline now preserves an authored obstruction coordinate from Core IR through package encoding, independent verification, admission, and duplicate reporting. Package schemas, fixtures, generated artifacts, digests, recovery ordering, and documentation were updated accordingly.

Changes

Typed obstruction identity

Layer / File(s) Summary
Package obstruction coordinate contract
crates/warp-core/src/echo_operation.rs, crates/echo-wesley-gen/src/provider_artifacts.rs, crates/warp-core/tests/*
ExecutableOperationPackageV1 and its canonical CBOR now require a nonempty obstruction_coordinate, with updated decoding, errors, schema, and fixtures.
Lowerer coordinate resolution
crates/echo-edict-provider-lowerer/src/executable_operation.rs, crates/echo-edict-provider-lowerer/tests/*
Lowering extracts the obstruction member from obstructionMap, resolves it through the lawpack alias, and emits the resolved coordinate.
Independent obstruction verification
crates/echo-edict-provider-verifier/src/executable_operation.rs, crates/echo-edict-provider-verifier/tests/*
Verification derives the expected obstruction coordinate and compares it in canonical package equality, including rejection of forged values.
Runtime reporting and recovery
xtask/src/run_edict_operation.rs, xtask/tests/*, crates/warp-core/src/trusted_runtime_host.rs
The runner reports the package-derived obstruction coordinate for duplicate outcomes, and recovered action outcomes are sorted by ingress ID.
Generated identities and documentation
crates/echo-wesley-gen/assets/*, schemas/*, xtask/src/provider_lowerer_component.rs, README.md, CHANGELOG.md, docs/adr/*, crates/*/README.md
Generated manifests, component digests, fixture hashes, embedded schema identities, and documentation reflect the updated package and provider artifacts.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

  • flyingrobots/echo#683: Introduced the executable-operation package and pipeline structures extended here with obstruction_coordinate.
  • flyingrobots/echo#695: Added the durable Edict-operation runner flow updated here to report package-derived duplicate obstructions.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Concise and specific; it matches the main change of preserving typed executable-operation obstructions.
Linked Issues check ✅ Passed The lowering, verification, admission, runner, fixtures, and regenerated artifacts all match #696's acceptance criteria.
Out of Scope Changes check ✅ Passed No clearly unrelated code changes appear; the edits stay within obstruction preservation, regeneration, tests, and docs.
Docstring Coverage ✅ Passed Docstring coverage is 81.82% which is sufficient. The required threshold is 80.00%.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task/696-preserve-typed-obstruction

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.

@flyingrobots
flyingrobots merged commit e9e201a into main Jul 28, 2026
40 checks passed
@flyingrobots
flyingrobots deleted the task/696-preserve-typed-obstruction branch July 28, 2026 22:53

@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: 35b64a525f

ℹ️ 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".

"intrinsic_profile_identity",
"obstruction_schema_identity",
"obstruction_interpretation_identity",
"obstruction_coordinate",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep v1 packages readable during WAL recovery

When a host upgrades with a WAL containing an installation written by the previous runtime, its embedded echo.operation-package/v1 bytes have no obstruction_coordinate; making that field mandatory in exact_text_map causes recover_installation_v1 to fail when it re-admits those bytes, preventing the durable host from recovering at all. Preserve the old v1 layout through a deterministic migration/default or introduce a versioned package format rather than invalidating already retained installation evidence.

AGENTS.md reference: AGENTS.md:L13-L18

Useful? React with 👍 / 👎.

Comment thread README.md
Comment on lines +190 to +192
lawpack obstruction coordinate resolved from the authored source-local import;
the scheduler reports that exact typed coordinate without interpreting
application vocabulary.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Describe the coordinate as package-bound, not scheduler-reported

For consumers of TrustedRuntimeHost::echo_operation_action_outcome_v1, an EchoOperationActionOutcomeV1::Obstructed value exposes only the generic obstruction kind and package/installation identities; the scheduler outcome has no obstruction-coordinate field or accessor. The xtask witness obtains the displayed coordinate separately by parsing the package and substituting it after observing PreconditionMismatch, so this current-state claim overstates the runtime API; either propagate the coordinate into the typed outcome or describe it as indirectly bound by the package.

AGENTS.md reference: AGENTS.md:L144-L150

Useful? React with 👍 / 👎.

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.

Preserve typed obstruction identity in executable operation packages

1 participant