Skip to content

Commit e8a2d33

Browse files
committed
Soften product docs: miner-first capacity wording.
Drop marketed no-Verda adapter slogans from README and docs; keep protocol never constraints and allow scripts/qa factual names.
1 parent bf8bf72 commit e8a2d33

8 files changed

Lines changed: 28 additions & 28 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
Hypercluster is a [Base Intelligence](https://github.com/BaseIntelligence/base) challenge service. Miners can **supply** GPU/CPU capacity (register nodes, list offers, host pods) and **demand** Modal-like multi-node jobs (browse offers, rent, submit work). The challenge owns marketplace lifecycle, topology-aware InfiniBand/NCCL planning (local simulator in default CI), optional dstack TEE offline verification, optional **non-TEE SSH GPU host probe** (FakeSsh in default CI), and a four-factor scoring engine that emits **raw hotkey weights** to Base master.
2525

26-
Hypercluster scores marketplace honesty and execution quality. It is **not** a commercial cloud broker and **does not ship** a Verda (or other cloud) product adapter. You do **not** need a commercial GPU broker account to mine. Self-owned SSH fleets and inventory registered through the home-grown APIs are the product path. Multi-node fabric validation defaults to a deterministic local simulator; GPU probe gates use FakeSsh offline; live single-GPU rent + RealSSH probe are optional maintainer tooling under `scripts/qa/` outside the product package tree. Challenge never calls `set_weights`; formula stays `correctness × efficiency × fabric_gate × tee_bonus`.
26+
Hypercluster scores marketplace honesty and execution quality. Miners bring self-owned SSH fleets or other inventory and register it through the home-grown marketplace APIs. Capacity obtained out-of-band (including commercial rentals) can feed those same APIs; commercial cloud clients stay ops tooling and are not required to mine. Multi-node fabric validation defaults to a deterministic local simulator; GPU probe gates use FakeSsh offline; live single-GPU rent + RealSSH probe are optional maintainer helpers under `scripts/qa/`. Challenge never calls `set_weights`; formula stays `correctness × efficiency × fabric_gate × tee_bonus`.
2727

2828
Trust model: **cryptographically-anchored trust-but-audit**. Signed miner/provider writes, digest-pinned jobs, fabric gates, optional TEE multipliers, integrity zeros on spoof paths. Multi-node InfiniBand is not an encrypted confidentiality fabric under GPU CC/TDX; TEE bolsters collocated honest compute, not wire secrecy across ranks.
2929

@@ -119,13 +119,13 @@ Copy `.env.example` for `CHALLENGE_*` / `HYPER_*` knobs. Never commit tokens.
119119

120120
## Validation quick reference
121121

122-
Default gates are local only (unit, integration, sim). They never auto-load commercial cloud credentials. GitHub Actions runs the same quality bar (lint, format, mypy, no-verda fence, pytest with coverage, Docker build/publish) on every push; see [`.github/workflows/ci.yml`](.github/workflows/ci.yml).
122+
Default gates are local only (unit, integration, sim). Gated tests do not require cloud credentials. GitHub Actions runs the same quality bar (lint, format, mypy, import-boundary audit, pytest with coverage, Docker build/publish) on every push; see [`.github/workflows/ci.yml`](.github/workflows/ci.yml).
123123

124124
```bash
125125
uv run ruff check .
126126
uv run ruff format --check .
127127
uv run mypy
128-
uv run python scripts/check_no_verda.py
128+
uv run python scripts/check_no_verda.py # import-boundary / dep audit
129129
uv run pytest -q -m "not live_verda and not integration" --cov=hypercluster --cov-fail-under=70
130130
uv run hypercluster sim doctor --offline
131131
uv run hypercluster sim run-scenario --name smoke --url http://127.0.0.1:3200
@@ -140,7 +140,7 @@ Canonical sim scenario order: `smoke` → `marketplace` → `nccl` → `tee-offl
140140
```text
141141
src/hypercluster/ # FastAPI app, domain, fabric, attest, scoring, CLI, sim
142142
tests/ # unit, API, CLI, fabric, attest, docker (serial)
143-
scripts/qa/ # external maintainer-only live ops helpers (not product adapters)
143+
scripts/qa/ # maintainer-only live helpers (serial rent/probe; optional)
144144
docs/ # product documentation
145145
docker/ # vendor wheel staging for image builds
146146
Dockerfile # healthchecked challenge image on :8000

docs/architecture.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ flowchart TB
5959
| Component | Responsibility |
6060
| --- | --- |
6161
| **API layer** | Base `/health` `/ready` `/version`, public `/v1/*` routes, signed write auth, `get_weights` hook |
62-
| **Marketplace** | Providers, nodes, offers, leases, pods; hard price/lifetime guards; home-grown (not a cloud adapter) |
62+
| **Marketplace** | Providers, nodes, offers, leases, pods; hard price/lifetime guards; first-party marketplace |
6363
| **Jobs** | Admit → place → provision/bind → run → collect → score → teardown; CAS-style queue claims |
6464
| **Fabric** | FabricReport discovery, pack/spread placement, NCCL env matrix, multi-node launch contract, honesty injects in sim |
6565
| **GPU probe** | Non-TEE SSH allowlist inventory + open CUDA microbench; FakeSsh default in CI; evidence APIs/CLI; integrity hooks only |
@@ -109,7 +109,7 @@ Host proxy form under Base: `/challenges/hypercluster/...`. Relative paths above
109109
- Ordered fatal/advisory SSH checks (`nvidia-smi`, UUID uniqueness, open CUDA microbench, optional docker runtime).
110110
- **FakeSsh** is the default transport for gated CI; production refuses silent fake.
111111
- Private keys: **file/env `key_ref` only**; SQLite stores fingerprints/refs — never PEM.
112-
- Live commercial rent + host probe remains external maintainer tooling (`scripts/qa/*`); not a product cloud adapter.
112+
- Live commercial rent + host probe remain external maintainer tooling (`scripts/qa/*`).
113113
- Full table and security notes: [GPU probe](gpu-probe.md).
114114

115115
## Jobs and marketplace handoff
@@ -123,20 +123,20 @@ Score → weight snapshot → push to master
123123
Teardown lease policy on terminal or terminate
124124
```
125125

126-
## Local vs product paths
126+
## Default gated CI vs operator runtime
127127

128-
| Path | Default CI | Product runtime |
128+
| Path | Default gated CI | Operator runtime |
129129
| --- | --- | --- |
130130
| Self inventory / SSH fleets | Simulated | Yes |
131131
| Multi-node IB/NCCL | **Local sim required** | Real fabrics when operators supply them |
132132
| GPU host probe | **FakeSsh fixture matrix** | RealSSH allowlist when operators supply hosts/keys |
133133
| TEE offline fixtures | Required | Enabled when proofs present |
134134
| Live TEE hardware | Optional skip | Optional (`HYPER_TEE_LIVE`) |
135-
| Commercial cloud rental | Forbidden in gated tests | Not a product dependency; optional external capacity behind a hotkey |
135+
| Commercial cloud rental | Forbidden in gated tests | Optional external capacity behind a hotkey; clients stay out of band |
136136

137137
## Out of scope (product)
138138

139-
- First-party Verda / commercial broker SDK or OAuth client
139+
- First-party third-party cloud broker integration (optional future)
140140
- Challenge-side `set_weights` or chain UID mapping
141141
- Full R=2 multi-node re-execution as default honesty
142142
- Claiming InfiniBand encryption from GPU CC/TDX alone

docs/gpu-probe.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
Hypercluster can verify that a provider host has real GPU inventory and can perform a
44
minimal open CUDA smoke **without TEE**. The pipeline is Lium-inspired (ordered fatal
5-
vs advisory SSH checks) and is **owned by the challenge**: no closed job provers,
6-
no SN51 collateral markets, and **no commercial-cloud product adapter**.
5+
vs advisory SSH checks) and is **owned by the challenge**: open CUDA / allowlist SSH;
6+
no closed job provers; no SN51 collateral markets.
77

8-
## Formula and chain fences
8+
## Formula and chain boundary
99

1010
```text
1111
composite = correctness × efficiency × fabric_gate × tee_bonus
@@ -80,7 +80,7 @@ Exit codes: **0** passed, **2** failed checks, **3** transport/error, **1** usag
8080
| No PEM in API bodies or evidence JSON | Operator keys live on disk (`0600`) or env |
8181
| Allowlist SSH only | Unknown `command_id` abandoned; no free-form remote shell |
8282
| Redacted raw | Response/store redaction + output caps |
83-
| No Verda in product | Live cloud rent remains external `scripts/qa/*` only |
83+
| Live rent path | Optional maintainer scripts under `scripts/qa/` |
8484

8585
## Live maintainers path (optional)
8686

docs/live-qa.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
**Default CI and `pytest`:** never run live commercial rentals; never auto-load broker credentials. GPU probe gates in CI use **FakeSsh only**.
55
**Miners:** you do **not** need a commercial GPU broker account. Self-owned inventory through the home-grown marketplace is enough.
66

7-
This protocol proves that Hypercluster's **product marketplace APIs** still accept a real single-GPU host when an operator provides capacity obtained out-of-band, and (optionally) that a **RealSSH GPU probe** yields `host_probe.json` / product evidence. It is **not** multi-node InfiniBand validation (that remains local sim). It does **not** authorize a product Verda adapter, does **not** call `set_weights`, and does **not** change the four-factor scoring formula.
7+
This protocol proves that Hypercluster marketplace APIs accept a real single-GPU host when an operator provides capacity obtained out-of-band, and (optionally) that a **RealSSH GPU probe** yields `host_probe.json` / product evidence. It is **not** multi-node InfiniBand validation (that remains local sim). It does **not** call `set_weights` and does **not** change the four-factor scoring formula.
88

99
## Hard boundaries
1010

1111
| Rule | Policy |
1212
| --- | --- |
13-
| Product package | No Verda/SDK/OAuth client; no `api.verda.com` adapter in `src/hypercluster` |
13+
| Product package | Commercial request clients are not part of the `src/hypercluster` package |
1414
| Gated tests | Local unit/integration/sim + **FakeSsh GPU probe** only |
1515
| Shape | **One** small **single-GPU** instance |
1616
| Concurrency | Serial only |
@@ -23,7 +23,7 @@ This protocol proves that Hypercluster's **product marketplace APIs** still acce
2323

2424
## Tooling layout
2525

26-
External-only helpers live under `scripts/qa/` (outside the product adapter surface:
26+
Optional maintainer rent tooling under `scripts/qa/`:
2727

2828
| Module | Role |
2929
| --- | --- |
@@ -38,7 +38,7 @@ Default hard caps in the smoke runner are intentionally tight (rate and total bu
3838
## Operator sequence
3939

4040
1. **Start challenge API without commercial-cloud credentials in process env.**
41-
Challenge must remain free of `VERDA_*` so product isolation audits hold.
41+
Do not put commercial credentials in the challenge process environment.
4242
2. **In a separate ops shell**, load external credentials from an **out-of-tree** file owned by the operator (mode-restricted). Do not write those values into the repo, docker-compose, or challenge settings.
4343
3. **Run catalog availability at order time** (prices and stock drift). Prefer cheapest available single GPU that still can complete a short smoke.
4444
4. **Deploy one instance only** via ops tooling (not product package imports used for production APIs).
@@ -51,14 +51,14 @@ Default hard caps in the smoke runner are intentionally tight (rate and total bu
5151
Example command shape (placeholders; adjust paths for your environment):
5252

5353
```bash
54-
# API shell: no VERDA_*
54+
# API shell: no commercial broker credentials
5555
export CHALLENGE_SHARED_TOKEN=dev-token
5656
export CHALLENGE_DATABASE_URL=sqlite+aiosqlite:////tmp/hypercluster-live/challenge.sqlite3
5757
export HYPER_COMBINED_WORKER=true
5858
mkdir -p /tmp/hypercluster-live
5959
uv run hypercluster serve --host 127.0.0.1 --port 3200
6060

61-
# Ops shell: credentials loaded privately else where; never committed
61+
# Ops shell: credentials loaded privately elsewhere; never committed
6262
uv run python scripts/qa/verda_single_gpu_smoke.py \
6363
--base-url http://127.0.0.1:3200 \
6464
--evidence-dir ./.docs-evidence/live-qa
@@ -77,7 +77,7 @@ Use a **gitignored** evidence directory (for example `.docs-evidence/`). Do not
7777

7878
| Artifact | Content |
7979
| --- | --- |
80-
| Product audit | Clean no-Verda product tree audit lines |
80+
| Product audit | Clean import-boundary / dep audit lines for `src/hypercluster` |
8181
| Rental summary | Instance type, location, $/hr (no tokens) |
8282
| Product ids | Provider/node/offer/lease/pod identifiers |
8383
| Job terminal state | Job id and terminal status summary |
@@ -96,7 +96,7 @@ Use a **gitignored** evidence directory (for example `.docs-evidence/`). Do not
9696
## What success does **not** claim
9797

9898
- Does not replace sim gates for multi-node fabric.
99-
- Does not authorize embedding commercial SKUs into first-party product adapters.
99+
- Does not make commercial cloud SDKs part of the first-party miner path.
100100
- Does not change scoring formula or emission math (`set_weights` remains off-limits to the challenge).
101101
- Does not require miners to create commercial broker accounts.
102102
- Does not treat product sim job success alone as silicon-green without host probe evidence when M9 silicon is claimed.

docs/marketplace.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Marketplace
22

3-
Hypercluster implements a **home-grown**, Lium-shaped marketplace entirely inside the challenge. Product code does not call commercial broker APIs. Capacity is whatever providers register (self fleets, lab clusters, or capacity a provider obtained out-of-band).
3+
Hypercluster implements a **home-grown**, Lium-shaped marketplace entirely inside the challenge. Capacity is whatever providers register (self fleets, lab clusters, or capacity a provider obtained out-of-band). Commercial broker clients, if any, stay outside the product path.
44

55
## Objects
66

docs/operations/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Container listens **8000** internally; compose maps host **3250**. SQLite /data
4848

4949
## Configuration
5050

51-
See `.env.example` for `CHALLENGE_*` and `HYPER_*` knobs. Prefer secret files for tokens. Never place commercial broker credentials in the challenge process environment for product isolation guarantees.
51+
See `.env.example` for `CHALLENGE_*` and `HYPER_*` knobs. Prefer secret files for tokens. Do not place third-party broker credentials in the challenge process env.
5252

5353
## Quality gate
5454

docs/provider/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Provider guide (supply)
22

3-
Providers advertise compute capacity into Hypercluster’s home-grown marketplace. Capacity can be self-owned SSH fleets, lab clusters, or hardware obtained outside the product (commercial rentals remain **ops-owned**, never a product SDK dependency).
3+
Providers advertise compute capacity into Hypercluster’s home-grown marketplace. Capacity may be self-owned or obtained ops-side; miners only need the marketplace APIs (self fleets, lab clusters, or inventory offered by a provider hotkey).
44

55
## Prerequisites
66

docs/security.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Incomplete or invalid signatures are rejected. CLI helpers must not print tokens
2323
| Product knobs | `HYPER_*` | Separate from Base `CHALLENGE_*` prefix |
2424
| Provider SSH material | Operator-managed outside public payloads | Do not store plaintext secrets in git; GPU probe persists **fingerprint / key_ref only** (never PEM in SQLite or evidence JSON) |
2525
| GPU probe FakeSsh | Tests / explicit allow only | Production must not silently fake silicon (`HYPER_SSH_TRANSPORT=real` default path fails closed without keys) |
26-
| Commercial cloud QA secrets | Outside product process and outside default pytest | Never required for miners; never product Verda adapter |
26+
| Commercial cloud QA secrets | Outside product process and outside default pytest | Never required for miners; not injected into challenge process env by default |
2727

2828
Product documentation and `.env.example` use placeholders only.
2929

@@ -32,7 +32,7 @@ Product documentation and `.env.example` use placeholders only.
3232
- Challenge SQLite on `/data` is the only durable store for marketplace/jobs/scores.
3333
- Challenge never writes Base master Postgres and never executes validator `set_weights`.
3434
- Raw weights are finite non-negative floats; NaN/Inf/negative weights are invalid.
35-
- Outbound product policy denies commercial Verda control-plane hosts; optional maintainer tooling under `scripts/qa/` runs **outside** the challenge package import graph for product audits.
35+
- Outbound product policy restricts commercial control-plane hosts used by optional QA helpers; maintainer tooling under `scripts/qa/` runs outside the challenge package import graph.
3636

3737
## Integrity and scoring
3838

@@ -55,7 +55,7 @@ Self-deal and spam soft penalties can damp aggregated hotkey mass without invent
5555
| No PEM storage | SQLite and public evidence expose at most key fingerprint / ref kind+name |
5656
| Redaction | Evidence stores redacted short raw; secrets scrubbed from messages |
5757
| FakeSsh boundary | Default gated CI uses FakeSsh fixtures; production refuses silent fake |
58-
| Live cloud ops | External `scripts/qa/*` only; product package remains free of Verda SDK/OAuth |
58+
| Live cloud ops | External `scripts/qa/*` only; product package has no embedded commercial broker SDK/OAuth client |
5959

6060
See [GPU probe](gpu-probe.md) for the ordered fatal/advisory table.
6161

0 commit comments

Comments
 (0)