Skip to content

feat(node)!: adopt the released peer-stack cascade + read multi-frame chunk_lens layouts (#1668) - #114

Draft
MichaelTaylor3d wants to merge 3 commits into
mainfrom
loop/1668-cascade-adoption/dig-node
Draft

feat(node)!: adopt the released peer-stack cascade + read multi-frame chunk_lens layouts (#1668)#114
MichaelTaylor3d wants to merge 3 commits into
mainfrom
loop/1668-cascade-adoption/dig-node

Conversation

@MichaelTaylor3d

Copy link
Copy Markdown
Contributor

WIP lane anchor. Adopts dig-nat 0.14 / dig-dht 0.8 / dig-download 0.12 / dig-peer 0.7 / dig-peer-selector 0.7 / dig-gossip v0.17.0, lifts the readable-resource ceiling via the paged prologue, fixes the IPv6-literal DIG_NODE_HOST brick (#1682), and reports the #1657 evidence.

Refs #1668, #1641, #1682, #1657

MichaelTaylor3d and others added 2 commits July 27, 2026 06:22
Refs #1668

Co-Authored-By: Claude <noreply@anthropic.com>
Adopt the released peer-stack cascade from crates.io plus the dig-gossip
v0.17.0 tag:

- dig-nat 0.13 -> 0.14
- dig-dht 0.7 -> 0.8
- dig-download 0.11 -> 0.12
- dig-peer 0.6 -> 0.7
- dig-peer-selector 0.6 -> 0.7
- dig-gossip git rev b065e70c -> ce6cce75 (tag v0.17.0), in lockstep with
  the two workspace `[patch.crates-io]` revs for its vendored
  chia-protocol / chia-sdk-client forks (a git dep's own patches do not
  apply transitively, so the root manifest re-declares them).

BREAKING CHANGE: the peer stack moves to the 0.14 dig-nat generation; a
host embedding dig-node-core must move its own peer-stack deps in lockstep.

Refs #1668

Co-Authored-By: Claude <noreply@anthropic.com>
@MichaelTaylor3d
MichaelTaylor3d force-pushed the loop/1668-cascade-adoption/dig-node branch from 9231303 to 63c5ed4 Compare July 27, 2026 15:22
… the node

`Config::bind_addr` rendered its authority as `format!("{host}:{port}")`, which is
invalid for every IPv6 literal: `DIG_NODE_HOST=::1` produced the unbindable
`::1:9778`, and the primary bind failure is documented as FATAL — so one missing
pair of brackets stopped the node from starting at all. The same string is reused
for the CLI control-plane URL and `/health`'s `addr`, so all three were affected.

Both `bind_addr` and `bind_addr_v6` now render through `SocketAddr`, which brackets
a v6 literal for free. `open::browser_host` was already correct (it bracketed by
hand) but built its authority with the same banned idiom; it becomes
`browser_authority`, rendering an explicit host through `SocketAddr` and
interpolating only the port for the `localhost` NAME case.

That empties the `banned_address_patterns` tracked-violation list, which the guard
also used as its cross-crate reach detector. Since an empty list makes that
assertion trivially true, the detector is replaced by an explicit
`SIBLING_CRATE_UNDER_SCAN` assertion, which holds whether or not anything is ever
tracked again, and the entry-matching self-test now runs against a synthetic list
rather than going vacuous.

SPEC.md §4.1 states the rendering requirement normatively.

BREAKING CHANGE: an operator who set an IPv6 `DIG_NODE_HOST` and worked around the
fatal bind failure by also setting a v4 host now gets the v6 bind they asked for.

Refs #1682, #1593

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant