diff --git a/docs/plans/counter-asic-3-status.md b/docs/plans/counter-asic-3-status.md index 437af07b9..1f7b3643a 100644 --- a/docs/plans/counter-asic-3-status.md +++ b/docs/plans/counter-asic-3-status.md @@ -499,6 +499,12 @@ THE ADVERSARY LANE's F05 PRICING (20:00 BST, section 17 at 319e79c6a, ahead of 2 THE SIXTIETH LANDING, THE LOCK AND THE FINAL TREE (20:0x to 20:1x BST). The sixtieth landing on master at 36d9ccc7. THE FIRST LOCK AFTER THE OUTAGE: checkpoint 270 at 19:51:37 on build-1's seed and hand together (block 63d82e57, blue score 7,949, 63.6 percent of total weight signing; 269 the same second; 264 backfilled at 19:56); the seed active with latestLocked 270 and next index 285 at 20:06; the kind "final" (rule v4 never on devnet-4, no recovery lock on this chain). 7cfa422a: the steward's six cells green at 19:55, the miner suite 31 green on build-2, the pair placed on both boxes (igneumd 23ee1b71), the live canary on build-1's seed parsing every template (49 in 60 s at DAA 8,565, no refusal, no NODE SLOW; the 2.0.0 miner on the same seed refusing every template of this epoch); the roll per main's correction. LANE D's SECOND CHAIN-PATH FAULT (20:0x): accept::is_class_v4_shape also compared `mix`, and a width-4 class carries mix one-hot on 4 words (LoadClass::era setting it from the drawn width), so with W = 4 pinned at genesis the chain's acceptance would never run (a'), (c'), (c'') or (c''') and the cap would be 32; under the crate's own predicate the width-4 class ran the class v2 parts only ((a') 0 of 1,581 candidates, r = 0.05, the accepted draw's minimum ratio p1 0.9832 under the floor, the bit read over 300 sigma in 36 percent of eras); every width-4 row of the day ran the full rule because the harness's predicate overrides mix; fixed in b24dfc162 (mix set aside in the predicate and the source rule, the test that the shape holds at every width; the genesis draw unchanged). Lane D's 6.11 read on 04442d9ca COMPLETE (on build-4 before the move): the full class string mx8+sh256x27+state+reg64c+nowin+fold+rw under the harness's predicate, width 4, 3,000 eras: r = 0.154, mean attempt 0.18, max 4, 0 exhausted, (c'') 0 and (c''') 0.23 percent of reaching candidates; width 1, 1,500 eras: r = 0.134, (c''') 0.07 percent; the bit-R read over 6 sigma in 22 percent of eras (6.10 without the fold 44), over 300 sigma 3.8 (19.9): the fold halves the class and does not remove it; attack-f8 on the mirror-valid subset at 2^20 on 64 seeds: 0 hot sets, 0 over 1.2x, worst 1.02x; PASS on the acceptance; build-4 cleared at 20:0x (the holders were the predicate bisect's census binaries at 4 to 8 threads and one reg64-alone probe exhausting 256 attempts per era; no cargo job). THE FINAL TREE: class-v6 ac86d791094610710de4531b051fdb906d84520f = b24dfc162 (5a095e64a A06's kernel hashes in identity.json, a thirteenth pack file, the pinned twelve byte for byte; 4b888682d F03 ProgramClass::V6 in the canonical enum, GENERATOR_VERSION_V6 = 6, V6_CLASS = mx8+sh256x27+state+reg64c+fold+rw with layer 8 off as the fifth flag, every v6 class drawing as generator 6 under an era, the packs reading program_class "v6"; F05 the reg64 full-chain address source in closed form r[s] ^ ror(P_s, 1) ^ (S ^ P_s ^ a[s]) with a[k] = rotl(r[k], (63 - k) mod 32), proven equal to the reference fold on every source register over 256 drawn register states and a real update sequence, the one-rotation-off form disagreeing, known-failed first, the verifier keeping the fold as the definition; the mix fix) plus the F05 measurement text as an exporter switch (igneum-pow export --reg64-prefix) and one lib test fix (program_classes counting class v6); the suite on build-7 green about 20:35; the generator-6 packs with ids and sha256s from build-5 by 20:40 to the node lane, the census hand and lane D; the prefix pack hl-v6-all-prefix.tgz for the fleet's F05 rows (a 5090 and a 4090 at stock by 23:30). The node lane's candidates: (c) re-cut on b24dfc162 as e0e3789b (the kaspa-pow arm mapping the chain's V6 to the crate's V6; core 184, consensus 143 green on build-1), re-cut again on ac86d7910 when mirrored; (a) and (b) on build-9 (core 184, consensus 143 green so far) with the 2.0.2 candidate e58d3270; the pin on master at 20:45. The adversary lane's F05 pricing (section 17, 319e79c6a): the cheapest form at the shipped shape the literal fold, at most 56 nJ per hash, the complete-machine bracket 1.42x to 1.49x same node, 1.7x to 1.8x a node ahead, the coupling buying the honest side at most 0.08x; the shipped class folds one register per load, untouched. Review B on master at dc7d6c60 (20:04; the landing lost three pushes to the one-a-minute batch landings, the merge tool now retrying a lost compare-and-swap twelve times without re-running the hook); the REV suite from tools/ci/review-suite.mjs (one case per regression, REV-F01-1 onward, the line verbatim, NOT RUN, the owner from the dispatch; --check in the gate refusing drift) with the founder's two rulings as dated notes through the recorder's --note mode and in F0's register as resolved, on master by 20:30; F02's tools/ci/proof-rule-bypass-check.sh in the node matrix, RED on 7cfa422a as the code stands until the fix rides 2.0.2; F03's one manifest and the build-from-manifest in CI by 23:00. F01 and F02's fix verdict-cache-fix-node 3f672661 green on build-7 at 20:07 (consensus-core 175, consensus 141, igneum-exec 79, p2p-flows 38): the verifier answers a fact record or a typed refusal, only InvalidBytes cached, a context refusal re-answered per carrier, the cache bounded 4096 with 8 in flight, the harness skip behind the harness-unsafe feature, a not-ready verifier retrying the block unmarked; F01 reproduced live on the pre-fix node by the redesigned succession run (20:01, build-2, both pairs embedded, phases at DAA 117, 256 and 374): below H right; at the window H1 refused the next-pair proof with the below-H text verbatim ("block 103" inside a block-241 refusal), a context refusal cached by proof hash; after the window the prior-pair proof refused on its cached statement text; the before-evidence, the rerun on the fixed node by 20:45; two harness facts fixed on key-succession 77072e110; the enforced lane's cell and batch on master at 7ade25b00. FIN-02 the night's first PASS under the procedure (the finality lane's own cell harness:finality-sim-fin02, master 0218d6bf1, batch fin-boundary-20261008-02; FIN-08 RUNNING under the model cell; the real-node half the node lane's). GOV-03's first row (20:01): the shipped 2.0.1 seed pair rebuilt from a clean clone on build-8 with the same recipe: igneum-miner bit for bit (sha256 f922b216a726b01d); igneumd NOT (013986fecb2e77f4 against 6d03d0968c03e6a4, 57,040,848 B both, 60,022 differing bytes, string tables identical: a build id, symbol or section order, or a timestamp in a non-string section); PARTIAL, the build-id and sorted-link try on build-8 tonight; the 2.0.1 hive done (a16add6a, 20:02, six seeds, no packs), the Windows payload abb46d01 staged, the Setup on PC 2. The site: the home page at the edge since 19:58 (master 97951e6c: the one-click line, the four headings, the mission table, /docs, the finality row, the whole-machine sentence with the reconciled per-tier line; captures at 390 and 1440 px in both themes); the deploy's Vercel upload slow (6 min 30 s), not stalled; the workers page republished 20:08 with nine box rows (build-5 to 9 reading down for want of /srv/workers/sources; the mini without a relay id); the publish's 8.1 GB peak resident a class for the build-server lane's script. MAIN'S TWO QUESTIONS ON THE 20:1x LINE, ANSWERED (20:1x BST): "layer 8 off as the fifth flag" in ac86d7910 is the flag's existence in the generator (CLASS_V6_FLAG_NOWIN = 1 << 4), not a decision; the frozen object's served class string keeps layer 8 ON (class_v6_family_flags 0xf) until the knee rows read; PC 1 cannot run them tonight, so main's wording is taken early in the register (row 18) and the freeze note: "layer 8 off at stock PASS (the honest side within one run's noise, the chip side minus 4 to 11 percent, the acceptance 6.10 PASS); the knee rows owed; the layer re-entered by a new class if they fail, left out by a new class if they pass". Checkpoint 270's "63.6 percent" is against TOTAL weight (every key in the window, the unpeered and refusing nodes included); the rule is two thirds of the anchored table and of the sliding table and a lock prints only when both pass; the exact fractions asked of the node lane by 20:40 and carried beside the 63.6 so no reader takes a lock as formed under two thirds. The workers page: https://dl.igneum.network/fleet-22adafa34bc2/workers.html, workers.json generated 20:03 UK with nine box rows (build-5 to 9 "no facts from this box yet" for want of /srv/workers/sources), client-rendered with max-age 0; the mini joins on its relay id. +LOCK 270's EXACT FRACTIONS (the node lane, 20:2x BST, from the seed's log). The lock formed on the CERTIFICATE received at 19:51:37.391 ("certificate at index 270 received: 21 of 38 voters, weight 4979 of 7076"): the node re-tests a received certificate's signers against the current table and the anchored one (finality.rs evaluate, the certificate arm: lock_test(s, active, total) && frozen_test(&keys)); 4,979 of 7,076 is 70.4 percent of the sliding table's total weight (the inclusive two-thirds floor 4,717), the active test trivially (active weight 1,264, the presence window 20 blocks of a stalled chain), the anchored test on those 21 keys against the table frozen at lock 249 (total 7,146 minus the leaves) at or above two thirds, or the arm does not lock. The LOCKED line's "signed 4498 = 355.8% of active, 63.6% of total, 61.2% of the table frozen at lock 249 (4372 of 7146)" is the seed's OWN local vote sum (19 votes seen, votesSeen 19) printed whichever arm locked; the hand printed 4,617 (65.2 percent) for the same reason. No reader takes 270 as formed under two thirds: it formed on 70.4 percent of the sliding total and at least two thirds of the anchored table by the certificate's signers; "total weight" (7,076) is every key with 30-day window weight at the checkpoint, the unpeered and refusing nodes' keys included; the lock kind final. A 2.0.2 log item: the LOCKED line prints the fractions of the signer set the lock passed on and the RPC's signedWeight follows the same set. Layer 8's wording taken verbatim into the D1 record and the freeze note (the frozen object keeps layer 8 on, class_v6_family_flags 0xf, CLASS_V6_FLAG_NOWIN defined and off). + +THE 20:2x LINES (BST). The sixty-first landing on master at fc11a091. The AMD and Intel energy lane is main's own (ab6a7c716e8c61a2e), not the hash lane's: its branch amd-intel-energy at 84e08df5c (one commit on master 4ce5f36b, documents only: docs/analysis/class-v6/amd-intel-energy.md and its directory with three job scripts, ze-power.c, an offline-compile prelude and an ISA summary; pre-push on build-1 81 of 83, the two reds environment-only) ready at 20:2x ahead of 21:15, handed to the landing hand; its content: GPU-03's AMD and Intel cells (the window's rate cost 0 percent on the RX 7600, minus 0.3 percent on the Arc B580, measured), ECO-05's named cause decomposed (per 32 bits of bus the same watts, 0.21x to 0.47x the random reads), hash-identical kernel candidates ranked (0 to about 10 percent), every efficiency row labelled kernel throughput or serving per review B. The research lane's PC 1 dependency: the runner held by the withdrawn grid job (fetched before its 19:34 withdrawal, running to its 600-minute cap while it waits for the card to mine); the paired 2 GiB read takes its default (the morning's +4 percent at 2 GiB served as that run); the AMD lane's RX 7600 metered ADLX knee waits on it (the one measurement ECO-05's batch 02 turns on: a 7600 knee at or under about 5.4 microjoules adds one sustainable world and no more); batch 02 lands on the modelled 7.2 / 5.4 cells labelled modelled. The genesis dataset: no founder figure by 20:00, the default applied as his word (4 GiB, decided), told to the research lane for the 21:00 landing at 20:2x. ADV-07 (20:15): the 32-lane genesis comparator placed and routed on adv-g (717,268 cells; 4.80 pJ per lane-op at ASAP7, 4.17 to 6.28; 3.36 at N5, 2.42 at N3; k 0.33 same node, 0.24 a node ahead), a floor (routed at a 30 ns constraint, the unpipelined crossbar path 27 ns, the resizer downsizing every cell, 9 percent under its synthesis row where the 8-lane cores at 12 ns sat 32 to 42 percent over); the honest 32-lane band 3.36 to 5.7 pJ at N5, k 0.33 to 0.55; the complete machine at the 32-lane floor: the GDDR7 board 2.1x same node (1.7 to 2.4), 2.4x a node ahead (2.0 to 2.7); the SRAM die 4.2x / 5.7x; the same-node honest bracket across the adversary's choices 1.5x (the placed 8-lane 18-family core) to 2.1x (the placed 32-lane floor) on the DRAM board, 1.9x to 2.6x with the stored-half hybrid; P04 FAIL at both ends; document 1d443dda7. Floor lane 2's third joint row: the served line "1.5x to 2.1x for the complete machine, 2.0x to 2.9x for the board alone, same node, placed, both lanes" (a node ahead 1.8x to 2.4x and 2.45x to 3.3x), the 2.9x end the resizer-downsized floor until its placed core32 (flops, 1.5 ns clock; synthesised 5.55 pJ ASAP7, expected placed about 7.8, 5.4 at N5, 2.4x) lands by 21:00; the reasons: the convention 0.6 of the gap, the core 0.4, now lane count and the clock the core is sized to. The hash lane's suite on ac86d7910: the lib, the fuzz, the review tests and v6fold pass; five tests in tests/packs.rs fail on F03's generator 6 (the pinned reg64 and era packs exported at generator 5), a test-only fix (the comparisons reading the pinned pack's generator, a04's check reading the pinned program's own verdict) by 20:40 with the suite by 21:05; the prefix pack hl-v6-all-prefix.tgz on build-1 (id 0x4de7b836cc40a4ea, the same program at generator 6). The node lane's candidates: (c) 1a21d1ec six suites green on build-1 (core 184, consensus 143, exec 74, miner 30, p2p 38, pow 19 on the generator-6 tree), its pair reading the freeze line (fingerprint f9030d60fe850875 = ac86d7910's tree, class-v6-review), rule 19 pairing, the artefact and canaries following; (b) 83bb8ea6 on build-9 p2p-flows 38 and kaspa-pow 19 green, its pair built; the 2.0.2 chain on build-9. build-5 to build-9 on the workers page: /srv/workers/sources existed on none and no collector was installed (provision.sh does not install it); the build-server lane put the collector, lib and the igneum-workers unit (15 s timer) on all five by 20:13; the mini reports through the relay agent or the app's worker report (the founder's LAN machine, unreachable from any box). GOV-03: a same-box second build on build-8 reproduced igneumd byte for byte (6d03d096 twice), so the build-1 against build-8 difference is cross-box only (a build-path or host-id class, not nondeterminism); the --build-id=none try at 22:00. The update-return lane: the F14 relay-and-publisher half green (lab-signing-20 362633c5, full gate 83: the publishers sign by channel with the lab root or the OTA key and refuse a cross; the agent refuses tasks beside a public engine; release rule 16 written); the UX-01 batch refused twice by rule 26 and re-gating; the MINING-ON lines for 2.0.1 on the 20:55 entry. Lane D on INT-18: family-gate.md carries no economics and will not (a typed band would be the F09 fault); the row's owners the research and adversary lanes, lane D's file the acceptance evidence; the 6.11 landing refused twice by rule 26 on the harness-map page (the regenerated page dropping 25 hand-added lines), re-sent with master's copy verbatim; 6.12 on ac86d7910 on build-6 by 22:00. + +THE FOUNDER'S STOP (20:21 UK, through main): "STOP all these mess ups." Four tonight: a fix that did not compile announced as cut (777214af); a native AVX-512 gate build rolled as a fleet binary (79 hosts would crash); the workers page never published while he watched; fifteen Mac processes killed by a grep (the fourth kill-by-name breach today). From now, by construction, not by rule: (1) pkill and killall refuse on the Mac (a shim first in PATH, exit 97) and on every box by 20:45 (the build-server lane); (2) a fleet binary comes only from the shipper's cross-build kit at the x86-64-v3 baseline; a gate check scans kits for AVX-512 (the steward, 21:30); a sha is "cut" only when its binary exists on build-1 with its commit string read back; (3) nothing is published from the Mac except the site lane's one deploy script, which records its own pid before it starts; the workers page is the build-server lane's from build-1; (4) a slip is reported once with its cause and the new clock, never re-announced; no lane says "done" for anything it has not read back. Broadcast to every lane in those words at 20:2x; the standing text in CLAUDE.md with this landing. + A SHARED-DEVNET FACT FROM THE FLEET (not this lane's, with the shipper and the infra lane): the Hetzner live seed 188.245.5.161:26611 is still on the old override object (digest eada4bda) 1 h 40 min after the 0.3.20 sweep (the fleet never touches Hetzner nodes, so it was outside the sweep); the 0.3.21 wipe canary c22-1 took five digest-mismatch rejects from it; an app with the packaged peers is refused at the seed and syncs through node1 and the hub only, a fresh joiner with only the seed cannot join, the 14 voters and the hub are unaffected; the owner puts the floor file ov16-floor-900000.json (sha 294f1f80) and the c4459193 pin on it. 0.3.21's STAGING (the node lane): the order dry-merges onto 55768f88 with nothing moving to 0.3.22; the late-join fix is 52e96c94 (70e4601e rebased onto 55768f88, exec suite 33 green with both new tests); f067f7c1, b0444f51 and 437f0438 merge clean in order; 2e32d5f6's one conflict (DST_ADDRESS beside pool-finish's DST_BINDING in consensus/core/src/finality.rs) kept both; the live-file digest eada4bda after each (every switch at never); the staging waits on the shipper's sweep-end word; the re-pin held. PC 2 DOWN AGAIN (main, 16:5x UK): the founder takes PC 2 down for cable work (PC 1 back but his desk); both PCs out of the sweep's waves, each updates on its poller on return; no PC job to PC 1; the Windows G1 completed before the outage, nothing reruns. 0.3.21's SECOND GATE LINE on 55768f88 (sha256 279b1b690e854fc9): the ten-minute mixed-version gate beside the 5899f603 pair, 13:37:40Z to 13:47:52Z, SUMMARY PASS (one digest b0afb2ee on five nodes; 223 new and 381 old blocks accepted by the old hub, 0 rejected; counts equal at 319, 486 and 604 through both clean joins and the restart step at 13:45:22Z; no panic); the node lane's two lines on 0.3.21's first candidate complete, in plan 6.9 on ca3-v4-node; the fleet's set on it (the bare-child 12 GB line, the wipe, the kept read, the cases) is the fleet's. 0.3.21's FIRST GATE LINE on 55768f88 (sha256 279b1b690e854fc9, the string read back; pairing igneum-pow 8c728ca3 at byte 5): the digest gate 13:35:41Z to 13:37:19Z SUMMARY PASS (a89be8a7 on both binaries with the peers; db9a85f9 refused, no peer; the live file's eada4bda unmoved); the ten-minute mixed-version gate from 13:37:40Z, line about 13:50Z. The 0.3.21 order as the shipper sent it: 55768f88; f067f7c1 and 70e4601e; b0444f51; 6eb21fc9; db28d331; then the re-pin from 8bdcbdd8 on the coordinator's word; suites between, the digest read after every one; the mirror's release-0.3.20-node back at the pin c4459193, release-0.3.21-node open at 55768f88. THE LATE-JOIN COMMIT (N9's second half, the node lane): 70e4601e on the box mirror as branch proof-hold-fix, from c4459193, two files (igneum/exec/src/proving.rs, protocol/flows/src/v10/proving.rs); the gap was the fetch side on the joiner (the served record ran the native check against the joiner's trailing exec state before anything was stored, the check refused it, the proof was never held, the body rule read "not held" for 20 s and failed the IBD); the fix holds the proof by hash before the checks (the pool entry still needs them) and the serve side says when it holds fewer than asked; the exec suite 32 passed at 13:26Z with the known-failed shape first, the flows check green 13:28Z, igneumd on build-1 at the 0321 worktree path built 13:32Z, sha256 17649eeb2f7d1290, string read back; with the testnet lane (the resume form, B alone); it joins the 0.3.21 staging as its own commit. THE WIPE CANARY ON c19-1, c4459193 (sha 45be9b02d1b002f5, string read back): FORM END rc 0 at 13:50:53Z. Wipe synced 13:35:50Z (57 minutes, inside the 98-minute class); mining 13:36:00Z to 13:47:07Z, 66 mined, 66 accepted, 0 rejected, isSynced true at the tip throughout; the hub holds 41 of its blocks in its last 700 with 0 rejects (13:47:09Z); the restart on its kept datadir at 13:47:15Z: the old process stopped at once (the new process's first lock line seven seconds after the marker; the watchdog held nothing, the b7cc37e7 fault closed), synced again at 13:48:39Z after 84 s, 109 templates read with max 3,432 ms and 0 timeouts; the kept read on pool-1's 0.3.17 copy on the same pod passed at 13:38Z (the rewrite line once, a clean second start). The pin's set on c4459193: the digest gate PASS, the mixed-version gate PASS, the wipe canary PASS, the kept read PASS, the restart PASS, the 12 GB line proves and verifies (paid is a race, not a gate); CASES END from c20-1 (about 14:50Z) is the last pin line. THE INTEROP FACT stands from the void run: the 5899f603 hub accepted 235 object-byte-5 blocks from the 8097d600 node with 0 rejected, one digest on all five nodes on the live sixteen-field file. The gates: the digest test and the kaspa-pow vector test (the amended devnet epoch-0 id 1a4230699a6b9c60 must equal, c120d7963abdcd96 must differ, the v3 control unchanged) on the box; the mixed-version Devnet 2 gate (the amended 0.3.20 node beside a 5899f603 node for ten minutes on the live file without the v4 fields) after the Mac build; the fresh-join canary the 0.3.20 cut's | | Main's rulings (7 October, morning) | no generator change to v4 on the live devnet; the record's null is the window model with numbers, sent by the hash lane to the attack-pass lane so AP-F8-1 re-gates against it; a fault beyond the model (a low-entropy source at site 15) stops at the coordinator with the two options priced (a 0.3.19 class amendment before the flip, or the flip held at the floor), nothing shipping without the founder's word; the tighter tail, an acceptance bound on the hot-set share, is a CLASS V5 item (sent to the v5 lane a6410f3b8abefb762 with the 64-seed census as its gate; the bound's number follows from the model) |