Network v2 uses owner-signed RunManifestV2, ht/2 messages and /v2 routes.
V1 runs and signing domains stay separate; existing state directories are not
upgraded. Use this guide for the multi-rank client, not the single-rank v1
join/run workflow in miner.md. General layouts use
N = DP * EP, pipeline size 1; OpenDecision uses dense DP=N, EP=1, optional
ZeRO-1. Logical rank support is not hardware qualification.
| Surface | Implemented/proven scope | Limit |
|---|---|---|
| OpenDecision MLM, decision, distill | Each objective passed a CPU N2/DP2/EP1/ZeRO-1, H2/J1, four-client, two-round carry gate: independent audits, exact m/v/step/EF, capped tapes, test reward finality and checkpoint | Tiny functional evidence, not quality/calibration, throughput, profitability or CUDA. Original signed admission artifacts retained; final pytest production journals/checkpoints were removed by retention. Production outcomes are observed gates, not fresh artifact re-verification |
| Backend authority | One immutable owner-reviewed backend selection shared by admission, audit, trace geometry, referee and rollback; restart/cache contradictions reject. FIRST4 attempt008 passed bounded same-driver two-host CUDA bitwise qualification | Selection/dispatch and public CLI CPU execution are not CUDA attestation. Attempt008 qualifies only its frozen small decoder/source/image/profile; workload_allowed=false, current production client admission remains separate |
| Codec | One shared metadata parser validates complete payload before decode, exact expected shapes and raw-byte cap | Expected shapes must come from trusted manifest/state. Legacy decompress(payload) has no geometry cap; byte preflight does not bound an earlier storage fetch or legitimate tensor footprint |
| Scale | Allocator supports up to 1024 candidate metadata entries; legacy service path permits at most 16 without a capacity profile. Bounded capacity intake/opening fail-closed proof is APPROVE: authenticated profile opening rejects before cache, state loads, tensor allocation or publication | Allocator1024 is not service capacity. Tiny32 profile metadata/intake exist; heavy32 remains denied pending OS limits, consumer guards, bounded reads and execution charging |
| Rollback | CPU two-round exclusion, fresh replay, CAS/restart and checkpoint lineage; authenticated predecessor history reconstruction | History bound 16 rounds; larger history fails closed. No CUDA rollback proof |
| Relays | Local HTTP/ASGI lifecycle evidence; independent r2 local kind import/source109, TLS/CNI, upload/fixture-master acceptance, restart/replica/regional fallback, retention/GC and namespace denial PASS with owned cleanup. Product gateway namespace AND pod TCP8443 delta passed one four-overlay render regression | Original r2 outer caller exit1 retained; isolated READY phase repair passed two native-event cases, not another cluster run. APAC runtime, L0 finality and full D3/funded service integration unproven; no WAN or three-live-region independence claim |
| External services | Teacher-label and R2 client/config paths exist | Live OpenRouter/R2 checks deferred pending credentials. No live teacher or R2 success inferred from CPU fixtures |
Root ledger 20/23; three tasks remain open: allocation80, CPU verification and final push/CI. Workspace evidence sources
(not shipped runtime authority): K8S-TRANSPORT-R2-RESULT-VERIFY.md,
K8S-CALLER-READY-PHASE-FIX-VERIFY.md,
K8S-RELAY-PRODUCT-INTEGRATION-VERIFY.md, MINER-PUBLIC-CLI-VERIFY.md in
.omo/evidence/hypertrain-network/; FIRST4 is
qualification-usd50-20261009T181257Z/NEXT30-008-RESULT-VERIFY.md there.
Public CLI proof is in-process CPU run-v2, not installed-CLI subprocess or CUDA.
Operator, consumer, wrapper and antiabuse contracts are complete within their
verified CPU scope. Capacity controller safeguards were previously reviewed under
CAPACITY-CPU-FALLBACK-VERIFY.md; current source requalification is pending after
type/runtime changes. Genuine80 execution remains unrun; fresh CPU approval is
absent and root execution admission remains pending. Production116 gates remain unproven.
Internal runtime-custody or NOTSTOREACCEPTED descriptors are private retention,
not accepted shadow-execution, backend/economic qualification or eligibility.
Accepted shadow-execution requires the original validated execution context,
actual backend qualification and economic authority; private retention cannot
bypass those gates or establish funded production116 acceptance.
These are scoped proofs, not an all-network release approval. Harness, CLI and capacity work may change; publication must reconcile their final evidence before removing a pending label. Ordinary checkpoint verification independently replays outer aggregation; inner training/carry evidence comes from service audits and anchor comparisons, not the checkpoint alone.
Run from the repository root, Linux x86_64, Python 3.12. Commands below are source-checked recipes; they were not executed during this documentation pass.
uv sync --frozen --extra trainer
uv run --frozen hypertrain-miner --help
uv run --frozen hypertrain-miner run-v2 --help
uv run --frozen hypertrain-miner watch --helpFor OpenDecision also install the pinned od extra. The checkout's trainer extra
uses CPU Torch; CUDA requires the exact reviewed image/runtime, not merely
changing device. Obtain the owner hotkey, full wrapper run ID, image digest,
signed policies and verified dataset from the operator. Protect both hotkey and
coldkey seed files: regular files, mode 0600, owned by the running user; 32 raw
bytes or 64 hex characters. Never put seeds in the TOML or publish them.
Minimal miner.toml template; replace the capitalized values with actual pins:
api = "https://MASTER/challenge/hypertrain"
keyfile = "miner.key"
workdir = "work"
state_source = "states"
image_digest = "sha256:IMAGE_DIGEST"
run_id = "RUN_ID"
owner_hotkey = "OWNER_SS58"
device = "cpu"api is the service base, without /v2/runs/.... NetworkMiner requires pinned
run_id and owner_hotkey; it verifies the signed wrapper before work.
state_source and image_digest remain required shared config fields; v2 round
inputs are fetched through the job/object endpoints. Re-requesting the same
round job (a miner restarting after a crash) returns the identical staged job;
staged inputs that differ on the server answer 409, never an overwrite.
Relative paths resolve
against the TOML directory. Environment HYPERTRAIN_MINER_<FIELD> overrides
matching TOML fields; unknown TOML keys reject. Other existing fields:
data_dir, poll_seconds (2.0), chunk_bytes (67108864),
allow_file_upload (false). Do not assume these v1-oriented tuning fields alter
the v2 server's deadlines or relay chunk policy.
bash scripts/mine-smoke-v2.sh runs this miner path offline on CPU: it starts the
real challenge app (tiny test-ledger fixture run, throwaway fixture keys) on
127.0.0.1 plus a self-signed TLS relay on localhost, then runs join-v2,
escrow-lock, four trial_export/probe-v2/proof-v2 trials and
run-v2 --round 0 as separate uv run --frozen hypertrain-miner processes. A round
needs a four-identity eligible roster, so three peer identities are graduated
in-process by the operator role ("mode": "in-process" in the evidence). PASS
requires every stage at rc 0 and the round-0 delta recorded; measured ~132 s,
budget MINE_SMOKE_V2_BUDGET_SECONDS (default 300). Evidence (stage, rc, ms) goes
to $MINE_SMOKE_V2_EVIDENCE or a fresh 0600 temp file; MINE_SMOKE_V2_BREAK=<stage>
points one of the four miner stages at a closed port to check failure detection (any
other name exits 2 before running). It proves the CLI
chain, not CUDA, audits, settlement or production funding.
Set REQUEST_ID to a fresh 64-hex request ID, EXPIRY_BEACON to a future
verified beacon round. Public join needs both keys:
uv run --frozen hypertrain-miner join-v2 --config miner.toml \
--coldkey cold.key --request-id "$REQUEST_ID" --expiry "$EXPIRY_BEACON"
uv run --frozen hypertrain-miner status-v2 --config miner.tomlApplications/proofs are bound to the exact signed manifest, admission, nonce,
image, layout and epoch. A decoder/reset/other-objective admission cache cannot
authorize a carry run. Hardware hints are advisory; a fresh full-round work screen
and independent same-layout replay establish work, not physical GPU ownership.
Trial WorkProof.challenge_hash is the canonical JoinChallenge body digest,
which includes its nonce; WorkScreenV2 is reserved by admission and nonce.
WorkProof reservations include admission and challenge_hash, not delta bytes
alone. Retry the exact stored signed operation: changing expiry or signature does
not create a new semantic attempt (protocol/envelope_v2.py:replay_key).
After GET /v2/runs/{run_id}/join/{admission_id}/challenge issues a challenge,
the operator exports the matching staged IslandJobV1, its inputs and the signed
challenge into a new or empty folder:
uv run --frozen python -m hypertrain.challenge.trial_export \
--api "$API" --run-id "$RUN_ID" --admission-id "$ADMISSION_ID" \
--admin-token-file /path/to/admin-token --out trialCopy trial/ to the miner, then run:
uv run --frozen hypertrain-miner probe-v2 --config miner.toml \
--job trial/job.json --challenge trial/challenge.json > proof.json
uv run --frozen hypertrain-miner proof-v2 --config miner.toml --proof proof.jsonA joined miner can skip the export: probe-v2 --config miner.toml > proof.json
without --job/--challenge reads its admission ID (status-v2), GETs the
challenge (which issues the trial when none is open), then
GET /v2/runs/{run_id}/join/{admission_id}/job with headers X-Hotkey and
X-Trial-Signature (hex hotkey signature of
hypertrain/trial-job/2|{run_id}|{admission_id}). The route returns the admin
export's JSON only to the currently registered hotkey that owns the admission:
unknown run 404, unknown admission 409 UNKNOWN_ADMISSION, a deregistered or
revoked owner 403 like the challenge route, any other hotkey or a missing or bad
signature 403 (the admin token is no substitute), then the export's own refusals
(409 NO_CHALLENGE, 409 REFERENCE_TRIAL_CLOSED once the trial is finalized,
503 on a beacon pause). The miner checks the job, objects and signed challenge as
trial_export does, streams each input (one uncompressed, sha256-verified
object; about 4 bytes per parameter for a reset start state, more under
carry) into a private temporary folder under its workdir, probes, and deletes
the folder, also on failure: a re-run downloads and probes again.
probe-v2 executes the screen and uploads original rank-0 state/EF/delta/leaves;
stdout contains the signed proof/screen pair. The operator independently prepares
and finalizes references through authenticated admin routes; miners cannot
self-finalize or turn a successful probe into ACTIVE status.
Current admission policy fixes E=4 and requires 12 clean finalized participations plus canary blocks 1,2,3. The first four are shadow-only. Later PROBATION influence also requires funded eligibility; ACTIVE requires current screening, sufficient matured units locked, no pending dispute/outbox and the conservative economic bound. Actual audit floor is 100% anchored-full replay in this phase, despite lower nominal probation/base rates. Calendar age or a legacy bond flag is not graduation. Join quotas, one concurrent non-ACTIVE identity per coldkey, funded locks and known-owner caps bound exposure; they do not reveal every Sybil owner.
Prefix quotas use a stable coordinator-private HMAC namespace pinned atomically in the store. Reopening the same store with the same coordinator does not reset current prefix buckets. A populated legacy store without the namespace pin, or a coordinator namespace mismatch, fails with HTTP 503 without resetting quotas. No automatic migration is provided; separate operator resolution is required.
Funding uses signed EscrowLock via POST /v2/runs/{run_id}/escrow/lock, not a
CLI --bond flag. Test genesis has pinned nonfinancial origins; production mode
has separate reward authority/issuance bounds and no test-genesis conversion.
Production funding is one coordinator-signed ProductionBootstrap, posted as an
ht/2 envelope to POST /v2/runs/{run_id}/admin/bootstrap (admin bearer). The
run's EconomicsPolicyV2.bootstrap_allocation_hash pins its owner/units/maturity
list (genesis_allocation_hash over [owner, units, mature_at]); only
ledger_mode="production" may set it, and an unset field is omitted, so earlier
policy digests and run IDs are unchanged. Origins are
ht-origin-bootstrap-v1|run|allocation_hash|index. The ledger accepts it once per
run: the same operation_id and body replay the stored receipt, the same
operation_id with other content answers OPERATION_CONFLICT, and any second
bootstrap answers PRODUCTION_BOOTSTRAP_FORBIDDEN. It is refused when the inner
authority signature is not reward_authority (pinned to coord_pubkey), when
the envelope signer is not the coordinator, when the allocation differs from the
pin, when bootstrap plus issued and reserved shadow units would exceed
max_total_issuance (TOTAL_ISSUANCE_BUDGET; later rewards share the same cap),
when the run has no CUDA qualification (production refuses the CPU backend) and
when the latest beacon round is not BLS-verified (UNVERIFIED_BEACON).
Bootstrap units mature on the beacon loop and can be locked or transferred;
like genesis units they are collateral and never pay through get_weights.
Production eligibility also needs the run's economic-bound record. POST /v2/runs/{run_id}/admin/economic-bound (admin bearer, no body) writes it once,
coordinator-signed, only when the pinned policy satisfies
q_floor*s_lower*beta*(R_collectible+S_min) >= G_max in exact ppm integers
(challenge/trust_v2.py:economic_bound); otherwise it answers 409 and writes
nothing. The record binds the economics policy hash; later calls return it
unchanged, and a stored record for another policy answers 409.
A test-ledger run published on the production challenge steers real emission:
as soon as its first live round finalizes and its reward matures, those units
enter get_weights like any production reward
(tests/challenge/test_v2_weights_bridge.py::test_v2_matured_reward_reaches_get_weights).
ledger_mode="test" does not keep a run out of on-chain weights; do not host a
test-ledger run on the production challenge unless that emission is intended.
Rewards are issued only through accepted finality, uniquely tracked by origin,
then mature after vesting/dispute conditions. Transfers preserve origin units;
fraud burns collectible exposure rather than redistributing it. Shadow work does
not influence global theta; authorized production bootstrap issuance is a
separate policy, not proof of market-backed collateral.
Matured live rewards become weight in GET /internal/v1/get_weights. Each epoch answer first
pays v1 entitlements, then fills the rest of its 10^6 mass with available units of live
reward origins whose mature_at is at or before the drand round of epoch_at. Those units
move to paid in the same transaction that stores the answer, so a repeated epoch request
returns the stored bytes and pays nothing again; units over the mass pay in later epochs.
Locked, disputed, pending, burned, transferred, shadow-bootstrap and genesis units are never
paid. A hotkey missing from the metagraph is dropped after payment and its units burn to UID0
(see docs/findings/v2-weights-bridge.md).
Only run after the operator has opened an eligible, funded round:
uv run --frozen hypertrain-miner run-v2 --config miner.toml --round 0This follows accept, authenticated inputs, exact-N launcher, one island commit,
original artifacts, regional custody, master acceptance and delta submission.
Tokens derive from assigned samples times sequence length, not self-reported GPU
count. Rerunning a round that is already UPLOADED exits 0 with UPLOADED: the
master returns its first acceptance for the same receipt without a new relay
retrieval, and answers 409 RELAY_RECEIPT_CONFLICT for a different receipt.
UPLOADED is not audit success, settlement or payment. Unlike v1 run,
run-v2 has no --rounds/--start option. Preserve the work directory; do not
claim the CLI is a complete unattended production scheduler.
The decoder operation driver has an executable original four-message
AcceptV2/CommitV2/WorkProof/DeltaManifestV2 consumer. Capture records ordered
original requests, bounded responses and only the successful-response accepted
prefix. Canonical publication-path and same-Event probe-cancellation repairs are
review-approved; they are not current missing implementations. These scoped
D2-DECODER-DRIVER-VERIFY.md, D2-CAPTURE-VERIFY.md and
SERVICE-ROLE-DISPATCH-VERIFY.md approvals do not prove actual paid CUDA or
complete owner-accepted trial/audit/dispute/finality execution.
Production WorkProof.challenge_hash is the accepted canonical CommitV2 body
digest. The upload-grant commit_hash query uses that same body digest, not the
delta hash or signed envelope hash. Identical delta bytes across live rounds are
valid with distinct explicit commit/challenge subjects; an omitted selector is
accepted only for a unique exact match, otherwise ambiguity rejects. See
miner/core.py:NetworkMiner.run_round and
protocol/envelope_v2.py:replay_key; signatures/expiry changes cannot bypass
their semantic reservations.
run-v2 --job path/job.json is a local staged-job launch returning artifact paths;
it does not submit a live round. Both forms use the same launcher. Failure,
deadline or rank disagreement prevents a partial validated publication.
Persist the exact original job JSON beside its published/ directory. Watch
independently of training:
uv run --frozen hypertrain-miner watch --config miner.toml \
--job work/round/job.json --timeout 30This command performs one bounded long-poll pass, then exits with a processed
count; repeat under an operator supervisor. Timeout range is 0..30 seconds.
STEP/LAYER/OP answers and requested StateServe proofs come from validated
published traces/checkpoints. The coordinator signature covers the event's
Turn.contest.w; the watcher requires that round to match the original validated
publication job, alongside run and signer checks. Wrong-round events raise
WATCH_PUBLICATION_CONTEXT before event-driven trace/state responses, signing,
outbox writes, acknowledgments, sends or cursor advancement; they are not skipped
and acknowledged. Pending events and fetched batches are checked before delivery.
Durable cursor/outbox retries identical signed
replies; one watch-directory lock prevents concurrent watchers. Do not share a
watch directory across identities or discard it on restart. The CLI has no
--level or dispute-opening subcommand: signed DisputeV2, BisectV2,
StateServe, ResolutionV2 and recovery routes own those transitions.
Independent referees use their own accepted current execution deadline while
preserving historical publication descriptors. Losing-party checks, funded
contests and fixed absolute horizons prevent arbitrary transcript resets.
Flat aggregation retains each miner's original delta: norm preclip, previous outer-update CClip, then deterministic integer allocation. Q=16777216; final weights sum Q, each miner <=4194304, total probation <=4194304, plus signed known-owner group bounds. No post-cap renormalization. Four eligible ACTIVE miners can carry exact quarter weights; infeasible cohorts reject. Similarity alone is not fraud evidence. Audits replay each miner's own assignment.
At most two speculative rounds may be applied; opening w+2 waits for w to settle
or be excluded and repaired. Retain original input objects, signed tapes,
accepted envelopes, carry anchors and full bounded predecessor history. Reward
get_weights is not a model-checkpoint download endpoint.
Regional relays are transport/cache only, not regional arithmetic aggregators.
An upload opportunity acknowledgment is not custody. Completion failure requires
an exact complete receipt or full original chunk coverage, authenticated healthy
witnesses and original grant/assignment lineage. The master fetches/hash-checks
original bytes before acceptance. Rescue preserves custody without backdating
late acceptance or charging the miner for proven storage failure.
Multi-chunk custody without a receipt disables the relay key at once only when
the master holds the original and it proves every chunk hash. Otherwise the key
is disabled only after rescued bytes hash to delta_hash: the grant could not
tie those chunk hashes to the commit, so valid chunks that concatenate to the
wrong delta answer 422 and leave the relay enabled. A rescue the relay cannot
serve at all disables the key too: an HTTP error (including a backend 503), a
signed response other than SERVED, a bad response signature or binding, a
timeout, or streamed bytes that miss the signed, miner-committed chunk hash. Two
pinned auditors already proved the failure and the relay cannot produce its own
signed custody. The fallback answers rescued: false, disabled: true; the
relay-disabled id is relay_id:assignment_epoch:key_id and earlier evidence wins.
While a grant is live, upload-grant returns the same signed grant for the same
chunk list and 409 for another list, unless the master holds the original delta
and it proves the new list: then the honest list gets a new grant.
That grant carries replaces, the digest of the live grant it supersedes (an
optional UploadGrant field, omitted otherwise, so older grant digests are
unchanged). The relay then drops its unreceipted reservation for that grant;
it refuses the replacement when that upload has a receipt or belongs to another
miner, round or relay, and a wrong replaces leaves the old reservation blocking.
Upgrade order: deploy relays before the master. A master that emits replaces
in an UploadGrant (commit e3e5343 onward) is rejected by a relay built before
that commit (extra fields are forbidden). Roll relays first, then the master.
A relay whose granted chunks do not assemble to delta_hash answers 400
AssemblyMismatch, records it on the upload and skips it in later recovery.
Retention release waits for finality, disputes and vesting; signed extensions,
overlapping old/new keys and drain preserve existing retrieval authority.
Relay configuration is RelayConfig in src/hypertrain/relay/app.py:
run_id, master_public, master_url, signed registry/network_manifest,
relay_id, region, active_key, signing_files, observer_public_keys, plus
s3_endpoint/s3_bucket/s3_prefix/s3_region or local_backing.
RELAY_CONFIG selects its JSON; RELAY_SECRETS selects mounted signing files,
drain.token and S3 object.json. Do not mount coordinator/admin keys into relays.
Authoritative external backing is separate from disposable pod cache.
Operator manifests are deploy/k8s/base and overlays eu, us, apac, local.
Render before considering deployment:
kubectl kustomize deploy/k8s/overlays/euDeployment expects operator-created relay-contract ConfigMap and
relay-runtime-v1 Secret; validate the pinned image against current source,
signed contracts, TLS, policy enforcement, backing credentials and cluster
resources first. The independent local r2 test imported the closed historical
source109 image and passed actual CNI/TLS, upload/fixture-master acceptance,
restart, replica/regional fallback, retention/GC and namespace denial; owned
cleanup and all native unit terminals are verified. Its outer caller exited1
on early READY without ownership, despite runtime PASS and a legitimate VERIFIED
cleanup barrier. The isolated caller phase fix passed two native-event cases;
it does not rewrite that failed caller or certify current product caller bytes.
The product shared-base policy now permits only gateway namespace AND pod
TCP8443 (Service443 targetPort8443), retaining443/default deny; one actual
four-overlay render regression passed. APAC actual runtime, L0 finality and
full D3/restored funded service integration remain unproven.
Deployment is
operator-managed Kustomize, not a custom reconciliation controller.
The preparation tool exists; do not recreate keys/configs manually or substitute
live source for its frozen archive. From the repository root, supply an
operator-reviewed freeze and an unused output directory through REVIEWED_FREEZE
and PREPARATION_OUTPUT; set CPU_GENESIS_UNIX to the approved synthetic genesis
time. These variables are inputs, not shipped authority. The base recipe is:
flock /tmp/hypertrain-network-cpu.lock nice -n 19 taskset -c 0-3 \
env OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 PYTHONDONTWRITEBYTECODE=1 \
uv run --frozen python scripts/network_gpu_prepare.py \
--freeze "$REVIEWED_FREEZE" \
--output "$PREPARATION_OUTPUT" \
--cpu-genesis-unix "$CPU_GENESIS_UNIX"This is a retained executable recipe, not permission to overwrite or rerun its
existing output. Preparation rejects an existing output, altered freeze or live
hypertrain modules loaded before frozen imports. New execution needs an unused
output and a freshly reviewed freeze. The archive binds 162 staged source files;
canonical qualification and operation-wrapper maps remain distinct from that
staging map. Installed dependencies are not claimed to be bundled in the archive.
Output includes prepared.json with
status="LOCAL_PREPARED_NOT_LAUNCHABLE"; public/ contains signed manifest/full
TestGenesis, dataset/tokenizer/proofs, full initialized state/optimizer/EF/v0,
CA/server certificate chains, public configs and hash index
public/index.json. private/ directories are0700; key/seed/token/TOML
files0600, excluded from the public index. Synthetic deterministic identities are
not production credentials. cpu-service/ is a conserved CPU genesis store;
production-service/ is empty. Join requests exist as signed inputs, but no
join/trial is accepted and no ACTIVE history is created. CPU genesis initialization
is not a training trajectory, qualification or hidden extra H execution.
Candidate preparation adds the approved input pair to the same tool. Set
CANDIDATE_OUTPUT to a distinct unused directory:
flock /tmp/hypertrain-network-cpu.lock nice -n 19 taskset -c 0-3 \
env OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 PYTHONDONTWRITEBYTECODE=1 \
uv run --frozen python scripts/network_gpu_prepare.py \
--freeze "$REVIEWED_FREEZE" \
--output "$CANDIDATE_OUTPUT" \
--cpu-genesis-unix "$CPU_GENESIS_UNIX" \
--candidate-driver 580.95.05 --candidate-driver 580.159.03The recipe's 580.95.05/580.159.03 values are qualification INPUT only,
not observed drivers or paid GO. Actual FIRST4 attempt008 subsequently ran on
two hosts BOTH580.95.05 and passed same-driver bitwise qualification; this is
not evidence for the proposed cross-driver pair. Candidate changes only the
profile across copied frozen sources under new run/maps/source receipt; qualified
false and spend_authorized false remain explicit. Normal execution is
4 qualification +96 shadow +16 live =116,58 per host. Ten additional fault-trace
equivalents are contingent, giving a hard ceiling of126,63 per host, including
qualification. Unused fault capacity is not fault-proof completion or permission
for free retries. cu130/CUDA13.0/image contract does not change by supplying candidates.
Prepared public remaining-authority fields are NOT_PRESENT for observed qualification,
accepted trials/admission, current production contexts, financial/rate admission,
runtime/service-controller admission and resolved launch contract. Original
validators reject RUNTIME_AUTHORIZATION_REQUIRED,
SERVICE_CONTROLLER_NOT_ADMITTED and QUALIFICATION_SOURCE in their respective
unadmitted scopes. Local synthetic source/index receipts do not satisfy those
runtime predicates.
Attempt008's actual same-driver qualification and verified paid cleanup are separate rescued evidence, not promotion of those prepared fields. The funded 116-operation continuation and live roster/service capacity remain unproven.
build_runtime/configure_dispatch and the dynamic verified-beacon context
factory are implemented, but need exact current owner receipts, verified image,
observed role/host qualification, backend-before-run bootstrap, accepted subjects
and shared cancellation/clock installation. No manufactured context plan, source
qualification row or synthetic ACTIVE may bypass them. Four same-instance
qualification executions must precede the112 normal continuation operations;
up to ten further fault equivalents remain contingent within the126 ceiling,
admitted staging/runtime/rescue/cleanup budget and original deadline.
Continuation accepts only the owner-signed reviewed record, with its rescued
same-instance qualification, exact source/profile/image subjects and all signer
identities validated before promotion. There is no raw-plan fallback. With the
operator-supplied REVIEW_JSON, OWNER_SS58, verified BEACON and unused
RUN_DIRECTORY, the existing entrypoint is:
uv run --frozen python experiments/gpu_network_v2/orchestrate.py continue \
"$REVIEW_JSON" --owner "$OWNER_SS58" --beacon "$BEACON" --run-dir "$RUN_DIRECTORY"The joined signed CLI intake/flat-store qualification/identity preflight is approved at metadata scope only. It does not establish production bootstrap, live TLS, actual CUDA qualification, public ACTIVE12 or current decoder service integration. This command is not a launch authorization.
D2-QUOTE-VERIFY.md corrects historical evidence to two advertised595.84 offers,
54488349/machine153074 and54730345/machine24815. One-hour/80GB/30GB quoted
2.02+1.80 plus one5USD buffer is 8.82USD conditional, not verified current
total cost: prior experiment debit/pending charges are unknown. That historical
pair does not price the580 candidates. Before execution, refresh authenticated
account, complete instances/volumes/charges and exact offers; attribute liabilities
and obtain explicit bounded GO. No such admission or provider action is credited
to preparation.
Later relevant store/source changes invalidate that reviewed execution-source closure. The publication inventory identifies eight stale D2 source entries; the historical candidate freeze does not cover the new bytes. Regenerate/review effective staged archive/map, canonical qualification map, operation-wrapper map and owner receipt subjects before launch. Preserve old hashes/artifacts as history; do not silently patch the frozen tree or infer a new image build from package/runtime repairs.
Policies and wire fields: src/hypertrain/protocol/messages_v2.py.
CLI/config: src/hypertrain/miner/{cli,core}.py. Service setup:
operator.md. Teacher configuration: teacher.md.
Dataset R2 credentials/publication: r2.md; relay object credentials are
the separate S3Credentials contract in src/hypertrain/data/store.py.
The portable D3 capability is restored-finalized-admission for the original
OD MLM run
587fc10ec7aeee92e235d39c9332c763e16cde05e5e13a8562204c700adce325.
Its validator independently checks original owner manifest/TestGenesis, signed
trial challenges/proofs/screens/finalities, saved artifacts, conserved funding
and current eligibility. Original dual-signed JoinRequest and signed
EscrowLock envelope bytes are missing: this restores finalized admission
authority, not complete historical join/lock intake. It neither fabricates those
signatures nor includes later production checkpoints. Source:
network_authority_snapshot.py
Bundle, _authority, bootstrap. Root must separately admit the exact bundle
and image hashes; portable authority APPROVE is not D3 execution PASS.
Activation status at this documentation correction:
| Gate | Current scope and remaining work |
|---|---|
| D2 GPU | FIRST4 attempt008 same-driver580.95.05 two-host bitwise CUDA qualification PASS, four rounds/eight workers; workload_allowed=false. Public CLI CPU evidence separate. Cross-driver qualification, funded116 continuation, current production admission and complete live GPU graph unproven |
| D3 Kubernetes | Independent local r2 import/source109/TLS/CNI/upload/fixture-master/failover/GC/deny runtime PASS and owned cleanup verified. Historical outer caller exit1 retained; isolated READY phase fix two native cases PASS. Product policy four-overlay rendered regression one PASS. APAC runtime, L0 finality and full D3/restored funded integration remain unproven |
| Capacity | Bounded opening/job/audit/referee/rollback/input/aggregate/final metadata guards, owned accounting, terminal collector and native CPU fallback were previously reviewed. Current source requalification is pending after type/runtime changes invalidated the old112 pins. Genuine80 H2 execution remains unrun; eligible MATCH/apply/CAS and CPU verification remain pending. Fresh CPU approval is absent and root execution admission remains pending; heavy32 DENIED |
| Remaining staging/runtime | Executable paths now exist; fresh admitted source, observed host, owner runtime/service receipts and production context subjects are still required. Metadata/local readiness is not execution admission |
These statuses follow NETWORK-COMPLETION-MAP.md,
D2-DECODER-DRIVER-VERIFY.md, D2-CAPTURE-VERIFY.md,
D2-LAUNCH-PREP-VERIFY.md, D2-CANDIDATE-INPUT-VERIFY.md, D2-QUOTE-VERIFY.md,
CAPACITY-FINAL-INTEGRITY-VERIFY.md, D3-AUTHORITY-VERIFY.md,
D3-BUILD-ADMISSION.json and D3-POSTSTART-REAL-VERIFY.md in the network evidence
directory, superseded for local runtime scope by K8S-TRANSPORT-R2-RESULT-VERIFY.md,
K8S-CALLER-READY-PHASE-FIX-VERIFY.md and
K8S-RELAY-PRODUCT-INTEGRATION-VERIFY.md. FIRST4 scope follows
qualification-usd50-20261009T181257Z/NEXT30-008-RESULT-VERIFY.md;
MINER-PUBLIC-CLI-VERIFY.md supplies distinct CPU-only interface evidence.
Keep heavy32 SERVICE_RUNTIME_NOT_ENFORCED denial until independent runtime
memory/CPU/deadline enforcement, bounded consumer reads, original-roster guards,
durable attempt charging and explicit source-bound requalification pass. Codec
approval and allocator limits cannot grant execution. FIRST4 CUDA008 and local
r2 Kubernetes transport now have scoped PASS evidence, not full network/service
integration. APAC runtime, L0 finality, full D3 and funded116 remain unproven;
live OpenRouter/R2 credentials remain deferred. Historical Phase A/B GPU results
retain only their original scope. Root's ledger is20/23 with allocation80, CPU
verification and final push/CI open; no80 execution or publication occurred in
this documentation update. Earlier D3
HostConfig false/null rejections, NEEDS-FIX
reports, frozen local image and historical595.84 quote remain chronology, not
current missing kernel/path implementation or present availability claims.
Bounded opening denial approval is specifically
challenge/store.py:_service_boundary_v2 / open_round_v2, as reviewed in
CAPACITY-INTAKE-VERIFY.md; it does not qualify heavy execution.