Skip to content

feat(executor): execution spine — place → grant → verify → dispatch → receipt + sourceosctl CLI - #19

Merged
mdheller merged 1 commit into
mainfrom
feat/compute-executor
Aug 4, 2026
Merged

feat(executor): execution spine — place → grant → verify → dispatch → receipt + sourceosctl CLI#19
mdheller merged 1 commit into
mainfrom
feat/compute-executor

Conversation

@mdheller

@mdheller mdheller commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

What

Closes the loop from a governed decision plane to a platform that actually runs work. A workload dispatched from a low-mem box places under policy, mints + verifies a zero-trust Grant, and dispatches to whatever substrate the mesh offers — fail-closed, sealed.

sourceosctl run --command "python train.py" --gpu --sensitivity sensitive
→ ran on: hpc-slurm (trusted) via grant grant_… · dispatch: hpc-slurm · sealed receipt: sha256:…

tools/executor.py

  • LocalAdapter — real subprocess (--apply).
  • K8sAdapter — real Grant-labelled batch/v1 Job manifest; kubectl apply when a cluster is reachable, else emitted.
  • DescriptorAdapter — substrate-specific descriptor for hpc-slurm / wasm-edge / p2p-mesh / volunteer-boinc / blockchain-rlc.
  • execute() re-verifies the Grant at the node (fail-closed DispatchRefused on bad sig / wrong session / expired / effect-not-granted / unknown backend), dispatches, seals a receipt.
  • run_spine() — the one call: place → issue_grant → verify_grant → execute.

tools/sourceosctl.py — the developer front door

run (+--apply), mesh, place (dry), commons. DEV MODE (synthesized attestation + HMAC key) when SOURCEOS_SIGNING_KEY is unset — printed loudly; in production the Grant is signed by the Key Authority and attestation comes from the node TPM/TEE + cosign.

Governance holds end to end

Sensitive GPU workload → trusted HPC, never the bigger volunteer grid; only-untrusted-live → blocked, dispatched nowhere.

Tests

+10 executor (adapters, fail-closed edges, full spine) +5 CLI = 81 tools tests green; validate passes; live CLI smoke verified. Wired: validate REQUIRED, Makefile spine/run, compute-plane CapD links, docs/EXECUTION_SPINE.md.

…PATCH -> receipt

Closes the loop from governed decision plane to a platform that actually runs work.

tools/executor.py — turns a placement decision + a verified Grant into a real dispatch:
  - LocalAdapter: real subprocess (--apply).
  - K8sAdapter: real batch/v1 Job manifest, Grant-labelled; kubectl apply when a cluster
    is reachable, else emitted.
  - DescriptorAdapter: substrate-specific descriptor for hpc-slurm / wasm-edge / p2p-mesh /
    volunteer-boinc / blockchain-rlc, to hand that scheduler over a Grant-bound channel.
  - execute(): re-verifies the Grant at the node (fail-closed DispatchRefused on bad sig /
    wrong session / expired / effect-not-granted / unknown backend), then dispatches, then
    seals a receipt.
  - run_spine(): the one call — place -> issue_grant -> verify_grant -> execute.

tools/sourceosctl.py — the developer front door, one command from a low-mem box:
  `sourceosctl run --gpu --sensitivity sensitive --command "python train.py"` reads the live
  mesh, places under policy, mints+verifies a Grant, dispatches, prints where it ran + the
  sealed receipt. Also `mesh`, `place` (dry), `commons`. DEV MODE (synthesized attestation +
  HMAC key) when SOURCEOS_SIGNING_KEY is unset — says so loudly.

Governance holds end to end: a sensitive GPU workload lands on trusted HPC, never the bigger
volunteer grid; only-untrusted-live -> blocked, dispatched nowhere.

Tests: +10 executor (adapters, fail-closed, full spine) +5 CLI = 81 tools tests green.
Wired: validate REQUIRED, Makefile spine/run targets, compute-plane CapD links,
docs/EXECUTION_SPINE.md.
@mdheller
mdheller merged commit 0c9f636 into main Aug 4, 2026
1 check passed
@mdheller
mdheller deleted the feat/compute-executor branch August 4, 2026 03:54
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