Repository navigation
fix(config): type the decided v2b block + sync worker-image pins in main's chain.toml - #457
Merged
Merged
Conversation
…lling and packed-source rule main still named worker-v2.0.0-rc11 (v2) and worker-v0.9.0 (v1) while the network has trained on rc15 / v0.13.0 since 2026-10-31 / 2026-09-28, so a validator or miner on main computed a different contract digest than the fleet (v2 34b72ba9 vs live 7bb581e3). Synced, each = the deployed value: - [training] train_image_digest (v1) -> 205ff682 (v0.13.0) - [training] budget_denomination_after(_block) = points+mv20 @ 9165600 - [round] funded_pod_image / worker_code_fingerprint -> rc15 pins - [v2.training] train_image_digest -> rc15 5d41d94b - [static_guard] packed_sources = reject @ 9169200 Resulting digests equal live: v2 7bb581e3, v1 13a588e8. Deliberately NOT synced: vote-resolved blocks ([round] rolling/epoch rollover, [scoring] era_king/tenure/cohort, [v2] from_block). Validators resolve those themselves and at least one external validator holds a different rolling lock-in (9378000 vs ours 9136800); typing ours could refuse it at start. Also not synced: operator-only knobs (funded money limits, host lists, generation providers, calibration) and blocked_hotkeys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…n main The repo ships both unarmed by design (test_contract_block_gate pins it); the deployment arms them. This PR now syncs only the worker-image pins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
…chain.toml The v2b-69630f92 vote locked in at 9486000 (85.9% of stake) and applied at the era start 9493200. Typing a decided block is behaviour-identical and frees its segment of the 128-byte on-chain readiness note (the same step taken for forfeit / margin-v2 on 2026-11-01). Without it, a validator whose rolling-era-king vote is still signalled (resolved from the chain rather than typed) overflows the note once it runs code that refuses to drop the v2b segment, and crash-loops at start (observed 2026-11-13 00:13 UTC on an external validator). Verified against that validator's note shape and ours; the typed-notice rule passes for a fresh node and a tally-locked node (the switch era has started). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
The shipped chain.toml now types image_decoupled_from_block = 9493200, an era start on the live 900 grid; the two tests that build a 7200/3600 seam from the shipped file would judge it on that grid instead. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
…te open Mirrors how the typed forfeit / margin-v2 blocks are handled (conftest and the per-file fixtures reset them to 0): every fixture that exercises the v2b VOTE (image_decoupled_feature lock-ins, note budget, after-pin schedule binding, pre-lock receipts) now resets image_decoupled_from_block to 0. The two tests that pin the shipped file's state assert mainnet typed 9493200 / testnet 0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
…-at-boundary rule) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
…g (v2b untyped) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
…o-live Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
The repo file ships rolling and v2 undecided (3600 grid), where 9494100 is not a settlement boundary at all; the quantile-head alignment check needs the fleet's resolved grid, like test_knobs_ship_typed_on_mainnet. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
The shipped file now types [v2] image_decoupled_from_block=9493200; a fixture that pushes from_block far out must untype it or the loader's "precedes [v2] from_block" check fires before the one under test. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj
tensorlink-dev
added a commit
that referenced
this pull request
Nov 13, 2026
…as passed (#460) check_calendar_launch trial-loaded the config with v2 armed at the era AFTER the finalized head — correct before the date, wrong after it (the real block is in the past: mainnet 9399600). With #457 typing [v2] image_decoupled_from_block = 9493200, every node that pulled main refused to start: "image_decoupled_from_block=9493200 precedes [v2] from_block=9500400". Past the date (chain time at the finalized head), the first poll's resolve_calendar_launch parses the config at the real block and refuses one that cannot load there; an unreadable head timestamp keeps the trial. Claude-Session: https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
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.
Owner-approved 2026-11-13 ("Go"). Merge + announce only on the owner's word — validators that pull main get these values.
What this fixes
An external validator crash-loops at start:
Decided votes had been typed into the operator's deployed
chain.tomlbut never into main, so main's file left the on-chain readiness note too long on a node whose rolling-era-king vote is still signalled (resolved from the chain, not typed). New code refuses to start rather than silently drop the v2b vote.Changes
[v2] image_decoupled_from_block = 9493200— the decided v2b switch, typed (locked 9486000, 85.9% of stake; applied at era start 9493200). Behaviour-identical; frees its note segment. Same step as forfeit / margin-v2 on 2026-11-01.[training] train_image_digest(v1)43c07d42205ff682[round] funded_pod_image5d41d94b[round] worker_code_fingerprint33b0d42f2d8261aa[v2.training] train_image_digest2fd193ca5d41d94bVerified (
python -P, no torch, against the live activation records)require_vote_pin; v2 contract digest = live7bb581e3.After merge: instruction to validators
Pull main, keep your state files (
validator_state.db,cascade_state.json,warm_start_init.json,activation_*.json), restart. No hand edits.Deliberately not synced
budget_denomination_after/packed_sources: the repo ships them unarmed by design (test_contract_block_gate); the deployment arms them.blocked_hotkeys.🤖 Generated with Claude Code
https://claude.ai/code/session_01BMT4D7eZUKUF2gocYLVFmj