Commit graph

536 commits

Author SHA1 Message Date
igneum-josh
c62ef08b0b Counter ASIC 2.0 status 23:00: layer 9 agent, PC queues 2026-10-05 20:32:53 +00:00
igneum-josh
db204381f2 Counter ASIC 2.0: card lifetime merged, cache freed after the build, growth mapping (b) recommended, public lines listed 2026-10-05 20:31:48 +00:00
igneum-josh
ab502a2378 Merge branch 'card-lifetime' into ca2-coord 2026-10-05 21:31:25 +01:00
igneum-josh
1fecfe26c4 docs/analysis/card-lifetime-2026-10-05.md: years each card tier keeps mining under the dataset schedule and the working-set rule, against the site and litepaper claims
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:30:46 +00:00
igneum-josh
7587570005 Counter ASIC 2.0 rollout: ota-k2 commit on the next-cut list 2026-10-05 20:29:37 +00:00
igneum-josh
e554d53de1 Counter ASIC 2.0 status 22:40: C1 decision and the 16:00Z check, one packfile.h fix 2026-10-05 20:29:09 +00:00
igneum-josh
7a0e8a2b78 Counter ASIC 2.0: layer 9 row, C1 constraint, era mid-way and the attempt-aware packfile bug, C10 and C11 answers 2026-10-05 20:27:58 +00:00
igneum-josh
ea323d97c5 Counter ASIC 2.0: layers 1, 2, 3 decided from the readwidth table, layer 5 Mac rows and the added-form redesign, user tiers, public level 2 edit 2026-10-05 20:27:01 +00:00
igneum-josh
4b550fa6d1 Counter ASIC 2.0: the mixer x4 decision into v3, ca2-mixer agent, status 22:00 2026-10-05 21:27:01 +01:00
igneum-josh
ff65d41dfc Counter ASIC 2.0: layer 3 decided (scratch share 0, chip 2.4x at every share), the claim qualified, public level 3 headline 2026-10-05 21:27:01 +01:00
igneum-josh
09e75e9ae9 Counter ASIC 2.0 status 21:35: the corrected SRAM mirror table 2026-10-05 21:27:01 +01:00
igneum-josh
adbf070ce0 Counter ASIC 2.0 status 21:25: proving v1 state, PC 2 queue 2026-10-05 21:27:01 +01:00
igneum-josh
874968a643 Counter ASIC 2.0: the shipped-density correction to the SRAM mirror (130 to 165 mm^2), carried into the rollout and public docs 2026-10-05 21:27:01 +01:00
igneum-josh
bdfb7a3467 Counter ASIC 2.0: layer 6 option C and layer 7 R1 decided (delegated), the chip headline rule for the scratch share 2026-10-05 21:27:01 +01:00
igneum-josh
38c113e957 Counter ASIC 2.0 status 20:55: layers 6 and 7, node agent, 0.3.11 scope with proving v1 2026-10-05 21:27:01 +01:00
igneum-josh
4d00935dbd Counter ASIC 2.0 status: the four-level public description deliverable 2026-10-05 21:27:01 +01:00
igneum-josh
7e6ad57433 Counter ASIC: the public description in four levels (levels 1 and 2 as copy, 3 and 4 with owed markers) 2026-10-05 21:27:01 +01:00
igneum-josh
1a651a06be Counter ASIC 2.0 status 20:35: readwidth round 2, probe ceilings, width arithmetic 2026-10-05 21:27:01 +01:00
igneum-josh
1e5502f88e Counter ASIC 2.0 status 20:25: 0.3.10 blocked on GitHub, node fork convention, 0.3.11 inputs 2026-10-05 21:27:01 +01:00
igneum-josh
652f2501a5 Counter ASIC 2.0 status 20:15: the devnet mandate, gates, node path note 2026-10-05 21:27:01 +01:00
igneum-josh
ad0b726325 Counter ASIC 2.0 rollout: Josh's devnet decision rules, the six gates, the 0.3.11 release path 2026-10-05 21:27:01 +01:00
igneum-josh
a7362c3cf6 Counter ASIC 2.0 status 20:05: readwidth PC jobs, the capped-scratch finding 2026-10-05 21:27:01 +01:00
igneum-josh
4a746e7fca Counter ASIC 2.0: rollout plan draft (program_class_v3 height switch, digest first, decisions table) 2026-10-05 21:27:00 +01:00
igneum-josh
dec14ca1b5 Counter ASIC 2.0 status: agents respawned, first readwidth Mac rows 2026-10-05 21:27:00 +01:00
igneum-josh
cf8490d000 Counter ASIC 2.0 status: restart after the credit cut-off, the 6 GB working-set budget 2026-10-05 21:27:00 +01:00
igneum-josh
c92b0fcc23 Counter ASIC 2.0: coordinator status file, first entry 2026-10-05 21:27:00 +01:00
igneum-josh
e752fc7d45 read-width: bench-log entry and docs/plans/read-width.md (three cards, probes, widths, the per-load mix, the scratch at 32 and 128 KiB, chip model, recommendation: keep v2; w16 the only width that passes the rules and closes nothing); test multiply made wrapping (dev-profile overflow check)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 21:24:40 +01:00
igneum-josh
d0018cf18a read-width: OpenCL scratch kernels declare the __local exchange buffer before the unit loop (AMD's compiler requires the outermost scope; round 3 on the 9070 XT); seven scratch packs re-exported, vectors unchanged
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 21:18:35 +01:00
igneum-josh
ca8d9f317a CLAUDE.md: every number carries its consequences for each user tier (standing rule)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:18:34 +00:00
igneum-josh
a9e002c47d read-width: packfile accepts a string-seed pack (any even-length hex epoch seed; the seed-word re-derivation still checks it); bench-only playbooks for the second PC round
Round 1 (run-readwidth-{5090,9070}-20261005) delivered the probes and refused every pack: pf_load demanded the chain's 32-byte epoch seed and the experiment packs carry igneum-pow --seed strings.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 21:09:58 +01:00
igneum-josh
4badcee1ff read-width: CUDA worker --bench and --memprobe, scratch arena from the occupancy capacity; PC playbooks (card under test off in the app, restored after); harness arena label
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 21:05:57 +01:00
igneum-josh
b970ddade4 read-width: scratch per warp is a class parameter (32 or 128 KiB, under the 6 GB working-set cap), distinct-address rule bounds dataset loads only; Metal pack harness; OpenCL --bench-pack, scratch args and 16-byte probe; packfile class fields; OpenCL emulator persistent launch
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:58:20 +01:00
igneum-josh
019b014f73 read-width experiment (gate 1): load classes W=4/16/64, per-load width mix, scratch RMW variant behind a generator flag; 20 packs; CPU verifier and acceptance mirror; emulator shims
Nothing changes for the default class: the pinned packs are byte-identical (tests/packs.rs), the v2 draw stream is untouched.
LoadClass {mix, load_slots, scratch}: fixed widths w16, w64, w64x4 (4 loads of 64 B), era mixes 50/35/15 and 25/50/25 drawn per load with one extra below(100) roll, and the scratch variant scr0/2/4/8 (persistent warps, 1 MiB per warp, tagged lazy fill, measurement only). A wide load reads the W-aligned address and folds every word: x = dst ^ w0; x = (rotl(x, 11) * 0x9e3779b1) ^ w[j]. Program ids carry the class. proto-opencl/host.c taken from opencl-rdna4 a08c371 (--memprobe, select read-back).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:46:54 +01:00
igneum-josh
be4b29507b docs: Counter ASIC 2.0, the second set of chip-resistance layers and the plan to measure and decide them
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 19:40:33 +00:00
igneum-josh
9746391242 docs/plans/explorer.md: Etherscan, Blockscout and Otterscan compared, Blockscout's requirements against the fork's RPC, the recommendation, the load and supply measurements, the pool item; screenshots
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:35:40 +01:00
igneum-josh
658daf698a Explorer pages: /explorer, /block/<hash|number>, /address/<addr>, the search router, a local preview server, CI
Fed by /api/explorer from the observer's tables. Latest blocks (hash, number, DAA, blue score, miner, txs, proof
records, time); a block's header, parents, children, mergeset, coinbase outputs, EVM transactions, shards, checkpoint
and certificate; an address's blocks, what they earned, vote keys and balance (eth_getBalance when EXPLORER_EVM_RPC is
set). Same tokens as live.html. vercel.json rewrites /block/:id and /address/:addr; the footer links the explorer; the
link checker skips template literals and resolves /api/<name> to its function. node tools/site-serve.mjs previews the
site with the functions in-process.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:35:40 +01:00
igneum-josh
1d39b0e355 Public stats API: /api/stats and /api/supply, documented with live examples, contract test and a live check
The numbers profitability sites and pool software read (WhatToMine's form: explorer or pool with an API, the halving
schedule, a source for total coins). Reward and supply from the emission rule at the node's DAA score; the halving table
(33 rows), the 30-day ramp and the observer's coinbase check. Cached 10 s, CORS open. FIELDS in each handler is the
contract; public-stats.test.mjs checks it from a fixture, tools/ci/public-api-check.mjs checks a deployment.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:35:40 +01:00
igneum-josh
6983685730 Observer: explorer detail per block from the notification, chain block number from the shard plan, RPC load counter, hourly coinbase check against spec 2.5
site/lib/emission.mjs is the emission rule as igneum.rs computes it (block_subsidy, launch_ramp, an exact floor-sum for
minted-so-far); its tests reproduce the node's own test values and a devnet coinbase (block 2622db76: payload 454,486,399
at DAA 125,064, outputs 454,485,299 = E(125,063), what the merged parent declared). Every live_blocks row gains tx_count,
evm_miner (the IGNA tag, else the vote key's low 20 bytes), proof_records (IGNP section), subsidy_sompi, paid_sompi,
selected_parent, number, detail. No extra RPC per block: measured 282 against 283 wRPC and 785 against 776 EVM calls
per minute before and after. live_state.rpc_load and live_state.supply_check are new.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:35:40 +01:00
igneum-josh
a93199aa3e Merge remote-tracking branch 'origin/master' into release-0.3.9 2026-10-05 19:19:29 +01:00
igneum-josh
bf8d1ba5b8 finality-v3-devnet-publish.md: the app nodes, the sweep (every live node on 1f4b4425), the Mac app's external-node finding, the checkpoint read 2026-10-05 19:19:03 +01:00
igneum-josh
900bba7bb9 site: download cards point at Igneum Miner 0.3.9 (regenerated by the 0.3.9 ship)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 19:18:26 +01:00
igneum-josh
a850aefa7f CLAUDE.md: owner login renamed to igneum-labs; credential helper order fixed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 19:18:13 +01:00
igneum-josh
46a6a4e60f docs/plans/finality-v3-devnet-publish.md: N3 = 135,200, digest 1f4b4425, the hand nodes, the seed and the three manifests 2026-10-05 19:09:05 +01:00
igneum-josh
9268b64d92 Merge remote-tracking branch 'origin/master' into release-0.3.9 2026-10-05 18:55:57 +01:00
igneum-josh
6f31657be5 release-0.3.9 plan: the ship, the proving rollout, the fee switch (H 210,000, digest ab8847da) and the sweep; restart-hand-nodes.sh: grep -c instead of grep -q under pipefail, lines() never ends the script 2026-10-05 18:55:35 +01:00
igneum-josh
22ffc02566 observer: a watchdog forces a reconnect after ten failed ticks (the live page went stale for an hour after a node restart)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 18:22:22 +01:00
igneum-josh
a05391ee11 Merge key-custody: key inventory, encrypted offline backup and restore scripts, the two-signing-key plan, a no-secrets CI check
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 18:01:53 +01:00
igneum-josh
8452bc3a96 Key custody: inventory, encrypted backup and restore, no-secrets CI check
docs/security/keys.md: every key the project depends on (the folder, the gh
keyring, the Vercel env of three projects, the GitHub secrets) with where it
lives, what it unlocks, the blast radius lost and leaked, who rotates it and
the rotation status, written from the files and the scripts that read them.
No value, no private fingerprint. Section 4: the second OTA signing key kept
offline, the app change (a key list plus revocation in the manifest), 0.3.9
as the carrier, and the emergency path if the one key leaks today (a manifest
signed with a new key is useless to 0.3.x apps; the mitigation in order).

tools/keys/backup.sh: ~/Desktop/igneum-keys-<date>.dmg, AES-256, hdiutil's
own prompt (never argv, history or a file), the folder minus build-slots,
dlsite-dir and pytools/, plus a README; attached read-only, every file
compared by sha256, listed, detached. --dry-run lists. restore.sh: --check
compares the image against the live folder without printing values, --to
copies back with 0600/0644 and 0700. test-backup.sh: the end-to-end test on a
scratch folder with a throwaway passphrase, 8 steps, passed.

tools/ci/no-secrets-check.sh, in ci.yml: no tracked file named like a key of
~/.config/igneum, no 64-hex value assigned to a token/key/secret name outside
tests and the allowlist (the OTA public key, the published Hardhat and Anvil
accounts); a --self-test fires on a known-bad tree first. 776 files, 0 hits.

Also: ~/.config/igneum, vercel/ and txgen/ are 0700 now (were 0755).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 18:01:01 +01:00
igneum-josh
f2d618c5e4 release-0.3.9 plan: the cut so far (branch, tests, node builds, hand nodes and seed on a24ab01a, DMG, package) 2026-10-05 17:51:20 +01:00
igneum-josh
ea08798ffd site: rebuilt on this tree (the pre-push hook's build differed from master's copy of the two generated files) 2026-10-05 17:50:12 +01:00