Skip to content

Infernet temporal policies (liquid networks) as c0mpute workloads; v0.2.34 - #61

Merged
ralyodio merged 3 commits into
masterfrom
feat/infernet-temporal
Oct 26, 2026
Merged

ralyodio merged 3 commits into
masterfrom
feat/infernet-temporal

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Phase 2 of the Liquid Agent PRDs on the c0mpute side (DIP 0026). Infernet v0.1.66 (InfernetProtocol/infernet-protocol#60, released) does the actual execution. c0mpute only advertises it, dispatches it and carries the receipts. There is no new scheduler and no new marketplace plugin.

  • Opt-in worker: c0mpute infernet temporal serve [--train] [--model sha256:..] advertises only what infernet model capabilities reports: runtime version, CPU/CUDA/MPS, RAM buckets and the model hashes it serves.
  • Capability filtering: buyer requirements (GPU, minimum RAM, runtime version, model hash) become required_capabilities. A new per-workload OfferFilter validates temporal specs and stops a busy training worker from bidding, so each node runs one job at a time.
  • Training: c0mpute infernet temporal train runs one single-node job per family on the existing auction.
    • Workers refuse a job unless trusted_worker + upload_approved are set.
    • The CLI needs --yes after a preview. --worker restricts bids to an allowlist.
    • The dataset is served by a token-gated transfer server. Artifacts are verified against the receipt's model hash.
    • Retries and idempotency reuse are supported.
  • Inference: c0mpute infernet temporal predict --session opens a session on one worker and keeps it there.
    • Calls are encrypted end to end (X25519, HKDF, AES-256-GCM).
    • The worker answers only the peer that opened the session, and executes each call id exactly once.
  • plugins/infernet/module.toml lists the two workloads with min_version = 0.1.66.

Verified

  • cargo test -p c0mpute-core: 20 unit tests plus 2 e2e tests, all passing. The new loopback e2e uses a fake infernet that speaks the same CLI and JSON as the real one.
  • cargo test -p c0mpute-cli: 13 tests passing.
  • Run by hand on loopback with the real Infernet 0.1.66 CLI and the CfC/GRU runtime:
    • Remote train of CfC + GRU took 13.5 s, with artifacts hash-verified.
    • Then served the CfC model: session open, 4 predicts, a late replay rejected (E_SEQ_LATE), reset and close.

Not done: moving a session to another worker over the network (checkpoint transfer), and settlement wiring for these receipts.

🤖 Generated with Claude Code

…rnet.temporal.infer; v0.2.34

Workers opt in with `c0mpute infernet temporal serve [--train] [--model ...]`
and advertise only what `infernet model capabilities` reports (Infernet >=
0.1.66): runtime version, CPU/CUDA/MPS, RAM buckets, served model hashes.
Buyers turn requirements into required_capabilities; a new per-workload
OfferFilter validates temporal specs and keeps a training worker from
bidding while busy (one job per node).

- train: one single-node job per family over the existing auction. Spec
  carries a liquid-agent/v1 TrainJobV1; workers refuse unless
  privacy.mode=trusted_worker and upload_approved. Buyer serves the dataset
  from a token-gated transfer server, the worker runs `infernet model train
  --job`, uploads the artifacts, receipts with the model hash; the buyer
  verifies weights against the receipt. --worker allowlist (trusted workers),
  --yes consent after a preview, retries, idempotency reuse.
- infer: a session open is auctioned; the winner holds the session's hidden
  state in `infernet model serve --stdio`. Calls are X25519/HKDF/AES-GCM
  sealed, answered only for the opener's peer id, exactly-once by call id.
- c0mpute infernet temporal serve|train|predict|models; module.toml lists
  the workloads; DIP 0026.
- Tests: unit (spec validation, tag filtering, crypto, transfer server,
  family selection) and a loopback e2e with a fake infernet covering the
  allowlist, GPU filtering, receipt-verified training, sticky sessions, a
  forged peer refused and late replays. Also run by hand end to end with
  the real Infernet CLI and CfC/GRU runtime.

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

Copy link
Copy Markdown

ThreatCrush Security Scan

9 finding(s)

MEDIUM: 9

Severity Rule Location
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:53
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:89
MEDIUM js-unescaped-html-sink apps/web/src/components/pit-footer.tsx:17
MEDIUM sh-remote-script-execution scripts/dev-setup.sh:25
MEDIUM sh-eval-expansion scripts/dev-setup.sh:35
MEDIUM sh-remote-script-execution scripts/install.sh:162
MEDIUM sh-remote-script-execution scripts/install.sh:187
MEDIUM sh-remote-script-execution scripts/install.sh:305
MEDIUM sh-remote-script-execution scripts/install.sh:322

Snippets are redacted; ThreatCrush never prints matched credential material.

…ries

GHSA-2464-fhr4-w9xw and GHSA-673q-mjm6-r5xr (Next.js unauthenticated RCE),
GHSA-cg2g-xh64-v4q7 (DOMPurify). Published after master's last green
bun audit; next build verified locally.

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

socket-security Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​next@​16.3.8 ⏵ 16.4.161 +1100 +7590 +19970

View full report

…poral topics; e2e dials the infer worker (no mDNS on CI)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ralyodio
ralyodio merged commit 06d3691 into master Oct 26, 2026
12 checks passed
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