Commit graph

239 commits

Author SHA1 Message Date
igneum-labs
b4dc4e982b Miner dev fee: app switch and UI line, HiveOS package, Linux worker cross-build, docs and public text
Decision of 4 October 2026 (evening): the Igneum Miner software takes a visible, switchable 1% dev fee, the norm
for GPU miners; the protocol stays fee-free. The miner side (--dev-fee, the 1-in-100 template counter, the audit
command) is on branch dev-fee of the node fork.

- app: settings.dev_fee (default on) passes --dev-fee 0 to igneum-miner when off; Settings shows the miner's own
  "dev fee 1% (1 block in 100) to 0x..." line next to the rewards address with a switch; the engine parses the
  miner's start line and its dev-fee block lines (fee_session, lifetime fee_total, an event per fee block)
- packaging/hive: h-manifest.conf, h-config.sh, h-run.sh, h-stats.sh, make-hive-package.sh (igneum-hive-<v>.tar.gz
  with the Linux igneumd, igneum-miner and both GPU workers), README with the Flight Sheet, selftest.sh (bash -n,
  stub binaries, the three hooks the way Hive runs them, the stats JSON parsed). Hive itself is untested
- infra/cross/build-workers-linux.sh: the NVRTC and OpenCL workers cross-compiled for Linux with zig;
  proto-opencl/cl_dynamic.h gains the Linux dlopen branch (libOpenCL.so.1)
- tools/dev-fee/run.mjs: the fee-block test network (two nodes on 29900+, three CPU miners, payouts audit)
- docs/design/miner-dev-fee.md (mechanism, flag, lines, the DEV_FEE_ADDRESS placeholder and the devnet address),
  docs/fud-ledger.md E18 and the E5/L9 status line, litepaper "What a miner's hour looks like" paragraph, homepage
  miner section note

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 21:46:41 +00:00
igneum-labs
5b17062fc9 Ship tool: one command cuts an Igneum Miner version (tools/ship-app.mjs)
the project lead, 4 Oct 2026: 0.3.1, 0.3.2 and 0.3.3 each took eight hand steps and an hour. The tool runs them in order, each
step idempotent and resumable (--from): preflight, bump (six version files, one function, read back), push-inputs,
commit and push, the windows.yml run polled with gh (auth switch before every call), fetch, DMG under the build lock,
copy, signed manifest, one deploy, HEAD/GET verification with sizes and sha256, one console item. --dry-run prints
the plan, --check compares the version files, --self-test bumps a scratch copy. Secrets never printed.

Found by --check: Igneum-Miner.iss and Info.plist were left at 0.3.2 when 0.3.3 was cut (CI passed -Version from
Cargo.toml, so the installer was right; the Mac bundle said 0.3.2 because build-dmg.sh's sed only matched 0.3.0).
Both aligned to 0.3.3; build-dmg.sh now stamps the version with plutil. fetch-ci-artifacts.sh: CONSOLE_SKIP=1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:29:21 +00:00
igneum-labs
edb8fb00d2 Log intake: accepts LOG_INTAKE_KEY_NEXT during a key rotation (round 4, X23)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:25:33 +00:00
igneum-labs
53fae2c8ea Relay: its own key (relay-key) replaces the intake key for the Mac tools and clients; relay token rotated 4 Oct 2026 (round 4, X23); prove package excludes cross-build folders
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:25:19 +00:00
igneum-labs
2bab547c23 Observer autosync: the shared checkout fast-forwards to origin and restarts the observer when its code or the public API changed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:19:12 +00:00
igneum-labs
ce5bb840aa Prove host: lock file for the serde dependency
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:17:55 +00:00
igneum-labs
d641939c64 Bench log: shard proving on the RTX 5090 measured (10.9 s per shard, 2.2 s aggregation); evidence rows 15 and 16; journey line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:17:16 +00:00
igneum-labs
5cf9169900 Merge remote-tracking branch 'origin/review-round-4' 2026-10-04 18:15:02 +00:00
igneum-labs
57f9baac35 Ledger P20: the 24-minute save gap measured on the second RTX 5090 run
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:15:02 +00:00
igneum-labs
df8c469723 Relay: run and task posts need the console token (round 4, X23); prove host saves proofs buffered (ledger P20, second gap)
The intake key sits in every miner package, so the relay now lets it report only (drop text and files, ack, done,
register, upload). Posting a run or task, or renaming and re-roling a machine, needs the console token.
The prove host wrote proofs through SP1's unbuffered save: on WSL2 under /mnt/c the 18 MB core proof of a shard
took longer to save than to prove. Proofs now go through a 4 MB buffer with a timed 'saved' line, and
prove-shard.sh keeps results on the Linux side and copies them per stage. Ledger P20 updated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:14:10 +00:00
igneum-labs
36fcb07d49 Review round 4 (4 October 2026, afternoon): what is live. 1 fatal, 16 serious, 8 minor, 1 fixed; ledger X18 to X30, G12 to G14, F23, F24, M25 to M29, E16, E17, L9; fixes rows 104 to 116
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 18:05:28 +00:00
igneum-labs
8ab852ce21 Console: a job is done only on the app's closing report; prove-shard.sh takes every block fixture after the first argument
The console marked any job with a RESULT line as done, so a running shard job read as finished. Done now means
the SUMMARY line carries finished_at or the job's closing 'job <id>: <status> (exit N)' line is present.
prove-shard.sh dropped the third fixture argument (block-344-shards4) because it read only $2.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:52:35 +00:00
igneum-labs
6dc3b83888 Bench log: difficulty v2 activated on the live devnet by height switch
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:44:27 +00:00
igneum-labs
9a566d1d5b Live page: the ?window=300 capture with a paid shard cell and its tooltip; header counts and the ingest keep-window follow the target scale (the 8 px/s floor was the adaptive scale's); counts right on the first poll; lock label backed; record rotation 80 blocks per tick
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:43:26 +00:00
igneum-labs
1551da622c Live page: shards per block (proving v0), three strips on one time axis (blocks, finality bar, proving), observer proof feed, hero glint
Observer (tools/observer/observer.mjs): reads the execution layer's JSON-RPC of a node on the proving build
(IGNEUM_EVM_RPC, default the Mac app's node 26800): every chain block's shard plan as it joins the chain
(igneum_getShardPlan by blockHash, one live_proofs row per shard, planned), the proof records of the chain
blocks of the last 10 minutes polled in rotation (igneum_getProofRecords, four in flight, 40 blocks per tick
while active, 10 before activation): proving (in the pool), verified (SP1 proof verified, or carried and checked
by consensus), paid (a carrying segment paid it), with the prover's id8, the carrier, lag in DAA and the payout.
live_state.proving = {supported, active, activation_daa, tip_daa, verifier, pool, blocks_10m,
blocks_fully_proven_10m, shards_proven_10m, shards_paid_10m, median_proof_lag_s, provers_10m}. A node without
the RPCs gives supported false (rechecked every 5 min); an unreachable endpoint is retried every 20 s. Events:
proving (activation, first paid shard), prover_seen. Additive schema (live_proofs, live_state.proving).

API (site/api/live.mjs): proving, and per block shards: [{i, n, state, prover, lag, payout (IGN), pgas}] and
proven; ?window=N (30 to 300 s) for the page's diagnostic long view; LIVE_TABLE_PREFIX reads a test observer's
tables.

Live page (site/live.html), the design change of 4 Oct 2026: three thin strips sharing one time axis, newest at
the right. BLOCKS keeps the per-miner lanes, chain path, blue/red/pending colouring, arrival glow and tooltips;
the lock ring, dashed lock line and final band leave it. FINALITY is an 18 px bar: ember wash = final (up to the
newest locked checkpoint on screen), molten tick = locked checkpoint, faint = proposed, one label at the newest
lock ("locked #522, 12 s ago"); while finality is not active it reads "finality paused: N% of weight silent" and
nothing else (R4.6.3). PROVING shows one cell per shard under each chain block, outline (planned), molten
(proving), prover colour (verified), tick (paid), a dashed "proofs land N s behind the tip" line, or the one
honest line before activation ("Proving layer: not yet activated on this devnet; activation at DAA N" / "node
without proving"). Header stats: on screen, chain, identities, last lock, proven. Legend: one line per strip.
Hover and tap tooltips on blocks and cells (block, shard, prover, lag, payout). Lanes snap on resize (they used
to ease from a zero-height layout). Phone width, no horizontal scroll; draw 0.6 ms avg, 1 ms max with 110 blocks
on screen (playwright, 1280 px).

Hero (site/index.html): a faint second glint behind a real block once every shard of it is verified, only while
the proving layer is active; pace and sampling untouched.

Verified on the private 3-node proving network (tools/proving-v0/run.mjs --network-only, activation 60) with a
CPU prover loop signing as v0/v1/v2: records relayed, verified on node 0, carried and paid (block 155 by 405,
lag 259 DAA, 0.634 IGN); screenshots in docs/design/live-proving (devnet before activation at 1280 and 375 px,
test network active, the ?window=300 view with paid cells). The live devnet shows the "not yet activated;
activation not set" line once the observer runs this build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:39:28 +00:00
igneum-labs
27cb12f43a Share images: the master mark replaces the ringed coin on every og image; og.png (was a 404) added; ?v=2 cache bust
make-icons.py make_social(): og-small.png (256 square, the compact card index/live/litepaper declare), og-square.png
(1024), og-coin.png and og.png (1200x630: mark left, IGNEUM wordmark, tagline, subline; same layout as before, no ring,
no glow). bench.html, evidence.html and build.mjs referenced /og.png, which did not exist; they now get the 1200x630 card
with width/height 1200x630 and twitter:card summary_large_image. Every og:image and twitter:image carries ?v=2 so
Slack, X and iMessage refetch. brand/profile: github-social-1280x640.png (repository social preview) and
vercel-avatar-512.png. bench.html edited by hand for the meta only (a build.mjs run would publish uncommitted log entries).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:39:05 +00:00
igneum-labs
eec74a4a9f Igneum Miner jobs: WSL as root by default, the shipped wsl2\bin prover run fixture by fixture (no cargo, no setup), account context logged at every job start, dashboard note when the app runs elevated or as another account
PC 2 on 0.3.3: 'wsl -d Ubuntu-24.04 -u [user]' from the app fails with getpwnam([user]) and the default user has no
cargo, while the project lead's own session has both in a distro of the same name: WSL distros belong to the Windows account,
and the engine runs under a different context than the interactive session. So the prover path is self-sufficient
inside the Ubuntu the app sees: the wsl-prover probe and the shard-benchmark job run as root (the job's wsl_user or
IGNEUM_APP_WSL_USER first, root second, the distro default last), and the shard job runs the Linux host the
payload ships next to the app (wsl2\bin\igneum-prove-host, cuda feature) directly for each fixture (shard 0 in
shard mode, the blocks in block mode, results under <app data>\prove\igneum-prove-wsl2\results); params.build
= true keeps the package's prove-shard.sh path. Every job logs the account context first (Windows user, SID,
elevated, the signed-in console user, then 'wsl user <id> uid <n> home <h>' and nvidia-smi inside the distro),
the engine logs it once at start, and the dashboard (Settings and the job strip) says 'The app runs as X
(elevated). The signed-in user is Y; WSL and its tools belong to that account.' when they differ.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:14:00 +00:00
igneum-labs
62d745e430 Evidence rows 10 and 12: measured bounds stated as properties; v2 result on the cloud network
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 17:08:01 +00:00
igneum-labs
bf540226ef Build and measurement lock for agents on the Mac; the standing rule in CLAUDE.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 16:58:56 +00:00
igneum-labs
c5c2a5a069 Igneum Miner jobs: the wsl-prover probe logs why it fails, tries the configured then the default WSL user with cargo and sp1 on PATH, and accepts the shipped wsl2\bin prover; publish-jobs --requires none|"" = no requirement
PC 2 on 0.3.3 logged 'needs wsl-prover' although the toolchain is there as user [user]. Every negative probe now
lands in the engine log with its exit code and the first 200 characters of output (it reaches the intake). The
probe sources ~/.cargo/env and sets ~/.cargo/bin and ~/.sp1/bin itself (a login shell from a console-less process
need not), runs as the job's wsl_user or IGNEUM_APP_WSL_USER first and the distro default user second, and a
payload with wsl2\bin\igneum-prove-host next to the app meets the requirement when the distro answers.
publish-jobs.sh: --requires none or "" publishes an empty list (none was a literal requirement, "" fell back
to the kind's default).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 16:54:02 +00:00
igneum-labs
89dd615fef Console Machines tab: app version, OTA state, power cap, jobs and status lines from the app log (0.3.3 header)
The IGNEUM-APP header is read from the newest upload's first line, from any tail, or from the first upload of
the run; the app's status: line supplies peers, lifetime accepted and synced when the node log tail has none.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 16:50:21 +00:00
igneum-labs
36faa7f73a Difficulty v2: Hetzner rehearsal passed (12 nodes, one chain through N + 600), binaries for every platform, the devnet rollout plan
rollout-v2.sh stages the Linux igneumd (gateways from the Mac, private nodes from their gateway), rolls one node at a time with
difficulty_v2_activation_daa in every override file, checks the common chain and watches the height; results/2026-10-04/
rollout-v2*.log and v2/ (the hash-rate step under v2 and the v1 comparison). docs/plans/difficulty-v2-rollout-devnet.md: the
binaries and their sha256, the activation rule (N = DAA at publish + 10,800; baked at the cut as DAA + 14,400), the exact
restart lines for the observer node, the seed and Mac node 1, the OTA path for the two PCs through NODE_OVERRIDE_PARAMS in
packaged-config.sh (the engine side landed in 5862bfb), the rehearsal record. Bench-log entry.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 15:19:31 +00:00
igneum-labs
11a373d882 Bench log: the app's prover loop end to end on the Mac (three runs, two tile defects fixed, open-shard fallback); proving-v0 plan status for the app and the packaging
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 15:04:49 +00:00
igneum-labs
eaa0f0e6a9 Prover service: with nothing assigned, an open shard (past its exclusive window, spec 7.2 item 4) is proven; the tile says open
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 15:02:24 +00:00
igneum-labs
1d27c7150c Igneum Miner 0.3.3: an unattended Windows miner is never stranded by an update (4 Oct 15:40 incident: both PCs stopped at the installer's UAC prompt). Per-user installer (PrivilegesRequired=lowest, %LOCALAPPDATA%\Programs, migration from Program Files offered only when someone is at the keyboard, firewall rule asked once on first run and mining without it); the Windows helper runs the installer FIRST with the engine still mining and only the installer's own stop step ends it, a declined or unanswered prompt leaves the machine mining with "OTA: waiting for administrator approval" / "administrator approval not given; waits for the next time someone is at this PC" in the log and the intake, retry on Install now, next start or 6 h; machines take turns (apply only in the minute = machine id8 mod 60) and hold while /api/live shows over 30% of identities gone in 10 minutes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:59:51 +00:00
igneum-labs
7990dd92e9 Prover service: the host and the exporter are polled children, killed when the app quits, proving is switched off or the limit passes; their output goes to per-run log files
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:51:08 +00:00
igneum-labs
919216eac8 Prover service: a paid shard is found through igneum_getProofRecords for the submitted segment (a slow proof outlives the work list's 60-block window)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:50:09 +00:00
igneum-labs
8345bc2f7a Ledger: F22 placed after F20
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:41:42 +00:00
igneum-labs
4951a46218 Ledger F22: certificates carry 8 to 10 of 12 votes, locks sit just above the floor
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:41:23 +00:00
igneum-labs
370eac454c Bench log: the observer gap was the Mac hibernating
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:41:05 +00:00
igneum-labs
18d77d4b68 Cloud devnet: two Singapore partitions and the hash-rate steps on the 12-node network, results and bench-log entry
partition.sh adapted to private-network mode: the cut sits on the region's gateway (INPUT, OUTPUT and FORWARD
against the far gateways' public IPs over 26611 and the DNAT ports 27001:27099), since a per-node port-26611 rule
leaves the DNAT links up. It now records the locks per side at cut, during, at heal and after convergence, the
first lock after the heal from the journals, and the heal time as each minority node's first chain removal of 5+
blocks (the sink-count criterion is tip churn on a healthy network). hop.sh and partition.sh hold the Mac awake
with caffeinate; analyze.py gains a 10-s hop series (difficulty, block count, 1- and 2-min rates, threads) and an
overshoot table; collect.sh writes hop-series.tsv and hop.md and gzips the journals.

Results 2026-10-04: partition 1 (window still filling) reorg 431/496 on the minority, 2 on the majority, healed in
10 and 14 s; partition 2 (locks active): minority locked nothing during the cut, majority locked every interval at
66.8% to 84.5% of total, 0 conflicting locks over 107 indices, healed in 11 and 15 s, first lock after heal 13 s.
Hash-rate steps x1.42, x0.70, x0.75, x1.32: difficulty overshoots x1.67, x0.66, x0.53, x1.60, settle 751 s,
never in 900 s, 241 s, 646 s. Failures stated in summary.md: the Mac hibernated during the hop (phase 2 ran 94
min), the first partition could not see locks, the script's heal and first-lock figures were artefacts (fixed),
and another agent's v2 rollout restarted every node during the second heal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:39:54 +00:00
igneum-labs
5862bfba0a Igneum Miner: the app log reaches the intake (the uploader sends the file main.rs named instead of guessing a stamp); every upload starts with 'IGNEUM-APP version=<v> machine=<id8> platform=<os> node=<igneumd version>', logged again at every engine start so an OTA-applied restart carries it; token redaction kept
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:37:53 +00:00
igneum-labs
e23d7f3d5c Packaging for proving v0: the Mac DMG carries igneum-prove-host and igneum-prove-export, the Windows payload carries the Linux host and exporter under wsl2/bin with the WSL2 scripts and the fixtures; the prover probes the shipped WSL2 binaries first and runs helpers by absolute path; push-inputs takes IGNEUM_NODE_SRC; the test script's --network-only mode
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:36:59 +00:00
igneum-labs
1a244b846c Fast time: the proving_v0_activation_daa row
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:26:51 +00:00
igneum-labs
a438fdbb0a Bench log: proving v0 end to end on the 3-node test network (CPU prover, 150.6 s, three nodes agree on the payout)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:26:41 +00:00
igneum-labs
c372254051 Igneum Miner 0.3.2: signed job channel, seed-mismatch and stall guards, power-cap readback, round-4 security fixes, node with the difficulty v2 switch
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:11:59 +00:00
igneum-labs
0df5ba7e6d Proving v0: the app's prove setting, Proving tile and Set up hook; spec 7.7 (records, assignment, payout, activation as implemented); proving-v0 plan status; ledger P21 and P22; test script fixes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:09:32 +00:00
igneum-labs
ed1cbb02eb Proving v0: payouts in the shard statement (fixture, ShardInput, executor), the empty-segment plan fix, host modes compressed and verify, exporter reads payouts; the app's prover service (src/prover.rs); the 3-node test network script (tools/proving-v0/run.mjs); proving_v0_activation_daa in the fast-time profile
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:06:26 +00:00
igneum-labs
2548e98460 Igneum Miner jobs: the remaining helpers by absolute path too (curl, nvidia-smi, tar, powershell, taskkill, bash, nohup through platform::tool)
a2c922e switched only wsl: BSD sed dropped the alternation. Now every Command::new in src/jobrun.rs goes
through platform::tool (R4.3.3).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:00:38 +00:00
igneum-labs
a2c922e69a Igneum Miner jobs: every helper by absolute path through platform::tool (R4.3.3: curl, nvidia-smi, wsl, tar, powershell, taskkill, bash, nohup)
The job runner launched its helpers by bare name; binary planting into a writable PATH entry fed an elevated
prompt was the round-4 finding. Fetched files were already sha256-checked before use (fetch and shard-benchmark
refuse a job without a 64-hex sha256 at parse time, fetch_file verifies before the rename).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 14:00:08 +00:00
igneum-labs
c4a2316222 Igneum Miner round-4 fixes: the dashboard token is never logged and token lines never upload (R4.3.8); every helper by absolute path and Program Files read-only, fallback worker build under the app data folder (R4.3.3); the download and the staged bundle re-verified right before the swap or the elevated run, quarantine stripped only after that (R4.3.5); mutating POSTs refused unless same-origin (R4.3.7); no rollback below min_supported_version and no automatic re-apply of a failed version (R4.3.6); the signed manifest's consensus.override written to override.json for --override-params-file with a safe-moment node restart and 'consensus switch at DAA N' on the node tile, an old node that rejects the file runs without it; devnet vote-key note in the key sheet and READMEs
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:58:23 +00:00
igneum-labs
06b27d81f2 Evidence row 30: four machines on the app
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:56:11 +00:00
igneum-labs
3491fa749e Site build: the bench scrub is self-contained Node (runs on Vercel and CI), fails on any private string
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:54:16 +00:00
igneum-labs
8f08af5318 Igneum console at the relay URL: Machines, Jobs, Builds, Chain, Work log, Results and the relay as tabs
relay/api/console.mjs reads the log intake (miner_logs) and console_items in Neon, the OTA manifest, the
CI json and the jobs file from the downloads host (DL_TOKEN in the project env, never in the client), and
igneum.network/api/live; 10 s cache per answer. tools/console.mjs: post --kind log|build|note, log, machines,
chain, jobs, builds, results, sync-bench, sync-dl, sync-hetzner, sync, url. The two Mac-side build scripts
post build events. Screenshots at 375 px and desktop in docs/design/console/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:53:33 +00:00
igneum-labs
c946034722 Evidence: rows 8 and 30 carry the outside Apple silicon laptop on the app (33 blocks, 21.0 MH/s), still tested by the team
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:53:15 +00:00
igneum-labs
48ce378881 Evidence: 4 October measurements (live hourly swap, first live lock and the 280 locks since, first GPU proof, one-click worker, generator v2, difficulty oscillation and v2 pending, 12-node propagation and partition, clock skew); rows 29 and 30 added; difficulty and floor claims softened
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:52:45 +00:00
igneum-labs
8d5a7c7948 Bench log: first outside machine on the devnet (an Apple silicon laptop through the app)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:51:32 +00:00
igneum-labs
b06db73e41 Public API: no peer addresses, no full key hashes, no payout addresses (R4.6.2, R4.6.8)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:47:39 +00:00
igneum-labs
b9dc430385 Site: the engineering log page renders a scrubbed copy of the bench log and the build fails on any private string (R4.6.1)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:46:44 +00:00
igneum-labs
377693d9fa Igneum Miner: the NVIDIA power cap is judged by reading nvidia-smi back (anything but the requested watts = NOT applied), the card tile and Settings say 'power cap: N W applied' or 'power cap NOT applied (needs the administrator prompt)' with a Retry, the elevated step runs through the window host (ShellExecuteEx runas, a UI context) with the PowerShell path as the 150 s fallback, events either way, cap state in the stability line (PC 2 mined uncapped at 118 MH/s on 0.3.1)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 13:43:04 +00:00