Integrate RAVEL with the persistent MNCS Fabric controller - #12
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Moves RAVEL’s preferred live Fabric integration onto the current persistent-controller consumer boundary while preserving the existing local/direct-network backends for historical compatibility and negative-matrix reproduction.
What this adds
ravel.fabric_persistent.FabricPersistentBackendusingFabricClient.connect(...)rather than constructing/owning Fabric controllers or worker transports.ravel-fabric-persistent-config/0.1) containing only controller socket, client identity, and timeout.submit -> status -> resultexecution.work_idand interpret its final evidence after restart.ravel-fabric-observation/0.1references without copying Fabric authority into RAVEL.UNKNOWNon this path until Fabric exposes a Fabric-owned reconciliation result through the persistent public boundary rather than reimplementing reconciliation inside RAVEL.FabricLocalBackend/FabricNetworkBackendintact as compatibility/reference paths.Contract and authority boundaries
RAVEL remains a Fabric consumer:
PASS/FAIL/UNKNOWNremains execution evidence only; it does not become evaluator, selection, promotion, conformance, or custody authority.The persistent adapter also hashes RAVEL’s provider/partition/Forge labels into Fabric’s opaque SHA-256 provenance fields rather than treating those labels as Fabric policy authority.
Detached execution / restart behavior
submit_provider_parity()uses Fabric’s persistentsubmit_execution()API and records only the RAVEL-side provenance needed to recover the submission. A later process can use:load_submission(work_id)execution_status(work_id)collect_work_id(work_id)Fabric remains the source of truth for actual execution state.
Bundle compatibility
The existing RAVEL/MNCS validator execution-bundle builder and Fabric’s persistent bundle verifier implement the same EA-NEXT-002 contract (
0.1-experimental,mncs-execution-bundle-zip-0.1), so this path reuses the existing immutable MNCS bundle rather than introducing another package format.Tests and docs
Adds
tests/test_fabric_persistent.pycovering:pre_staged = NOT_REQUIRED), andUpdates:
README.mddocs/FABRIC_INTEGRATION.mdravel_versions/0.6/RAVEL_0_6_IMPLEMENTATION_STATUS.mdsrc/ravel/__init__.pyconfig/ravel-fabric-persistent.example.tomlValidation status
Static/API compatibility was reviewed against current
mncs-fabric0.2.0a30, including the persistent controller implementation ofexecution.dispatch,execution.submit,execution.status,execution.result, controller-owned bundle cache, and worker backend.The MNCS Control connector is not exposed to this chat session even when @mentioned, so I could not execute the live controller/fleet E2E from here. GitHub CI should exercise the repository unit/Rust/C suites on this PR. The remaining external validation is a live persistent-controller run against the enrolled Fedora/Windows fleet, including worker/controller restart and replay cases.
Follow-up after this PR
Once the live boundary is stable, port the same consumer contract to the canonical Rust implementation and prove Python/Rust parity before replacing the Python compatibility bridge. Do not move Fabric worker/trust responsibilities into Rust RAVEL during that migration.