Commit graph

744 commits

Author SHA1 Message Date
igneum-labs
d7dc646ca2 docs: N8 narrowed to the non-chain blues after the live read; the bridge rows' pairing fault
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:55:25 +00:00
igneum-labs
4a168770ba docs: 7.6 the bridge-identity rows (known-failed on the old binary, N7 PASS on the fixed one, the pairing fault)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:43:16 +00:00
igneum-labs
3d505804f9 docs: N9 fixed in dc141409; 7.7.5 the oracle at never and the retention store owed; the 0.3.19 renumbering
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:37:56 +00:00
igneum-labs
4a3b39eb9e ledger: N9, the proof oracle installed at never (the 0.3.18 canary's fresh-join stall), the fix's shape
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:27:59 +00:00
igneum-labs
ec3901bcb6 docs: 7.9 the headers-proof join gate (two known-failed runs, the PASS at the devnet's window on the fixed binaries)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:27:44 +00:00
igneum-labs
78e80a9ef7 ledger: N8 fixed in d840537b; the project lead's ruling (testnet from genesis, devnet at a 0.3.19 upgrade height)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:27:15 +00:00
igneum-labs
71561c63c8 ledger: N8, the execution layer's segment-wide subsidy against the coinbase's per-block one (7 October 2026), the switched fix's shape
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:20:01 +00:00
igneum-labs
a983f81386 docs: N7 fixed in c7ea1e21 (no guest change), the plan's 7.6 note
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:12:57 +00:00
igneum-labs
8922464b2d ledger: N7, the execution layer never read a block's silence (the testnet lane's finding, 7 October 2026), the fix's shape
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:07:56 +00:00
igneum-labs
f866476118 docs: rung 3 re-measured on the quiet core (10.85 ms cold loaded, stays inadmissible), the raw lines kept
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:46:31 +00:00
igneum-labs
5d463bae16 docs: 7.6 closed by the project lead's word (bonus at the testnet genesis, no burn; 420f9305), the testnet's switch list
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:45:57 +00:00
igneum-labs
5c452621ee docs: section 6 item 7, the console's tally is memoised and the gate's share is the decision line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:13:25 +00:00
igneum-labs
4d83070a36 docs: 7.7.4 the follow-up's hash (fd7de1b4)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:11:57 +00:00
igneum-labs
8bd0930f8f docs: 7.7.4 the Mac template-latency reading (sub-ms on a young chain) and the chain-length tally as the pool's sink; the hub's debug log kept
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:11:14 +00:00
igneum-labs
e886c9df1b docs: 7.7.3 the every-method test and the ruling, 7.7.4 the bench's standing
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:59:18 +00:00
igneum-labs
002ef8048a docs: 7.7.3 the exec RPC crash on an empty state (c6a62e00), 7.7.4 GetBlockTemplate on a loaded node (500ddd66), the final 0.3.18 tip e69e8a39
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:54:29 +00:00
igneum-labs
5612475280 docs: 7.7.1a PC 1's relaunch rules (4f7c56a0), 7.7.2 the final 0.3.18 tip ae17ad00
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:14:56 +00:00
igneum-labs
344ad1475b docs: 7.7.2 the 0.3.18 node tree (release-0.3.18-node = 1cf43254), the test-order race and its fix, the two build facts
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:10:23 +00:00
igneum-labs
9899d6d62c gate: the 40-minute 30-s debug run's summary (the logs, 14 MB, stay beside it unversioned)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:22:47 +00:00
igneum-labs
1ff2918314 fast-time: the headers-proof join harness (the fuzz gate's extension; the 0.3.17 canary's own path) with --window, and its w661 known-failed record
Node A mines past the pruning depth at the fast-time profile (finality 120, pruning 4,600), a fresh node B joins
by headers proof; PASS = B takes A's sink with the 1026 header version. --window sets the sampled difficulty
window in samples: 150 (the minimum, 600 DAA) by default; 661 (the devnet's, 2,644 DAA) is the known-failed
shape found on the first run (7 October 2026, 04:45 to 05:55 UK): B's walk through the sampled trusted blocks
ran out before genesis and "DAA window data has only 180 entries" ended the IBD, then the N6 guard banned the
syncer on each retry. The node fix is e3798a17 on ca3-v4-0318 (a young chain's short window is legal when the
walk reached the chain's start); the devnet and the testnet never meet the shape (pruning samples at multiples
of the 43,200 finality depth).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:22:34 +00:00
igneum-labs
3f43ca247a replay gate: the devnet-window row in 7.6 (rule checks pass, the harness's sync clause corrected for a pruning A), the idle-network note in 7.7
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:22:16 +00:00
igneum-labs
e0bbb67f1b docs: 7.7.1 the after row (8220c944: votes checked across cores) and the next step
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:16:46 +00:00
igneum-labs
49f070f90b docs: 7.7.1 the fresh-join cost, the timers and the join bench's 20 and 500 rows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:05:50 +00:00
igneum-labs
ec5d559c43 docs: the 40-minute 30-s debug run in 7.2 and the merge-depth-root skip as the 30-s mechanism in 7.3
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:56:17 +00:00
igneum-labs
944431ab65 docs: the 0.3.17 canary's node-half fix in plan 7.7 and ledger N4 (4f4bb9c9 + ddda7d52 release, a3fe9f67 + b21659e4 on 0318)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:54:06 +00:00
igneum-labs
3b42bfb74c 0.3.18 (node): the 30-s controller reading: a protocol regime (the k bound), not a harness artefact; the 10-s, 20-s and 30-s rows; the fix shape named for 0.3.19
The same harness at 10, 20 and 30 s of propagation at 1 bps: at 10 s one shared DAG (254 blocks via relay, mergeset
3.4, red 36 percent, the controller within 1.1 percent); at 20 s under-merging (mergeset 1.6, the rate 19 percent
under, the difficulty 40 percent under); at 30 s nothing merges (mergeset 1.0, every node its own chain). At k = 18
the blocks in flight pass k between 10 and 20 s, k's own derivation. Fix shape, not built: an IBD trigger on a stale
sink (a node whose relayed blocks stop merging syncs the heavier chain instead of mining alone; the 30-s hub never
entered IBD) and k with the merge depth sized to the measured delay bound at the block rate. Owed: the long run's
decay (3 via relay in 40 minutes) with a kept log; the harness now takes --loglevel.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:12:24 +00:00
igneum-labs
ab97f8c416 0.3.18 (node): the relay ceiling gone at the document's own case (ledger N3 closed), the N4 node half's gate, the stale-block nuisance guard (ledger N6) with its gate on both halves, the 30-s controller finding named as owed; the harnesses for all of them
7.2: the pipelined relay (fork bb397f99) at 10 bps and a 3-s propagation delay holds 10.01 blocks/s with the
difficulty 7.7 percent over the hash-implied value, the hub taking 7,746 blocks via relay against 4,015 via submit;
the same run at a batch of 1 (the 0.3.17 flow) takes 445 against 801 and reads 0.351. N3 closed in the ledger,
network.md 5.11 and CLAUDE.md's gate line. The 1 bps, 30-s case did not merge on either flow (3 blocks via relay in
40 minutes, no IBD, no error, one reconnect per spoke): at a 30-s delay the blocks in flight exceed the k bound, and
its cause is owed its own reading (7.3).

7.7: the N4 node half's gate (peer-drop.mjs): a still sink dropped its silent peer at 720 s and re-dialled at 750 s;
a moving sink kept the same peer through 155 sinks; the harness's failed shape fails.

7.8 and ledger N6: the stale-block nuisance guard (fork 319da644, f2b25fdf, a22cb261), the shipper's record (310 to
551 connections in an hour from four stale datadirs), the two halves and the knob; the gate (nuisance-peer.mjs, a
node mining stub-engine blocks with proof of work off and restarting on the shared rule with its datadir): the
sender half flat with the skip line, the known-failed shape climbing (3 connections, 2 refusals in 300 s), its
mirror failing, the receiver half flat with one refusal and the ten-minute ban. Also recorded: the vote-or-burn
harness's devnet finality object (--finality devnet) for the replay running to about 05:00Z.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 02:45:01 +00:00
igneum-labs
bbff44dcbc Counter ASIC 3.0 gates (node): the replay gate passes on the bonus across a span past two weight windows (697 blocks synced from genesis in 5 s, 0 rule errors, the payout unchanged); the devnet-window case (four hours) named as owed before a switch is set there
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:43:01 +00:00
igneum-labs
add9708f5a Counter ASIC 3.0 gates (node): the replay gate passes on both vote switches with the silence reading as a function of the block's past (fork 812c3ac2)
7.6: the late node synced from genesis across a switched-on span holds every block (313 of 313 for the burn, 331 of
331 for the bonus, one sink each, 0 rule error lines, 5 s) and the payouts read as before (0.8000 and 0.9000, the
pool 0.25 and 0.35). The first reading's failure is kept for the record. Not yet shown and named: a fresh node
syncing a span longer than two weight windows, where the vote records behind the pruning horizon are the one
node-local input left.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:30:37 +00:00
igneum-labs
f52f92b234 Counter ASIC 3.0 gates (node): the fork gate's fast-time lines on the no-shortcut build (aa0182aa): gate on holds a 183-DAA private chain by a 27.5 percent key with one refusal line per block; the rule's known-failed case reorgs; the harness's own failed shape fails
Section 7.5: five runs recorded. The first idled nothing and never asked the gate; the second found the depth gap
(fixed 3301cf32); the third found the extension shortcut (fixed aa0182aa: a candidate on the sink's chain is not let
through, the depth along its own chain decides); the fourth, on aa0182aa, PASSES (B 2,750 bps at the fork, 183 DAA
deep, heavier by 183, A kept its chain for 150 s and learned 177 of B's blocks, 268 refusal lines, one per refused
block); the known-failed case PASSES (gate off, A reorged onto a 2,083 bps key's 162-DAA chain 25 s after the heal);
the harness's failed shape FAILS as it must. Three harness faults fixed on the way (shared ports, an RPC call before
the socket opened, a reorg test by key instead of by chain) and one build fault (ledger N5, the stub-engine node).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:15:36 +00:00
igneum-labs
b64264242d Counter ASIC 3.0 gates (node): ledger N5 (a kaspad built alone validates with the stub), the vote-or-burn rows with the replay gate's result on both switches, the fork gate's first runs and the depth finding, the hardened fork-gate harness
Ledger N5: cargo build -p kaspad alone leaves the igneum-pow feature off (kaspad/Cargo.toml, default kHeavyHash
stub); igneum-miner turns kaspa-pow/igneum-pow on, and feature unification carries it into kaspad only when the two
are built together. A node built alone refused every real block (two fork-gate chains, 0 blocks), the same miner
mined 118 and 115 blocks against nodes built with both packages. Recommendation: igneum-pow a default feature of
kaspad for 0.3.17, the engine named in the version string (igneum_getNodeInfo's powEngine carries it now).

Node document 7.5 and 7.6: vote-or-burn none PASS, the known-failed case FAILS, burn and bonus PASS on the payout
(0.8000 and 0.9000, the pool 0.25 and 0.35) and FAIL on the replay (a node synced from genesis across the span
disqualified 240 blocks as UTXO-invalid: its silence reading differs from a present node's; both switches stay
never until the reading is a pure function of the block's past); the replay gate's own failed shape (another
digest) refuses at the handshake. Fork gate: the rule's known-failed case PASSES (a 32.5 percent key's 171-DAA deep
fork took A's sink 25 s after the heal under the rule as written); the gate-on case found the depth gap (fixed on
the fork, 3301cf32) and then PASSED on the rebuilt pair (B 2,810 bps, 193 DAA deep, heavier by 193, A held, A learned
188 of B's blocks) with a log flood fixed next (9a44fcb8); the harness now waits for each node's RPC and clears
leftover nodes before a case. The chain on the final pair runs; its three lines land in the table when it closes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:38:11 +00:00
igneum-labs
0dca901419 Horizon closers (node): the relay ceiling as the fourth block-rate gate (network.md 5.11, ledger N3), the controller verdict rows, ledger N4 (the stalled desktop node, diagnosed from the log intake and the observer) with the miner-stall gate, the fork-gate and vote-or-burn harnesses with their first lines, the replay-gate finding against both vote switches
network.md 5.11 and proposal 1: Kaspa's relay requests one round per batch, so at 10 bps and a 2-s RTT the hub took
one spoke block in three (every block a chain block, two thirds of the network's hash merged nowhere); at 400 ms it
took all of them. The fourth gate for any rate step: relay delivers the full block rate at the measured inter-region
RTT with margin. CLAUDE.md's block-rate line carries it. The live 1 bps devnet offers under one block per RTT and is
nowhere near it. Controller rows (node document 7.2): rule v3 at 600 ms holds 9.93 blocks/s with the difficulty 4.5
percent over the hash-implied value; the live rule v2 reads 22 percent under on the same DAG shape.

Ledger N4: the vote weigh-up's silent desktop key, upload by upload from miner_logs and the observer: the voter never
died and --no-vote was never set; the node fell off the network (a digest-mismatch refusal, then a same-digest peer
that relayed nothing), its tip froze for 53 minutes, and the miner hashed and voted on the frozen template with
synced=true throughout while the node accepted 1,750 blocks into a dead branch. The fix pair on the fork (miner
e6e1fbe2, node 96619b7d); infra/fast-time/miner-stall.mjs: stall PASS (STALLED at 30 s, exit 45 at 31.5 s), moving
PASS, today's miner FAILS as it must.

infra/fast-time/fork-gate.mjs and vote-or-burn.mjs with the replay gate (--replay). First lines: vote-or-burn none
PASS, the known-failed case FAILS, burn PASS on the payout (ratio 0.8000, pool 0.25) but the REPLAY FAILS: a node
synced from genesis across the span disqualified 240 blocks as UTXO-invalid (its silence reading differs from a
node that was present), so both vote switches stay never until the reading is a pure function of the block's past;
fork gate: the first run idled the honest side and the depth read 0 (fixed on the fork, 3301cf32: depth along both
chains), the re-run's lines follow. The tree ships as 0.3.17 (node document section 7).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:31:06 +00:00
igneum-labs
a146439a53 Counter ASIC 3.0 gates (node): the seven-window signal gate re-run on fork 0760b844 (four cases, section 6.5), the controller harness for difficulty rule v3, the getRecentBlocks API row
class-v4-signal.mjs now runs the 0.3.16 rule (95 percent in each of 7 consecutive windows ending at the seed block;
the flip at epoch 4 with the 30-DAA window), requires a floor for a signalling case (the canary rule: no floor, no
signal; the floor-less first pass read every chain byte 0), reads programClassV4SignalWeakestBps and checks that the
signal line names seven windows. The four cases on 6 October 2026, 20:57 to 21:25Z: two of three signal, no flip
(weakest 5,666 to 6,333 bps); all three, flip at epoch 4 (DAA 241 seen, boundary 240; 3 of 3 signal lines; the id
assertion on epochs 4 to 6); nobody, the floor at 360, flip at epoch 6 and not before; the known-failed case FAILS on
nine checks. Summaries in docs/plans/counter-asic-3-gate/class-v4-signal7-*.json.

infra/fast-time/difficulty-v3.mjs (Horizon lane 5 proposal 2's harness case): three nodes in a star through a TCP
delay proxy (the document's propagation delay d over Kaspa's three relay legs, inv, request, block, so d / 3 per
leg; the handshake's first 5 s undelayed, the version exchange times out at 4 s), override-60x.json re-rated to
10 bps (the override-params.md example's k 124 and limits, depths x10, PoW epoch 600 DAA so an epoch stays 60 s),
one CPU miner per node, pass = DAG rate within 10 percent of target and the sink's expected hashes per block within
10 percent of the miners' summed hash x T after 600 of 900 s; the red share and chain step spacing reported. Results
follow in their own commit (the runs are in progress at 21:30Z).

docs/design/execution-layer.md 8.2: the igneum_getRecentBlocks row (fork eec34ac3).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 21:25:58 +00:00
igneum-labs
cdfe675a72 Counter ASIC 3.0 gates (node): the receive-side version rule (fork f1ea7a38) and the poisoned-peer case of the node-cut gate (PASS: the new node refuses version-1026 blocks with 0.3.14's line, relays none, stays the old hub's peer), ledger N1 extended with the receive side and the stale-block answer
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:46:25 +00:00
igneum-labs
698c1c0d92 Counter ASIC 3.0 gates (node): the P5 row, the dependency pass for 0.3.15.1 (6 to 1 vulnerabilities, the one left named)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:29:07 +00:00
igneum-labs
983474e14a Counter ASIC 3.0 gates (node): the node-cut compat gate (node-compat.mjs: a mining new node beside a 0.3.14 node on the live object, both joins, the served genesis sync, the restart; PASS on 7961c5f1, FAIL on the canary binary 713ef876), the ledger rows N1 (version 1026 on the live file) and N2 (the pruned node's sync panic, a remote crash vector), the P4 row
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:25:39 +00:00
igneum-labs
4034df6a2c Counter ASIC 3.0 gates (node): the shipper's 0.3.15 readings in the P3 row (the three fixtures equal, the live floor's publish-2 digest 2c1162e2..., 0.3.14 exits at parse on the sixteen-field file, the box suite line)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:03:47 +00:00
igneum-labs
8fe0b498f5 Counter ASIC 3.0 gates (node): the 0.3.15 digest rule's compat and refusal cases on real nodes (digest-compat.mjs: a fixed node and a 0.3.14 node on the thirteen-field file peer on one digest; the sixteen-field node is refused), the P3 row, the sixteen-field digest 1dddfa55... on the devnet id
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:59:34 +00:00
igneum-labs
dac0b7bdaa Counter ASIC 3.0 gates (node): the rehearsal's miners are the GPU workers (the object inherits the devnet genesis bits); the id assertion on a worker box reads the pack's program.h
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:38:26 +00:00
igneum-labs
950cb645c9 Counter ASIC 3.0 gates (node): the digests re-read on the right network ids (the digest folds the network id in; the fleet's a15db4f0 on suffix 400 confirmed with the Mac binary of the same fork commit; the publish example 65a42ab2 on the devnet id); the 0.3.13 parse refusal as a cut-order fact
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:34:52 +00:00
igneum-labs
05c5dcd935 Counter ASIC 3.0 gates (node): the rehearsal re-cut for the hour (1 block/s: 600-DAA epochs, window 600, flip at minute 20, floor at minute 40; digest d23394e7...)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:18:04 +00:00
igneum-labs
a0d2e9074e Counter ASIC 3.0 gates (node): G6 on the signalling fork change GREEN (jobs build-20261006-173017, -174027, -174823: the 2.0 flake re-run alone, the five crates and the app, the relay upload fault noted)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:56:11 +00:00
igneum-labs
53c821c048 Counter ASIC 3.0 gates (node): the signalling gate GREEN (two of three never flips, all three flips at the first full window, nobody flips at the floor; the failed case fails on eight checks), the four summaries, the preconditions rows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:47:31 +00:00
igneum-labs
de761e6275 Counter ASIC 3.0 gates (node): the two cut preconditions: the fleet rehearsal plan (counter-asic-3-rehearsal.md, the publish and rehearsal override objects with their digests ac8e60ce... and bc2142b1...), the PROPOSED miner-signalled activation (node doc section 6), the fast-time signal gate class-v4-signal.mjs, the signal window in override-60x.json (120) and the README
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:27:50 +00:00
igneum-labs
d7306e506a Counter ASIC 3.0 status: the two cut preconditions (staging rehearsal, miner-signalled activation) as gates; the line for the project lead re-worded, no date until 0.3.14 runs a clean day 2026-10-06 16:47:12 +00:00
igneum-labs
3a23c97bcb Counter ASIC 3.0 status: the blocker closed (G4 re-run with the id assertion green), every gate green, the line for the project lead confirmed 2026-10-06 16:45:52 +00:00
igneum-labs
4bcced89ac Merge branch 'ca3-v4-node' into ca3-coord 2026-10-06 16:44:27 +00:00
igneum-labs
2e7a2278b6 Counter ASIC 3.0 gates (node): the program id carries the class: G4 re-run GREEN with the id assertion (every v4 epoch's id = the CLI's class v4 id, differs from the same-seed v3 id; the assertion's failed case fails on that one check), the seven re-exported packs' Metal fingerprints equal the hash lane's table, G5 workers rebuilt from the fix
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:43:46 +00:00
igneum-labs
6976a9337a Counter ASIC 3.0 status: the hash lane green on the id fix (6514e2b merged) 2026-10-06 16:40:09 +00:00
igneum-labs
089d1083cc Merge branch 'ca3-v4-hash' into ca3-coord 2026-10-06 16:39:24 +00:00