Repository navigation
secure-chat messaging, hosting release race fix; v0.2.82 - #169
Merged
Merged
Conversation
video: pin the published runner by digest (RUNNER_PULL_REF), run it under a local name, tag :stable in the workflow, label the package with its source, and check anonymous pulls in CI. `video setup` (now in core) pulls the pinned digest or builds from source. C0MPUTE_DOCKER overrides the container CLI. Speech gateway exposes router() so POST /v1/videos is tested end to end on loopback with a fake runner that writes a real MP4. gameserver (spec v2): secrets never ride in the offer (sealed handoff to the winning worker); backups every 30 min and at stop, encrypted to the buyer's X25519 key; signed status records on c0mpute/gameserver/v1; `gameserver watch` probes the port (Minecraft status, Valheim A2S, Factorio UDP + status), mirrors backups and fails over to another worker from the latest one; hard expiry via timeout + --init + --rm plus a boot/sweep watchdog. Runtime trait lets the loopback e2e run without docker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…native p2p chat train (infernet.text.train, `c0mpute train lora`): - The corpus goes out as content-addressed 1 MiB pieces from the buyer's chunk store; the worker pulls them over libp2p (InputRef::fetch_to_file, streamed) and checks the sha256 the offer names. Training events are published on the job topic (run_id, step events throttled to 4/s). The worker stores the adapter files as pieces behind an AdapterManifest and its receipt carries the manifest's content hash; the buyer fetches and keeps the adapter only if the weights match the manifest's sha256. Nothing needs a reachable HTTP address any more. - `c0mpute infernet text chat` (infernet.text.infer) is p2p the same way: adapter out as pieces (fetched on a worker cache miss), answer back as a chunk named by the receipt. - Compatibility: specs keep the HTTP fields optional. Workers before this release require dataset_url/adapter_url, so they never bid on a pieces-only job; `--legacy-http` makes the buyer also run the transfer server for them (receipt `sha256:` = the old HTTP path, checked as before). Old buyers' HTTP specs still parse and run on new workers. - Multi-turn chats: messages records are kept whole (every turn, in order) and prompt/completion becomes a one-exchange conversation, instead of collapsing to a "Brief me on: <last user turn>" record. Infernet's runner trains them with the loss on assistant turns (InfernetProtocol/infernet-protocol#161) and reports formats:["messages"]; workers then advertise infernet:text:format:messages and buyers whose corpus has conversations require it. {title, text} records are unchanged. - module.toml: available. infernet (infernet.inference): - New built-in workload c0mpute-core/src/inference.rs: workers answer chat turns from their own OpenAI-compatible runtime (Ollama at 127.0.0.1:11434 by default, C0MPUTE_INFERENCE_URL for llama-server etc., `off` disables). Role `inference`, on by default, advertised only while /v1/models lists chat models (refreshed every minute): infernet:inference plus a tag per model. Answers are stored as chunks and checked against the receipt. - `c0mpute chat --p2p` (the default when not signed in) runs one auction per turn over libp2p, REPL included; the jobs bridge accepts it too. No c0mpute.com and no infernet binary on either side. - module.toml: available; temporal and text workers still need the infernet CLI for Infernet's own runtimes. Tests: text_train_e2e (3 MiB mixed corpus as pieces on loopback with a fake peft runner, gossip progress, adapter pieces verified, then adapter chat p2p), inference_e2e (multi-turn chat p2p via the bridge; also passed against the live Ollama on dev2), unit tests for specs, compat, conversion and tags. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… video e2e Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ads billing no longer shells out to `coinpay wallet send`. Settlement lines become payments::Transfer values keyed `ads:<settlement hash>:<line>` and go through payments::pay_all on the node's one Rail (CoinPay payouts API via $C0MPUTE_COINPAY_PAYOUT_KEY, FakeRail in tests), with the shared idempotent payments ledger (`payments.json` per campaign) and the `[payments] max_usd_per_round` cap. A lost ads-ledger reference is healed from the shared ledger instead of paying twice. - Removed ads' own PaymentRail, DisabledRail, FakeRail and CoinpayCliRail. - `c0mpute ads settle --pay` needs both `[ads] payouts = true` and `[payments] enabled = true`; still a dry run otherwise. - Payout addresses are `<COIN>:<address>` (CoinPay currency code), mapped to payments::Payee by billing::payee_of. - Fee and split logic stay in ads. Docs and manifest notes updated. - Tests: billing unit tests (cap, idempotency, heal), billing e2e on payments::FakeRail still checks payouts equal budget spent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nner CI showed a failover worker that shared no connection with the buyer could not fetch the restore world (Failed to dial the requested peer). Both sides now put their addresses in the handoff and dial each other, so either side can be the one behind NAT. Also fixes a unit test slicing a short last chunk. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r a holder that just let go drop_site deleted chunks before announcing, so challengers that still listed the holder recorded failures (flaky hosting_market_e2e; could wrongly demote a preferred host). Announce first, garbage-collect after holder_ttl; a failed fetch from a peer that no longer lists the site yields no receipt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to release/v0.2.82
…ry (DIP-0018) - c0mpute-secure-chat: addresses = hash of all four public keys, signed key/home records, sealed outer layer hiding sender and recipient, rotating recipient tags, replay guard, bounded mailbox store, rendezvous placement, and client state encrypted at rest. - c0mpute-net: /c0mpute/rpc/1.0.0 named-service request/response (RpcHandler, register_rpc, rpc, connected_peers). - c0mpute-core::dm: mailbox role (on by default, gateways too), gossip on c0mpute/dm/v1, direct delivery to a recipient's home node, store on 3 rendezvous-ranked mailboxes otherwise, fetch/ack, key publish and lookup by fingerprint. New Role::Mailbox. - c0mpute dm: send/pull/inbox/lookup/contacts/block/unblock wired to the network; old `c0mpute chat <cmd>` forms still work. - tests: unit tests plus dm_e2e (4 mailboxes, offline store-and-forward, ack deletes every copy, blocklist, fingerprint lookup, direct delivery). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships train, infernet, video, gameserver (available), ads on the shared payments rail, hosting release race fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # plugins/gameserver/module.toml # plugins/infernet/module.toml # plugins/train/module.toml # plugins/video/module.toml
… release/v0.2.82 # Conflicts: # node/crates/c0mpute-cli/src/main.rs # node/crates/c0mpute-core/src/capabilities.rs # node/crates/c0mpute-core/src/config.rs # node/crates/c0mpute-proto/src/lib.rs
ThreatCrush Security Scan13 finding(s) HIGH/CRITICAL: 1 | MEDIUM: 8 | LOW: 4
Snippets are redacted; ThreatCrush never prints matched credential material. |
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.
Releases what landed since v0.2.81 plus the last two pieces, as v0.2.82:
c0mpute dm send|pull|inbox|lookup|contacts|block. E2E-encrypted 1:1 messages, direct when the recipient's node is online, otherwise sealed on 3 deterministic mailbox nodes (30 days; mailboxes see no sender, recipient or content), deleted on collect; signed self-published key records for lookup by fingerprint; contacts/blocklist/inbox encrypted at rest. New default rolemailbox.hosting_market_e2e; could wrongly demote a preferred host). Now: announce first, garbage-collect afterholder_ttl; a failed fetch from a peer that no longer lists the site yields no receipt. e2e 5/5 green.Verified on the merged tree (docker, isolated network): all lib tests (c0mpute-core 337), plus dm, hosting_market, inference and workflow e2e.
🤖 Generated with Claude Code