Skip to content

feat(validator): gate UID30 launch on a reviewed one-miner 100/0 preview - #149

Merged
wallscaler merged 4 commits into
mainfrom
codex/uid30-launch-preview-20260828
Aug 28, 2026
Merged

wallscaler merged 4 commits into
mainfrom
codex/uid30-launch-preview-20260828

Conversation

@wallscaler

@wallscaler wallscaler commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Outcome target

Provide one operator-reviewed, default-no-write path from fresh SN39 miner evidence to one UID30 mechanism-0 weight submission. The only accepted vector is one current registered Cathedral miner at u16 weight 65535, with no burn destination and zero burn mass.

This PR does not register a miner, provision compute, publish an image, announce an axon, sign during preview, deploy a validator, or submit weights by itself.

Exact outcome contract

  • Network: Finney, netuid 39, mechanism 0.
  • Signer: wallet cathedral, hotkey default, current UID exactly 30, pinned public hotkey 5FF6FtDUhn7XdPYmEdH5XjLAmLfmwLTCNVBgcrj3A4sstwaw.
  • Recipient: current UID for pinned miner hotkey 5CJTD6znKPfsQFjPQtTvRiHHcLtpXJr7P16dF4VuEtx9qn7G.
  • Destinations: exactly [verified_miner_uid].
  • Wire weights: exactly [65535].
  • Burn destination: absent.
  • Burn share: strict float 0.0. Booleans, an extra burn key, a second target, self-pay, or owner-pay are refusals.
  • Chain call: SubtensorModule.set_mechanism_weights with the pinned version key.
  • Attempt policy: one reviewed signed attempt. An ambiguous result never authorizes a replacement.

Acceptance targets

Preview succeeds only when all of these are proven from current finalized state:

  • The pinned Cathedral signer is UID30, has a validator permit, meets the live stake threshold, and is outside the weight cooldown.
  • Raw last_update, rate limit, mechanism count, version key, min weights, max-weight limit, commit-reveal state, next epoch, and subnet owner match the launch contract.
  • The pinned miner is registered at one non-UID30 UID and has a complete mortal-era UID replacement-safety proof.
  • The exact finalized-head metagraph contains one serving axon for the miner.
  • The axon is a canonical global IP on TCP 8081. Private, unroutable, malformed, or wrong-port endpoints fail before any network request.
  • The QVL executable digest is 35bb55f89f411d5dcf5f72be90488e999ee68c41dfc0429a0dcb8cc2b448b6bb.
  • The quote binds the nonce, miner hotkey, and observed TLS SPKI. Canonical SAT replay returns positive work against the same endpoint.
  • The canonical writer lock is available, no submission is pending, and the one-shot launch budget is pristine.

The preview is canonical owner-only JSON with an owner-only detached SHA256. Its inclusion policy is bounded by both the reviewed epoch window and 15 minutes.

Submit additionally requires the reviewed SHA256, --confirm-uid30-launch, --assert-exclusive-writer, and the canonical /var/lib/cathedral-validator runtime root. After evidence collection, submit must re-read finalized state, reject a regressed or unrelated head, re-resolve the reviewed block hash, re-resolve the miner endpoint, and re-check the evidence anchor before signing.

Final success requires all of these:

  • The exact signed extrinsic hash exists once in a canonical finalized block.
  • The decoded signer, call, netuid, mechanism, version, destination, and u16 weight equal the reviewed contract.
  • Historical execution succeeded.
  • Inclusion-time UID mappings, validator permit, subnet owner, commit-reveal state, epoch, block window, and time window match.
  • Historical mechanism-0 storage equals [[verified_miner_uid, 65535]].

Signed-ambiguity recovery target

cathedral-uid30-launch recover is read-only with respect to chain state. It never signs or submits.

  • It validates the exact reviewed preview, launch identity, attempt ID, signed hash, mortal era, and wire vector.
  • It searches only the authorized finalized block window for that signed hash and exact decoded call.
  • PASS re-proves the finalized call and historical storage before finalizing the local journal.
  • FAIL is recorded as a durable positive contradiction and blocks further recovery.
  • NOT_PROVEN stays fenced.
  • EXPIRED_WITHOUT_INCLUSION is allowed only after every block in the mortal era was finalized and read with no exact inclusion. It retires the attempt without retrying or spending another launch authorization.
  • An already-finalized journal is re-proven from chain before ALREADY_FINALIZED is reported.

Both dedicated and generic restart recovery use one strict zero-burn UID30 identity validator before archive reads or local finalization. It requires the pinned signer and miner, canonical SS58 owner, exact digest and report ID, exact exclusivity assertion, reviewed and fresh miner bindings, one full-weight target, and strict non-boolean numeric types.

Implementation

  • Replace the older closed-tempo serving census with an exact current-finalized-head axon census.
  • Apply global-IP and TCP-8081 gates before QVL or SAT contact.
  • Add the 15-minute inclusion policy and canonical reviewed-block revalidation.
  • Bind signed-attempt identity to the reviewed preview digest, zero-burn contract, current owner, inclusion policy, and evidence.
  • Require canonical exact-call proof plus historical storage readback before local finalization.
  • Add finalized-read-only recovery for receipt loss and post-broadcast ambiguity.
  • Preserve public status parsing for a recovered zero-burn vector by omitting the numeric burn segment when no burn UID exists.

Verification

  • Exact commit 095b488fe3404b432cfade1bd24fbf0ce326c606.
  • Focused UID30 launch and recovery suite: 31 passed.
  • Shared journal and recovery slice: 69 passed. One existing macOS-only assertion still expects Linux errno name ECONNREFUSED but receives OSError[111]; the same failure reproduces on the clean PR base.
  • Ruff critical checks, format check, Python 3.12 compile, and git diff --check pass.
  • Independent adversarial review covered exact signed-call proof, finalized readback, recovery without retry, finalized-head census, head regression, pre-dial endpoint gating, malformed zero-burn identities, pre-finalization ordering, and recovered-status parsing. No source-level blocker remains.
  • CI must rerun on this exact head after push.

Deployment target

  1. Merge PR 148 and this PR only after required review.
  2. Publish and verify the immutable linux/amd64 miner image digest.
  3. Deploy one bounded Intel TDX Worker and prove its public TCP-8081 endpoint.
  4. Register the pinned miner and announce the exact verified axon as separately reviewed mainnet actions.
  5. Stop every other process or host able to write UID30.
  6. Generate a fresh no-write preview, inspect every identity, evidence, vector, validity, and writer field, then preserve its detached SHA256 out of band.
  7. Present the exact chain action packet before any signed submit.
  8. After explicit final approval, submit once and preserve the exact receipt, finalized proof, storage readback, and journal.

Rollback and failure behavior

  • Before signed intent, only the unsigned reservation is cleared. No chain mutation occurred.
  • After signed intent, receipt loss, or RPC ambiguity, keep the journal fenced and use read-only recovery. Never submit a replacement.
  • After a positive historical contradiction, keep every writer stopped for operator investigation.
  • After finalized readback, the one-shot launch budget is spent. Reversing weights is a separate reviewed chain action.
  • Deleting a preview or stopping this command never changes finalized chain state.

Proof boundary and next gate

This is implemented, locally verified source. It is not merged, deployed, live-QVL-proven, live-SAT-proven, validator-accepted, on-chain, or rewarded. Remote writer exclusion remains an explicit operator assertion.

Next gate: merge and publish dependencies, run one live miner, then generate a fresh no-write preview whose detached digest and exact action packet are reviewed before any UID30 signature.


Note

High Risk
Introduces a gated but real Finney weight broadcast with strict one-attempt journaling; mistakes or ambiguity handling directly affect on-chain UID30 weights and operator recovery posture.

Overview
Adds cathedral-uid30-launch (preview / submit / recover) for a one-shot SN39 mechanism-0 weight from pinned UID30 (cathedral/default) to a single TDX-verified Cathedral miner at u16 65535, with no burn.

Preview builds owner-only canonical JSON plus a detached SHA256 after live chain preflight, endpoint census (public IP, port 8081), QVL/SAT collection, and writer-lock checks—no sign or broadcast. Submit requires the reviewed digest, --confirm-uid30-launch, --assert-exclusive-writer, and the canonical runtime root; it revalidates head/miner evidence, reserves one attempt in the canonical ambiguity journal, signs once, and finalizes only after exact extrinsic proof and historical Weights storage match. Recover is read-only for journaled signed intents (including expire-without-inclusion).

scaffold/validator_thin gains pinned UID30 launch constants, _strict_zero_burn_uid30_owner, and _classify_zero_burn_uid30_historical_weights so generic pending/finalized recovery treats this launch like other authority submissions while allowing burn_uid: None in recovered status text.

Reviewed by Cursor Bugbot for commit 2d2d0b4. Bugbot is set up for automated code reviews on this repo. Configure here.

@wallscaler
wallscaler requested a review from ai-hpc August 28, 2026 11:13
@wallscaler

Copy link
Copy Markdown
Contributor Author

@codex review

Please review exact head 5e06273 against its stated outcome: default no write, exact UID30 signer, one pinned verified miner, exact [65535], no burn destination, digest-bound operator confirmation, common single-writer journal, and finalized readback. Treat miner registration, axon announcement, deployment, and remote-host exclusivity as explicit external gates, not claims of this PR.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5e062734a6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1090 to +1091
if fresh.block_number > int(preview["valid_until_block"]):
raise UID30LaunchError("reviewed preview expired before submission")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reject heads older than the reviewed preview

If the sign-time RPC returns a stale finalized head below valid_from_block, while the signer, miner mapping, and last_update remain unchanged, this check accepts it because it enforces only the upper validity bound. The submission path can then sign a mortal extrinsic anchored before the digest-reviewed interval, so require fresh.block_number >= preview["valid_from_block"] as well.

Useful? React with 👍 / 👎.

@wallscaler

Copy link
Copy Markdown
Contributor Author

@codex review

Please review exact head 095b488fe3404b432cfade1bd24fbf0ce326c606.

Outcome target: one reviewed UID30 attempt may assign mechanism 0 exactly [verified_miner_uid] / [65535] with no burn destination. Preview remains no-write. Any signed ambiguity remains fenced and is handled only by finalized read-only recovery.

The five prior blockers are addressed:

  1. Final success now proves the exact signed hash, decoded signer and call, historical execution, inclusion-time bindings and policy, plus exact historical storage.
  2. Signed ambiguity has a bounded read-only recovery command. It never signs or resubmits. PASS, FAIL, NOT_PROVEN, and exhaustively absent mortal-era outcomes remain distinct.
  3. The serving-axon census is taken at the validated current finalized head.
  4. Regressed heads and reviewed hashes that no longer resolve canonically are refused.
  5. Global-IP and TCP-8081 checks run before any QVL or SAT dial.

Adversarial follow-up also closes malformed zero-burn generic recovery, prevents local finalization before strict identity validation, re-proves already-finalized journals from chain, and preserves recovered zero-burn status parsing. Exact-SHA focused tests are 31 passed. Critical Ruff, repository format scope, compile, and diff checks pass. One pre-existing macOS errno-name assertion remains outside the diff.

No miner registration, deployment, axon announcement, signature, weight submission, or spend occurred.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 095b488fe3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

expected_subnet_owner_hotkey=str(identity.get("burn_hotkey") or ""),
expected_subnet_owner_hotkey=str(
identity.get(
"subnet_owner_hotkey" if zero_burn_uid30 else "burn_hotkey"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Verify storage before finalizing generic UID30 recovery

When canonical validator startup recovers a pending zero-burn UID30 attempt, this branch lets it rely on _classify_finalized_receipt and then call _finalize_common_submission without performing the historical Weights query required by the dedicated recovery path. Consequently, a restart can report a recovered finalization even when UID30's mechanism-0 storage at the inclusion block is not exactly [[miner_uid, 65535]]; run the same historical storage readback before finalizing this zero-burn path.

Useful? React with 👍 / 👎.

Comment thread cathedral_thin/uid30_launch.py Outdated
version_key=VERSION_KEY,
wire_uids=[state.miner_uid],
wire_weights=[W],
uid_hotkeys={state.miner_uid: MINER_HOTKEY},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Bind the validator UID at inclusion

If the pinned validator hotkey is remapped away from UID30 before inclusion, this proof still passes its identity checks because uid_hotkeys contains only the miner mapping; the classifier merely verifies that the signer hotkey is uniquely registered and permitted, not that its inclusion-time UID is 30. If UID30's historical storage already happens to contain the reviewed vector, the subsequent storage query also cannot expose the remap, so include the expected UID30-to-signer binding in the inclusion proof.

Useful? React with 👍 / 👎.

@wallscaler

Copy link
Copy Markdown
Contributor Author

Exact-head repair outcome

Commit: 6d41e30

Outcome target

A UID30 launch may finalize only when the exact signed one-miner [65535] call is proven at inclusion, the Cathedral validator hotkey is still bound to UID30 at that same receipt block, and historical mechanism-0 storage at that block is exactly [[miner_uid, 65535]]. Archive uncertainty must remain NOT_PROVEN and preserve the no-retry fence. A concrete signer or storage mismatch must become terminal FAIL before finalization.

Finding dispositions

  • Lower valid_from_block bound: already resolved on prior exact head 095b488. Preview validation fixes valid_from_block == reviewed finalized block, _fresh_state_matches_preview rejects a finalized head below that reviewed block, and the regressed-head test remains green.
  • Inclusion-time UID30 signer binding: fixed. Both primary readback and generic zero-burn recovery now require {miner_uid: pinned miner, 30: pinned Cathedral signer} from the inclusion metagraph. The real classifier passes the exact mapping and fails when an attacker occupies UID30 while the true signer remains registered and permitted at UID62.
  • Generic zero-burn recovery storage proof: fixed. Recovery queries SubtensorModule.Weights at the exact receipt block with [get_mechid_storage_index(39, 0), 30] before recording PASS or finalizing. Exact row mismatch records FAIL and leaves the signed attempt fenced. RPC/archive failure remains NOT_PROVEN.
  • Primary-path storage proof: retained and now explicitly tested for the same historical module, storage key, parameters, and receipt block hash.

Verification

  • Focused exact-head suite: 36 passed.
  • Required publisher plus integration/reward-boundary slice: 270 passed, 4 skipped.
  • Adjacent receipt/recovery slice: 40 passed, 1 deselected; the deselected test is the pre-existing macOS errno-name mismatch.
  • Ruff check and format check: 127 files passed.
  • Compile-all, git diff --check, and diff secret-pattern scan passed.
  • Claude Fable exact-patch review raised two test-evidence gaps. Both were addressed by real-classifier and exact historical-query assertions. No surviving source finding remains.

Local environment boundary

A broad macOS run reached 1882 passed before 21 pre-existing platform/install failures and 4 skips. Failures were macOS date/sed behavior, missing /usr/bin/python3.12, the known errno-name assertion, and the unavailable installed cathedral distribution. The all-extras install also observed upstream GitHub archive bytes hashing to 02b95787... while the repository currently pins 559dd8e3.... Exact-head GitHub CI is the merge gate for this external drift.

Next gate

Keep this PR draft and stacked on #148. Require exact-head GitHub CI plus review, then merge only after #148. No wallet access, signing, submission, weight write, deploy, or CyberGym change occurred.

@wallscaler

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: 6d41e30883

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@wallscaler
wallscaler changed the base branch from cursor/independent-v1-composer-ddda to main August 28, 2026 13:23
@wallscaler

Copy link
Copy Markdown
Contributor Author

PM after #148 merge (0350dcd). Retargeted this draft's base to main so it is not stacked on the merged #148 branch.

Still needs a rebase onto 0350dcd (includes 681cbf3 fail-closed pre-spend). Keep draft. Do not merge before #150. No --confirm-uid30-launch, no weight write, no emissions claim.

100/0 is the Cathedral-owned miner (5CJTD6…), not jaynejacoba18-prog / sandbox #155. Bearer mint + enroll 522 stay a separate operator gate.

Did not ping Astro.

@cursor
cursor Bot force-pushed the codex/uid30-launch-preview-20260828 branch from 6d41e30 to da1c157 Compare August 28, 2026 13:25
@cursor

cursor Bot commented Aug 28, 2026

Copy link
Copy Markdown

Rebased onto main at 0350dcd8025c99ed3d788d14fe773ce0f92de613 (PR #148 merge, including the 681cbf3 fail-closed independent_v1 gates).

New head: da1c15710c87de1e9a1908525ba0e735ddc272c9

The UID30 launch/recovery slice was replayed without squash (3 commits). Independent_v1 fail-closed gates from #148 are unchanged. This remains draft; base is main. Exact-head CI is running on this head. Merge waits on #150 plus exact-head CI.

No wallet access, signing, --confirm-uid30-launch, deploy, or CyberGym change.

@wallscaler

Copy link
Copy Markdown
Contributor Author

PM after #150 merge (b4cbe46, axon announce gate).

Live cathedral.computer catalog unchanged (validator source only — no site/PolarIS prod deploy from this). Homepage still Sealed receipt caption. No serve_axon, no wallet, no axon broadcast from the merge itself.

Next ship order:

  1. Rebase this draft onto main tip b4cbe46 (cloud agent queued). Keep draft.
  2. Exact-head CI green on the rebased head, then merge feat(validator): gate UID30 launch on a reviewed one-miner 100/0 preview #149 as source only.
  3. PolarIS #1163 stays draft: pin CATHEDRAL_SN39_MINER_IMAGE to ghcr.io/cathedralai/cathedral-sn39-audit-miner@sha256:afdc51a931dec1433981166033cffcebecb8fc3d432b65a6500063bd6a06b032 — do not roll alembic 081 / this envelope onto Cathedral PolarIS prod (source_sha still 8e1dc3d).
  4. Live path still gated: register pinned miner → PolarIS TDX worker + public :8081 → no-write axon preview → one announce → then UID30 100/0 preview. No --confirm-uid30-launch until that packet exists.

CyberGym #146/#147 stay held. #155 bearer / enroll 522 still operator-mint. Did not ping Astro.

Add a default-no-write command that pins cathedral/default to Finney SN39 UID30, verifies one registered serving miner with the reviewed QVL and canonical SAT work, and emits an owner-only canonical preview plus detached SHA256.

Require current permit, stake, cooldown, weight policy, UID replacement safety, a pristine canonical launch journal, the canonical runtime root, an explicit all-writers-stopped assertion, and an exact reviewed digest before the sole signing path can build [65535]. Recheck chain state after QVL/SAT, journal signed intent before broadcast, verify finalized readback, and leave ambiguous attempts fenced against retry.

Cover wrong identity, zero-burn enforcement, stale last_update, duplicate writers, digest mismatch, pre-sign cleanup, post-sign ambiguity, and exact u16 finalization.
Bind preview and submission to the current finalized axon, bounded inclusion window, exact signed extrinsic, and canonical storage readback. Add read-only signed-attempt recovery while refusing malformed zero-burn identities before any recovery mutation, so an ambiguous UID30 write never authorizes a replacement.
Bind the reviewed validator hotkey to UID30 at the receipt block and require generic zero-burn restart recovery to read the exact mechanism-0 storage row at that same finalized block before finalizing. Archive failures remain NOT_PROVEN, concrete row drift is terminal FAIL, and adversarial tests cover signer remap, primary and recovery storage mismatch, exact query coordinates, and no-write fencing.
@cursor
cursor Bot force-pushed the codex/uid30-launch-preview-20260828 branch from da1c157 to 996651c Compare August 28, 2026 13:37
@wallscaler

Copy link
Copy Markdown
Contributor Author

Rebased this branch onto current origin/main.

  • New head SHA: 996651caff7a4a3c1d213055147e1ff9d6e49dd9
  • Previous head: da1c15710c87de1e9a1908525ba0e735ddc272c9
  • Base now includes feat(independent): gate one verified miner axon announcement #150 merge b4cbe46d02519161e85467d7a2f04a39e34056fd (feat(independent): gate one verified miner axon announcement). Merge-base with main is that commit.

Conflict resolution: only pyproject.toml [project.scripts] overlapped. Kept both cathedral-independent-miner-announce from #150 and cathedral-uid30-launch from this PR. UID30 product files are unchanged vs the previous head.

This PR stays draft. Do not mark ready. Do not merge until exact-head CI is green and review is complete. Exact-head CI should rerun on 996651caff7a4a3c1d213055147e1ff9d6e49dd9.

No live chain/wallet action occurred: no serve_axon, wallet, --confirm-uid30-launch, weight submit, deploy, or CyberGym work.

Drive both the primary UID30 finalization path and canonical zero-burn recovery through historical Weights RPC failures. Prove the signed attempt remains pending or NOT_PROVEN, never finalizes, and cannot trigger a second chain call.
@wallscaler

Copy link
Copy Markdown
Contributor Author

@codex review

Refreshed-main exact-head merge gate

Exact head: 2d2d0b4f8c6d93826749178c2ec4b1253556898d
Base: main at merged PR #150 commit b4cbe46d02519161e85467d7a2f04a39e34056fd

Outcome target

A UID30 launch may finalize only when the exact signed one-miner [65535] call is proven at inclusion, the Cathedral validator hotkey remains bound to UID30 at that receipt block, and historical mechanism-0 storage at the same block is exactly [[miner_uid, 65535]]. Any archive uncertainty remains fenced without retry. A concrete signer or storage mismatch is terminal FAIL before finalization.

Rebase and provenance proof

A concurrent Cursor Agent rebase produced the clean remote chain 312fc6b -> 2a06bfa -> 996651c on b4cbe46. It was preserved. Range-diff proves those three commits match the locally reviewed rebase. The recovery and inclusion-repair patch IDs remain exact:

  • 095b488 -> 2a06bfa: 7f863f68c3935e87c2eb7417ab3c997ac638927e
  • 6d41e30 -> 996651c: d78995f938648f9bf887043d3ce9d3f1e758f04f

The feature commit's patch ID changed only because its pyproject.toml hunk now sits beside PR #150's retained console entry. Its three UID30 lines and all source/test additions are unchanged. The new archive-failure test commit was replayed by normal fast-forward with stable patch ID b0376afb98d5d0da9522d20276605b7313f452e2. No concurrent work was overwritten.

Final finding dispositions

  • Lower valid_from_block bound: closed. A regressed finalized head is refused.
  • Inclusion-time UID30 signer binding: closed against the real classifier, including attacker-at-UID30 with the signer permitted elsewhere.
  • Generic zero-burn historical storage proof: closed at the exact receipt block. Mismatch is FAIL; archive failure is NOT_PROVEN.
  • Primary historical storage proof: exact query coordinates and mismatch are covered. A new integration test proves RPC failure remains ambiguous, retains the pending no-retry journal, never finalizes, and a second submit call never occurs.
  • Generic recovery RPC failure: a new integration test proves NOT_PROVEN, pending attempt retention, no finalized ID, and no lane-state publication.

Claude Fable exact-patch verdict on the two new integration tests: PASS. No P0-P2 gap remains in that repair.

Local verification

  • Focused UID30 suite: 38 passed.
  • Shared publisher plus integration/reward-boundary slice: 270 passed, 4 skipped.
  • Adjacent receipt/recovery slice: 40 passed, 1 deselected; the deselected test is the known macOS errno-name mismatch.
  • Review-scope Ruff, changed-file format, compile-all, git diff --check, and diff secret-pattern scan passed.

Keep draft until exact-head GitHub CI and review complete. No wallet access, signing, weight submission, broadcast, deployment, axon announcement, or CyberGym change occurred.

@wallscaler

Copy link
Copy Markdown
Contributor Author

Final merge disposition

Exact head 2d2d0b4f8c6d93826749178c2ec4b1253556898d is merge-ready.

Acceptance evidence:

  • UID30 signer identity is bound at the exact inclusion block, not merely permitted elsewhere.
  • The exact signed call is one pinned miner with u16 weight 65535 and no burn destination.
  • Historical SubtensorModule.Weights at the receipt block must equal the exact one-row vector before finalization.
  • Concrete signer or storage drift is terminal FAIL.
  • Archive or RPC uncertainty remains pending or NOT_PROVEN, retains the no-retry journal, never publishes lane state, and never permits a second submit call.
  • Lower-bound and canonical-head checks refuse regressed or unrelated finalized state.

Verification:

  • Exact-head CI: Python 3.11 PASS, Python 3.12 PASS, Publisher suite PASS, Integration lane PASS.
  • Local focused UID30 suite: 38 passed.
  • Shared validator/integration slice: 270 passed, 4 skipped.
  • Adjacent receipt/recovery slice: 40 passed, 1 deselected for the known macOS errno-name mismatch.
  • Fable exact-patch verdict on the final archive-failure tests: PASS.
  • Scoped Ruff, format, compile, diff, and secret-pattern checks pass.

Trust boundary: this merge proves source behavior and tests only. It does not access a wallet, sign or broadcast weights, register a miner, announce an axon, deploy a machine, prove live TDX/SAT evidence, or establish finalized SN39 weights. Those remain separate operator-gated launch steps.

@wallscaler
wallscaler marked this pull request as ready for review August 28, 2026 13:43
@cursor

cursor Bot commented Aug 28, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_5f76feea-c30a-4d04-a86f-13d3ec2bf01f)

@wallscaler
wallscaler merged commit da26070 into main Aug 28, 2026
7 checks passed
@wallscaler

Copy link
Copy Markdown
Contributor Author

PM after merge (da26070 on main). Exact-head CI: Python 3.11/3.12, publisher, integration PASS.

Live cathedral.computer catalog unchanged (validator source only — no site/PolarIS prod deploy). Homepage still Sealed receipt caption. Fast Persistent Hetzner $0.15 available, no receipt; one-shot Fast off; GPU unavailable. PolarIS prod still source_sha=8e1dc3d / migration_head 080.

Next ship order:

  1. GHCR cathedral-sn39-audit-miner still returns 401 UNAUTHORIZED on anonymous pull of sha256:afdc51a931dec1433981166033cffcebecb8fc3d432b65a6500063bd6a06b032. Package admin: make it public, then workflow_dispatch verify-existing-public-digest.
  2. PolarIS #1163 stays draft. Pin that index digest only after anonymous verify. Do not roll alembic 081 / the envelope / PolarIS main c278dc4 onto Cathedral PolarIS prod.
  3. Live path still gated: register pinned miner 5CJTD6… → PolarIS TDX worker + public :8081 → no-write axon preview → one announce → then UID30 100/0 preview. No --confirm-uid30-launch until that packet exists.

CyberGym #146/#147 stay held. #155 bearer / enroll 522 still operator-mint. Did not ping Astro.

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