Skip to content

feat(listing): storage + GPU capability fields (v0.2.0)#3

Merged
NetworkTheoryAppliedResearchInstitute merged 2 commits into
mainfrom
feat/storage-gpu-listing
Jul 13, 2026
Merged

feat(listing): storage + GPU capability fields (v0.2.0)#3
NetworkTheoryAppliedResearchInstitute merged 2 commits into
mainfrom
feat/storage-gpu-listing

Conversation

@NetworkTheoryAppliedResearchInstitute

Copy link
Copy Markdown
Contributor

What

CapabilityListing gains first-class storage and GPU advertisement so phones, Android TVs, and NAS boxes can join as storage/GPU contributor nodes (the Class B/C/D seam):

  • WorkloadOptIn.Storage — advisory, same §5.1 discipline as Compute/Print; mirrors the coordinator's existing compute/storage/printing opt-out trichotomy (migration 014).
  • Capacity.StorageCommitMB — long-lived storage the node commits to the network (shard hosting), deliberately distinct from DiskMB job scratch so a node can offer either without the other.
  • GPUs []GPUCapability{API, Model, VRAMMB} — mirrors the Printers repeat pattern. Advertising a GPU is the opt-in; API ∈ {vulkan, nnapi, cuda, metal}.
  • JobSpec.Workload doc comment admits "storage".

Scope boundary (deliberate)

How stored data is encrypted, sharded, and audited is a frontend/agent concern outside the protocol — client-side encryption + erasure coding + proof-of-storage audits live above the thin waist. The wire never carries stored content; this PR only adds the capacity advertisement. A challenge/proof message pair is intentionally deferred until the audit protocol is spec'd.

Breaking change (allowed: v0 is UNSTABLE)

CanonicalBytes order changes: GPUs after Printers; StorageCommitMB after DiskMB; OptIn.Storage after OptIn.Print. SPEC §4.1 updated.

Verification

  • go build ./..., go vet ./..., full go test ./... green locally.
  • testdata/vectors.json regenerated (go test ./vectors -update); listing vector now exercises 2 GPUs (repeat encoding), storage capacity, and the storage opt-in.
  • testdata/reproduce_spec.py updated and passing 43/43 against the regenerated golden file — an independent (Python) implementation reproduces the new canonical bytes and verifies all signatures.
  • New unit tests: GPU tamper detection, storage-commitment tamper detection.

After merge

Tag v0.2.0, then bump both consumers (Cloudy, SoHoLINK) in lockstep — no third-party consumers exist yet.

🤖 Generated with Claude Code

CapabilityListing gains first-class storage and GPU advertisement so
phones, TVs, and NAS nodes can join as storage/GPU contributors:

- WorkloadOptIn gains Storage (advisory, same SPEC 5.1 discipline as
  Compute/Print; mirrors the coordinator's existing
  compute/storage/printing opt-out trichotomy).
- Capacity gains StorageCommitMB: long-lived storage committed to the
  network (shard hosting), deliberately distinct from DiskMB job
  scratch. Encryption, sharding, and audit of stored data are
  frontend/agent concerns outside the protocol; the wire never carries
  stored content.
- New GPUs []GPUCapability{API, Model, VRAMMB}, mirroring Printers.
  Advertising a GPU is the opt-in; API in {vulkan, nnapi, cuda, metal}.
- JobSpec.Workload doc comment admits "storage".

CanonicalBytes changes (GPUs after Printers; StorageCommitMB after
DiskMB; OptIn.Storage after OptIn.Print): a breaking v0 encoding
change while v0 is declared UNSTABLE. testdata/vectors.json
regenerated; testdata/reproduce_spec.py updated and passing 43/43
against the new golden file. Consumers (Cloudy, SoHoLINK) must bump
in lockstep; tag v0.2.0 at merge.

Signed-off-by: Jodson Graves <info@ntari.org>
@NetworkTheoryAppliedResearchInstitute
NetworkTheoryAppliedResearchInstitute merged commit e8f2171 into main Jul 13, 2026
2 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