Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
182 changes: 181 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ edition = "2021"
# the ROOT manifest (`[workspace.package].version`), so it MUST be set here for a
# release to fire (§3.6). The library crates (dig-node-core/dig-runtime/dig-wallet)
# keep their own independent versions — only the released binary tracks the workspace version.
version = "0.37.1"
version = "0.38.0"

# Release hardening, matching digstore: keep integer-overflow checks ON in release.
# The node parses untrusted serialized input and does offset/length arithmetic over
Expand Down
18 changes: 18 additions & 0 deletions DEVELOPMENT_LOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,24 @@ High-signal realizations from debugging/development: non-obvious cross-system co
sharp edges, and gotchas. Concise durable facts with context — NOT a change diary. See
`CLAUDE.md` §4.5 for the maintenance contract (a curator periodically re-verifies + prunes).

## The node emitted tracing into the void — no subscriber was ever installed (#553)

`dig-node-core` and its P2P/TLS stack emit `tracing` events, but `dig-node-service` installed NO
`tracing-subscriber`, so every event was silently DROPPED and a Windows-service run (no console)
produced no log at all. The fix adopts the shared `dig-logging` crate at the SERVE entrypoints
(the foreground `run`/unix daemon in `entrypoint::block_on_serve`, and the Windows service body in
`win_service::run_service` — one-shot CLI commands deliberately do NOT install it). Sharp edges:

- `tracing` has ONE global subscriber per process, and `dig_logging::LogGuard` is not `Clone` and
must be HELD for the process lifetime (dropping it flushes/detaches the file writer). So the guard
lives in a process-global `OnceLock` in `logging.rs` rather than threaded through `serve`'s
signature + every test caller — that also gives `control.log.setLevel` the reload handle for free.
- Per-request logging (`logging::log_rpc_dispatch`) takes ONLY the method name, never `params` — a
control/pairing body carries the control/paired token (dig-logging SPEC §7 never-log), so the
logger's signature makes leaking it impossible. A `tests/never_log.rs` capture test locks this in.
- Windows MAX_PATH: a deeply-nested worktree overflows 260 chars building `libz-sys`/cmake; set
`CARGO_TARGET_DIR` to a short path (e.g. `C:/t553`) to build/test from such a worktree.

## Bare-git dependency version pins unify across the WHOLE dependency graph, not per-manifest (#494)

A `git`-sourced Cargo dependency with NO `rev`/`branch`/`tag` is identified purely by its URL —
Expand Down
Loading
Loading