feat(contribute): Executor seam for the contributor node + cloudy-agent#14
Merged
Merged
Conversation
Introduces internal/contribute, the runtime-agnostic contract a Cloudy
member machine implements to contribute capacity, ahead of moving the
coordinator's transitional internal/agent code. Building the seam first
means the heavy Docker/gopsutil/spiffe port lands against a fixed, tested
contract instead of the contract being whatever today's Docker code does.
- Executor (one-shot) and ServiceExecutor (long-running) interfaces;
WorkloadKind {Compute,Print,Storage,Service}; Placement {Scavenged,Pinned}.
- Two invariants enforced at registration/validation and covered by tests:
scavenged nodes accept only preemptible executors (owner-never-interrupted),
and a Service requires pinned placement (a service cannot yield to the owner).
- cmd/cloudy-agent runs the seam end to end: a REAL Storage executor holding
opaque sealed shards and proving possession via internal/storage's
challenge/response, plus placeholder Compute (echo) and Service (presence)
executors standing in for the Docker port. Owner-gate loop defers scavenged
work while the owner is active; pinned capacity is never gated.
Stdlib-only; adds no module dependencies. Not a JFA leaf (imports none of
economy/covenant/record/dispute); import tripwire green. CONFORMANCE.md
updated with the labeled seam-built / runtime-pending entry.
The Docker executor, gopsutil hardware sampling, opt-out/allowlist/printers,
and the agent->cloudyd->/v0 relay are the named next steps behind this seam.
Signed-off-by: Jodson Graves <info@ntari.org>
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.
What
The next queued Phase-1 build: the contributor-node Executor seam, built before physically moving the coordinator's 4,015-line
internal/agentso the heavy Docker/gopsutil/spiffe port lands against a fixed, tested contract.internal/contribute(stdlib-only, adds no module deps):Executor(one-shot) andServiceExecutor(long-running) interfacesWorkloadKind{Compute, Print, Storage, Service} — Service is a first-class variant, per the SaaS discussionPlacement{Scavenged, Pinned};NodeContract;Registrycmd/cloudy-agentruns the seam end to end:internal/storage's challenge/response (the node can't read what it stores)Tests / verification
go build/vet/test ./...green; import tripwire green (contribute is not a JFA leaf, imports none of the four)Not in this PR (named next steps, land behind this seam)
Docker executor, gopsutil hardware sampling, opt-out/allowlist/printers/telemetry port from SoHoLINK
internal/agent, and the agent→cloudyd→/v0relay. CONFORMANCE.md carries the labeled seam-built / runtime-pending entry.Author does not self-merge — for review.