Skip to content

Lantern — status overview #24

Open

Description

@Reiers

2026-06-15 refresh: see the latest status COMMENT below — zero-Glif READ path is live (#43+#44) and the WRITE path is now local-capable (#45 Stages 1-5, live-verified on a calibration test deployment). The V1.5.3 snapshot below is historical.

Living overview. Lantern stays small, pure-Go, embeddable. Curio Core work lives on Reiers/curio-core (see #11 for the cross-repo thread).

What works today (V1.5.3 live; mainnet daemon bumped 2026-05-24)

Lantern is now a usable chain backend for SP deployments, not just a credibility-play light client.

Production-shape surface

  • Mainnet light client running on a mainnet test node, wired as secondary ChainApiInfo in Curio.
  • Public beacon on our public server: Bitswap state + F3 cert-exchange + lantern/beacon/v1 rendezvous.
  • HTTP gateway gateway.lantern.reiers.io (Cloudflare-fronted, nginx → :8088).
  • Installer endpoint get.lantern.reiers.io (Cloudflare Pages).
  • 5-of-N bootstrap quorum at first run (ChainSafe + PL libp2p + glif + chain.love).
  • Lotus-compat RPC: 71/71 Curio FULLNODE_API methods + 14/14 eth_* methods synapse-sdk uses (V1.4).
  • VMBridge for FEVM forwarding: eth_call/eth_estimateGas/eth_sendRawTransaction route to operator's choice of Forest/Lotus (V1.4).
  • DHT protocol-prefix fix: peer count climbs 4 → 80 in 3 minutes, stabilizes around MinPeers=50.
  • SIGTERM-responsive: clean shutdown in 0.55-0.58s across back-to-back lifecycle cycles.

Embeddable surface (the curio-core path)

  • pkg/daemon Daemon API exported. Curio Core consumes this in-process; no separate process required.
  • V1.5 today: pkg/daemon now wires the full chain-sync stack in embedded mode (49642e0). Header store at <data-dir>/<network>/headerstore, headnotify.Distributor over the store, hstore.Sync polling Glif. Embedded consumers can subscribe to head changes via Daemon.HeadChanges() directly — bypasses the HTTP/JSON-RPC out-channel restriction.
  • headnotify first-subscribe semantics fixed (6932227): emits {Type:"current", Val:nil} instead of an empty batch when no head observed yet. Downstream consumers (curio's chainsched) reject empty first batches.
  • Embedded-mode logging visible (7f11493): header-store wiring emits an Info-level log line regardless of EmbeddedMode, so operators can confirm the wiring from journalctl.

V1.3 calibration support (shipped earlier in this session)

  • build.Network selector + build/bootstrap_calibnet.go + --network mainnet|calibration flag on daemon and beacon subcommands.
  • Live calibration sync working in curio-core's embedded daemon (verified at calibration epochs 3743070-3743094+).

Open work

Architecture / swarm

Shipped today

  • pkg/daemon header store + headnotify.Distributor + hstore.Sync (49642e0)
  • Daemon.HeadChanges() accessor for embedded callers (49642e0)
  • headnotify: 'current' Val=nil on first subscribe (6932227)
  • pkg/daemon: log header-store wiring in embedded mode (7f11493)

UX

Cross-repo umbrella

Firewall

The Lantern repo MUST stay small. PDP-specific code, Curio integration logic, and SQLite/harmonytask wiring all live on Reiers/curio-core. The only Lantern-side surface for Curio Core is pkg/daemon. If that surface starts churning, that's the early-warning signal.

Today's pkg/daemon additions (header store wiring + HeadChanges accessor) are within scope: they expose existing internal subsystems (chain/header/store, chain/headnotify) to embedded callers without growing the conceptual surface. The standalone cmd/lantern already used them.

Architecture note (from Reiers/curio-core#12)

Lantern serves BOTH RPC surfaces now: Filecoin.* Lotus-compatible (chain RPC) AND eth_* (FEVM client traffic, synapse-sdk's primary surface). An SP running curio-core with embedded Lantern serves both surfaces without an external Glif sidecar. That's the architectural keystone the FilOzone client stack needed.

Activity

  1. Reiers commented on May 23, 2026

    @Reiers
    OwnerAuthor

    2026-05-23 evening — pkg/daemon RPC mount (V1.4 architectural foundation)

    What landed today

    12207e0 pkg/daemon: mount JSON-RPC server inline, expose AdminToken + MintToken

    Path A from today's curio-core wiring: finished the TODO(daemon-extraction) for the JSON-RPC server. Embedded callers (notably curio-core) now get a fully-functional /rpc/v1 endpoint without hand-rolling internal handler state or borrowing TrustedRoot directly.

    • Daemon struct gains rpcServer + auth fields, populated during Start.
    • New public API: AdminToken(), MintToken(perms []auth.Permission), FullNodeAPIInfo().
    • startInternal now: TrustedRoot anchor → combined.New(gateway, glif) fetcher → handlers.ChainAPI → rpc/server.New.
    • stopInternal does graceful srv.Stop(ctx).
    • Tests pass (./pkg/daemon, 2.4s). Full ./... build clean.

    What's still in cmd/lantern (not yet extracted)

    The lighter subsystems remain in cmd/lantern/main.go. Embedded consumers don't need them today; the cmd-line daemon does. Migration order for the rest:

    • libp2p host + DHT + gossipsub block ingestor
    • Bitswap client (for state-tree fetch speed)
    • VM bridge (for FEVM forwarding — see ask below)
    • Header store + sync agent (for ChainNotify, randomness queries)
    • Metrics + dashboard endpoints
    • Hello + ChainExchange responders

    Concrete consumer: curio-core wiring is live

    Curio-core now dials embedded Lantern at http://127.0.0.1:0/rpc/v1 (ephemeral loopback) with the self-minted admin JWT from Daemon.AdminToken(). Two clients side-by-side:

    • lotus/api/client.NewFullNodeRPCV1 → handles Filecoin.* (ChainHead, StateMinerInfo, etc.)
    • go-ethereum/ethclient → handles eth_* (chainId, getBalance, blockNumber, call, etc.)

    Surprise win: *ethclient.Client already satisfies curio/lib/ethchain.EthClient end-to-end (including SendRawTransactionSync, SubscribeTransactionReceipts, BlobBaseFee). No shim required.

    Verified end-to-end on a test deployment

    curio-core:
      lantern:  anchored at epoch 3741002
      lantern:  rpc at http://127.0.0.1:41865/rpc/v1 (in-process)
    
    • Filecoin.ChainHead via in-process /rpc/v1: real TipSet ✓
    • eth_chainId: 0x4cb2f ✓
    • eth_getBalance(0xe5a17b...): 0x2544faa778090e00000 ✓
    • eth_blockNumber: 0x39154a ✓

    Size discipline holding

    • Lantern binary: 40 MB (linux/amd64, static, no CGo)
    • Source: 33,676 LoC
    • Module: 5.8 MB
    • Running mainnet beacon disk footprint: ~200 MB (Badger header store dominates)

    The "minimal node that just works under 1GB" architectural promise is intact. pkg/daemon extraction doesn't add weight; it just exposes the right embedded surface.

    Ask: which subsystems should pkg/daemon own vs. stay in cmd/lantern?

    Working theory: pkg/daemon owns everything an embedded consumer needs (RPC, chain reads, signing). cmd/lantern owns operator-facing surface (libp2p networking, metrics dashboard, signal handling, the install/service flows).

    Concretely: should libp2p + bitswap migrate to pkg/daemon? Pros: curio-core gets faster state-tree fetches for free. Cons: pulls libp2p stack into every embedder, increases curio-core binary by ~10 MB. Open question for #11 / #24.

    Open issues snapshot

    • #3 p2 — StateMinerInfo cold state 30s timeout (bitswap/HAMT walk, not peer count). Real perf bug. Becomes load-bearing when curio-core does proof challenges.
    • #6 p2 — Beacon cert-exchange should peer to other Lantern beacons by default, not Glif. Swarm-thesis correctness.
    • #11 p2 — Curio Core umbrella (this work's parent epic; arguably should close now)
    • #23 p3 — Mac .app notarization (cosmetic)

    Status

    V1.4 baseline holds. Architecture for embedded consumers is now stable. Next Lantern work item that actually affects curio-core: deciding whether libp2p+bitswap belong in pkg/daemon (open question above) and #3 (state-tree fetch performance, becomes critical once curio-core does cold proof reads).

  2. Reiers commented on May 23, 2026

    @Reiers
    OwnerAuthor

    Day 8 milestone hit (2026-05-23 20:00 CEST)

    pkg/daemon RPC + VMBridge + 4 new forwarded eth_* methods. Real on-chain tx through embedded Lantern. txHash 0x4f350323788ecfd52454eefcde8d070f9ebbc9363b9b0e6cdeb5e5db5e90bfe8 on calibration block 3,741,096. Full ship report on #11 and curio-core#16.

  3. Reiers commented on Jun 15, 2026

    @Reiers
    OwnerAuthor

    🔄 Status refresh — 2026-06-15: zero-Glif read path LIVE, write path local-capable (Stages 1-5)

    The big shift since the V1.5.3 snapshot above: Lantern no longer needs the VMBridge for FEVM reads, and the write path is now local-capable too. This is the keystone that lets an SP run curio-core with NO external Glif/Forest RPC.

    Local FEVM execution — the keystone (#43, #44)

    • Local FEVM execution for eth_call (remove Glif VMBridge dependency) #43 (DONE): pure-Go EVM interpreter. eth_call executes locally against verified state, bridge fallback on miss. v1.6.x.
    • Embedded state-block availability for local eth_call (last blocker for --vm-bridge-rpc-disable) #44 (DONE, v1.7.0-v1.7.2): embedded state-block prefetcher + retry-on-miss + adaptive warming. On every head advance Lantern walks the contract storage tries (PDPVerifier, FWSS, SP-registry, USDFC) into local cache; eth_call misses feed the missed address back to the prefetcher (self-expanding warm-list), and the walk retries transient misses + gives deep contracts (FilecoinPay) a 4x node budget.
    • Verified live on a calibration test deployment: learned FilecoinPay + a linked contract from misses, walked the trie 256→506→744 nodes, faults dropped to 0, a 220-read sample served 100% local, 0 bridge fallback. The read path is zero-Glif.

    Local FEVM write path (#45, Stages 1-5 DONE + live-verified)

    Key finding: every primitive already existed in Lantern — this was wiring + an ETH↔Filecoin tx codec, not new infra.

    • Stage 1 — eth_getTransactionCount (nonce): served from the accessor, anchored at the live head (caught+fixed a boot-anchor staleness bug that lagged a busy EOA ~44 txs = nonce-collision risk). 4/4 live EOA senders nonce-match Glif exactly. v1.7.4.
    • Stage 2 — eth_estimateGas: local via vm.GasEstimator (conservative method-based ceiling). Verified local ≥ glif always — never under-estimates (the invariant a writing SP needs). v1.7.3.
    • Stage 3 — ETH-tx codec (chain/ethtx): new pure-Go pkg, NO go-ethereum, NO FFI. RLP codec + ParseSignedEIP1559 + ecrecover Sender() + ToSignedFilecoinMessage(). Verified by full round-trip (genkey→sign→encode→decode→ecrecover==addr). v1.7.5.
    • Stage 4 — eth_sendRawTransaction: decode → SignedMessage → MpoolPush (gossipsub /fil/msgs). Bridge fallback only on decode failure, never after publish (double-broadcast guard). Wired the mempool publisher into the embedded daemon (was missing). v1.7.6-v1.7.7.
    • Stage 5 — eth_getTransactionReceipt: resolves SP-originated txs via the sent-tx index → StateSearchMsg → eth-receipt shape. nil-until-found. v1.7.6.
    • Verified live on a calibration test deployment: a real signed EIP-1559 tx routed LOCAL (published locally, no bridge, eth hash matched client-computed TxHash), receipt resolved LOCAL.

    All write-path methods (nonce/gas/send/receipt) are now local-capable.

    Remaining before full bridge-off

    Also shipped this stretch (cross-ref curio-core)

    Firewall check

    chain/ethtx is new but self-contained and Lantern-general (any FEVM client needs it), not curio-core-specific — within scope. pkg/daemon grew one field (mempool publisher wiring on the existing head-tracking pubsub). The dependency direction stays curio-core → lantern.

    HEAD 023357b, tag v1.7.7. Tracker for the write path: #45.

  4. Reiers commented on Jun 15, 2026

    @Reiers
    OwnerAuthor

    📍 Current open issues (2026-06-15, post-cleanup)

    Cleaned up the tracker so this reflects reality. 6 open issues:

    FEVM / zero-Glif (the headline track)

    Standing items

    CI

    The dependency story (for a fresh reader)

    #43 (read: local eth_call)  ──done──┐
    #44 (state availability)    ──done──┤──► zero-Glif READ path ✅ (proven on a calibration test deployment)
                                        │
    #45 (write: nonce/gas/send/receipt) ──Stages 1-5 done──┐
    #46 (real-SP bridge-off: parser + maxPriorityFeePerGas)─┴──► zero-Glif WRITE path (gate)
                                                                  │
                                                                  └──► --vm-bridge-rpc-disable on calibration → mainnet
    

    Firewall holds: chain/ethtx is Lantern-general; pkg/daemon grew only the mempool-publisher wiring. Dependency direction stays curio-core → lantern.

  5. Reiers commented on Jun 15, 2026

    @Reiers
    OwnerAuthor

    Added #47 — mpool pending-tx confirm + rebroadcast loop. Closes the "published-but-unmined message silently stalls" gap (Lantern is a fire-and-forget publisher today, no rebroadcast/confirmation). Design: 3-epoch confidence window → rebroadcast the same signed bytes (idempotent, same nonce/CID), give up loudly on stale fee-cap; auto-RBF explicitly out of scope. Complements the write path (#45) and the bridge-off gate (#46). Status: building.

  6. Reiers commented on Jun 15, 2026

    @Reiers
    OwnerAuthor

    Status refresh (2026-06-15) — zero-Glif write path + bitswap block source

    Current: v1.7.16 (HEAD 2b2ffff). CI green (hermetic: -short + LANTERN_OFFLINE=1).

    Landed today

    Open

    Durable lessons

    • Filecoin namespaces libp2p protocols: DHT = /fil/kad/<net>, bitswap = /chain/ipfs/bitswap. Any boxo client vs Filecoin must set the prefix.
    • Message/receipt AMTs = go-amt-ipld v2 (top byte 0x83); FEVM contract state = v4 (0x84).
  7. Reiers commented on Jun 21, 2026

    @Reiers
    OwnerAuthor

    2026-06-22 — current status (supersedes the 2026-05-23 V1.4 snapshot above)

    Lantern has moved a long way since that V1.4 note. The headline: the bridge is no longer load-bearing. Both the read path and the write path are served from locally verified state + libp2p, with the VM bridge proven removable.

    Where we are: v1.7.22 (mainnet + calibration)

    • Released: v1.7.22 (latest). curl -fsSL https://get.golantern.io | bash.
    • Binary: ~42 MB linux/amd64, static, CGO_ENABLED=0. ~40.8k LoC. The "minimal node under 1 GB" promise holds (mainnet disk footprint still ~200 MB, Badger header store dominates).
    • Live: powers filcensus.reiers.io and is embedded in Curio Core, which completed its first mainnet PDP end-to-end on it (2026-06-21).

    Zero-Glif: done end-to-end (the big arc since V1.4)

    The entire read+write path now resolves locally with the bridge disabled, byte-identical to Glif where it counts:

    Operational hardening (v1.7.17 → v1.7.22)

    • Secrets isolation + auto-backup (v1.7.19, Stale-restart auto-heal + keystore-safety (release blocker for tester announcement) #51): keystore/JWT/tokens under ~/.lantern/<net>/secrets/, auto-migrated, auto-backed-up on every start (keep 7). Recovery ops structurally can't delete keys.
    • Stale-restart auto-heal (v1.7.18): sync re-anchors near live head past deep lag instead of replaying days.
    • Service install passphrase fix (v1.7.22): lantern service install now wires the keystore passphrase into the generated unit/plist (--passphrase-file for encrypted; explicit unencrypted default) so background/non-TTY startup no longer hard-errors.

    Open issues (current)

    Closed since V1.4

    #43, #44, #45 (write-path engine), #46, #48, #49, #51 — the whole zero-Glif read+write keystone line.

    Bottom line: Lantern is a working light client and a working local execution/submission layer. The path from "trust an RPC" to "verify it yourself" is closed for reads and for writes; #50 is the last reliability item before flipping an SP fully bridge-off on a production network.

  8. Reiers commented on Jun 29, 2026

    @Reiers
    OwnerAuthor

    2026-06-29 — current status (supersedes the 2026-06-22 v1.7.22 snapshot above)

    Three release trains since the last refresh: the v1.7.23/24 receipt-field work, the v1.8.0 security-hardening sweep, and two field-driven sync/read-path fixes (v1.8.1, v1.8.2). The bridge stays non-load-bearing on both read and write paths; these releases hardened the trust surface and closed real desync/coverage bugs reported from the field.

    Where we are: v1.8.2 (mainnet + calibration)

    • Released: v1.8.2 (latest). Install unchanged.
    • Binaries: darwin-arm64, linux-amd64, linux-arm64 + source tarball, all CGO_ENABLED=0 -trimpath, SHA-256 manifests published per binary.
    • CI green (hermetic: -short + LANTERN_OFFLINE=1); go vet + gofmt clean across the module.

    Landed since v1.7.22

    v1.7.24 — receipt completeness

    • eth_getTransactionReceipt now includes from / to / contractAddress / effectiveGasPrice, fixing cast receipt "missing field from" and unblocking gas-cost display in consumers.

    v1.8.0 — security hardening (#54–#59)

    v1.8.1 — sync resilience + chain-watcher (#53, #68) — both field-reported

    v1.8.2 — bridge-off read-path coverage for stock Curio (#69) — field-reported

    • The FEVM prefetcher only warmed addresses its consumer injected. curio-core injects the PDP set itself, so bridge-off reads always worked there; stock upstream Curio injects nothing, so the prefetcher never started and contract eth_calls (e.g. Settle's ServiceProviderRegistry.getProviderByAddress) local-missed → bridge → FEVM method requires --vm-bridge-rpc.
    • Lantern now ships a built-in per-network warm-set (PDPVerifier, FWSS, ServiceProviderRegistry, USDFC; mainnet + calibration), merges it with consumer-supplied addrs, and starts the prefetcher whenever the merged set is non-empty. Zero-Glif reads now work for any Lotus-API consumer with no wiring and no --vm-bridge-rpc.

    Open work

    Architecture / read-write completeness

    UX

    Repo hygiene (2026-06-29)

    • Dropped the committed per-tag RELEASE-NOTES-v*.md files (redundant — release notes live on the GitHub release; CHANGELOG.md is the canonical in-repo history) and the internal INSTALLER-SPEC.md. .gitignore now keeps future per-tag notes out of the tree.

    Firewall (unchanged, still holding)

    The only Lantern-side surface for Curio Core is pkg/daemon. PDP-specific code, Curio integration, and SQLite/harmonytask wiring all live on Reiers/curio-core. The #69 fix is in-scope: it adds well-known address constants + a merge helper to the existing prefetcher, not PDP logic.

  9. Reiers commented on Jul 1, 2026

    @Reiers
    OwnerAuthor

    2026-07-01 refresh — PDP/mid tier landed + Full-node track opened

    Work on branch fix/lightnode-messages-2026-07-01 (local, not yet pushed). Full Go suite green throughout (build + vet + gofmt + race where relevant, 0 failures).

    Three-tier node model (chosen at INSTALL time, not a runtime flag)

    The installer asks Light / PDP / Full and persists the choice (lantern node-type, pkg/nodeprofile), so the light node stays light — only the chosen tier provisions the larger footprint.

    Head-trust spine hardened (#79 / #80 / #85 / #86)

    Merged the #86 divergence monitor + blockpub gate; added continuous Kind-diverse head corroboration (Forest RPC + gateway + Glif as distinct source kinds) and an observable HeadCorroboration() status. Status-only, never auto-halts (a false positive must not self-DoS).

    Full-node feasibility settled (investigated against lotus master)

    Full block validation needs filecoin-ffi (Rust) in exactly two places: VerifyWinningPoSt (a Groth16/BLS12-381 SNARK) and TipSetState (FVM/WASM re-exec). Everything else is pure-Go BLS/arith we already have.

    Staged "kill Rust" roadmap:

    Security angle: a snapshot import trusts one host for all pre-snapshot state; Lantern's multi-source F3-finalized quorum anchor is strictly stronger. Plus wallet import-from-lotus + passphrase (#93).

    New issues from this thread

    #87 (Full epic), #88 (Stage B WinningPoSt), #89 (Stage C wazero FVM), #90 (full-node tier pipeline), #91 (BlockSync snapshot-free), #92 (retention pruning), #93 (wallet import-lotus), #94 (PDP tier + live-soak gate).

    Honest open gates

  10. added a commit that references this issue on Jul 13, 2026
  11. Reiers commented on Jul 14, 2026

    @Reiers
    OwnerAuthor

    2026-07-14 refresh (supersedes the 2026-07-01 snapshot above)

    Two big arcs landed since the last refresh: the v1.8.5 hardening train and the v1.9.0-rc1 + Full-Node epic tail. The bridge-off story is now provable end-to-end (--no-fallback-rpc runs Glif-free from cold boot), a first-class local Curio devnet is supported, and the two Rust-in-critical-path dependencies (WinningPoSt SNARK verify + FVM execution) both have pure-Go replacements landed and vector-tested against filecoin-ffi.

    Where we are: v1.9.0-rc1 → v1.9.0 (ready to tag)

    • Released so far: v1.8.3, v1.8.4, v1.8.4-m, v1.8.5, v1.9.0-rc1. main is now v1.9.0-rc1-28-g996833f with 8 landed PRs on top of rc1.
    • Binaries: darwin-arm64, linux-amd64, linux-arm64 + source tarball, CGO_ENABLED=0 -trimpath, per-binary SHA-256 manifests.
    • CI green (hermetic: -short + LANTERN_OFFLINE=1); go vet + gofmt clean.

    Landed since v1.8.2

    v1.8.3 to v1.8.5 (bridge-off hardening + soft-consensus + PDP scaffolding + wallet import)

    v1.9.0-rc1 to main (bridge-off polish + devnet + snapshot-free boot)

    Repo hygiene (2026-07-14)

    • Consolidated 4 LICENSE files (LICENSE, LICENSE-LOTUS, LICENSE-LOTUS-APACHE, LICENSE-LOTUS-MIT) into a single LICENSE with full Apache-2.0 + full MIT + Lotus NOTICE. No legal change; the old top-level LICENSE was actually broken (pointed at files that didn't exist).
    • Moved MODULES.md / SCOPE.md / TRUSTED-ROOT.md to docs/design/. Deleted stale RELEASE-NOTES-v1.8.5.md. Root .md files down from 12 + 4 licenses to 5 + 1 license.

    Full Node epic (#87) — Stages B and C landed in a single push

    Full block validation historically needed filecoin-ffi (Rust) in exactly two places: VerifyWinningPoSt (Groth16/BLS12-381) and TipSetState (FVM/WASM re-exec). Both now have pure-Go replacements landed on main:

    Stage B — pure-Go WinningPoSt verify (#88, PRs #134 + #135, closed)

    • proofs/groth16.go: pure-Go Groth16 verify over BLS12-381 using gnark-crypto PairingCheck. Bellperson-compatible parsers.
    • proofs/: verifies a real filecoin-ffi 2KiB WinningPoSt proof, rejects tampered. Bit-for-bit fidelity vs Rust reference. Committed the real proof fixture + official v28 VK. 12 tests.
    • Reusable capability unlocked: can generate real Filecoin proof vectors locally against prebuilt libfilcrypto (no Rust compile).

    Stage C — pure-Go FVM prototype (#89, closed)

    Open work

    Full Node epic remaining (#87)

    Correctness / coverage

    UX / longstanding

    Firewall (unchanged)

    The only Lantern-side surface for Curio Core stays pkg/daemon. PDP-specific code, Curio integration, SQLite/harmonytask wiring all live on Reiers/curio-core. research/fvm/ is a scoped module with its own go.mod and a CI wazero-only dependency firewall on the main module. Bringing FVM execution into shipping binaries is a deliberate future step, not an accident.

    Bottom line: Lantern light + PDP tiers are shipped and hardened; the Full Node tier has both its "impossible without Rust" pieces done and vector-tested on main, waiting on integrator wiring to become the runnable third tier. Zero Rust in critical path is now a code reality, not a plan.

  12. Reiers commented on Jul 23, 2026

    @Reiers
    OwnerAuthor

    2026-07-23 refresh — the write path becomes real; v1.9.0 + v1.9.1 shipped

    Releases: v1.9.0 (54 commits of rc1-hardening: bridge-off #76, ChainExchange #91, pure-Go WinningPoSt verify, FVM prototype, devnet) and v1.9.1 (eth_getLogs structured errors, gasPrice premium). Both pre-stable: the #104 soak is the stable gate and it's now actually running.

    Today's arc: 'a node that can send any message on-chain'

    Deep pass against fresh lotus master + live cluster testing found and fixed, in merge order:

    Live proof (calibration, standalone node, zero Lotus): two sends through Lantern's own gossipsub mpool, independently confirmed by Glif — CIDs bafy2bzaceaknsr...fpajfc (ExitCode 0 @ 3916380) and bafy2bzacearvl...jjysw (ExitCode 0 @ 3916431, CLI wallet send, funds verified moved).

    Fleet

    Open (tracked)

  13. Reiers commented on Oct 26, 2026

    @Reiers
    OwnerAuthor

    Status 2026-10-26

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions