Task
dig-gossip is consumed by a git rev rather than a published version — an NC-7 violation that no index
check can see.
Pinned at rev 51054a41 in dig-node's manifests.
NC-7 (§3.6, HARD RULE): every crate under modules/crates is a real crates.io-published crate, never
git-dep-only, and consumers depend on the published version, never git = ….
Why this one survived when others were caught
A git-sourced dependency is structurally invisible to the index.crates.io freshness check that §2.4b
prescribes: the registry has nothing to report, so the dep reads as fine forever. That is the same
blind spot that let digstore-chain drift undetected until it was found blocking three epics at once, and
it is now written into CLAUDE.md §2.4b — but the rule only helps if someone looks.
Measured earlier in this ecosystem: a rev-pinned dig-gossip had drifted two minors behind its own
main — rev 51054a41 corresponded to v0.25.0 while main was at v0.30.0 with a dependency cascade
already adopted. Verify the current gap before assuming it is the same one.
And check whether dig-gossip is published at all. A prior measurement found
index.crates.io/di/g-/dig-gossip returning 404 — if that is still true, this is not a bump but a
publish-first job, and the NC-7 remedy is to publish the crate before any consumer can depend on it by
version.
Scope
- Measure: is
dig-gossip on the index? If yes, at what version, and how far is 51054a41 behind
main?
- If unpublished — publish it (§3.6: new crates ship the publish workflow and a real SemVer version;
a crate is not done until it is live on crates.io and its consumers have migrated off any git dep).
- Then repoint dig-node from the rev to the published version.
Release-first (§4.1) binds: you cannot depend on a version that is not published. If dig-gossip has
its own unpublished dependencies, walk that chain bottom-up and say what it was.
The trap to expect on the repoint
Moving off a git rev is not a no-op even when the code is identical. A rev pin and a version pin
resolve differently, and a caret-compatible sibling can silently leave an old line alive — measured here:
a cargo update -p dig-peer-selector patch bump rewrote 190 lock lines and left two dig-nat lines
and two dig-tls lines while printing success.
Verify the final state from the resolved Cargo.lock, not the caret declarations, and confirm one line
per family among crates this ecosystem declares. cargo tree -d is not a usable gate here —
chia-bls alone resolves to several lines whose roots are upstream (clvmr, chialisp) and reach no
public DIG signature. Trace a duplicate to its root and report the trace instead.
Note on dig-node's own dep state
§2.4b is currently unsatisfiable in dig-node without a full cascade — five semver-incompatible dig-*
steps (dig-nat 0.18→0.21, dig-tls 0.3→0.4, dig-peer 0.11→0.12, dig-dht 0.11.1→0.12.1,
dig-download 0.19→0.20.4), and dig-wallet is stranded on the chia 0.26 line because the chia umbrella
crate has no 0.36 release (tracked on dig-node#308). Do not attempt that cascade here — this ticket
is the git-rev violation only. Say clearly if the repoint cannot be done without it.
Evidence
- Verify any publish from the INDEX, not the workflow log — a green publish job is not a published
crate. curl -sH 'User-Agent: dig-loop' https://index.crates.io/<a>/<b>/<crate>; the header is
required or the response reads exactly like "not published". Use a known-bogus control.
- Read passed-counts, never
ok.
Provenance
Surfaced by the review gate on DIG-Network/dig-node PR #347 (eco#2760 / #253), and independently by the
lane that fixed it — non-gating there, filed here so it is not rediscovered a third time.
Task
dig-gossipis consumed by a git rev rather than a published version — an NC-7 violation that no indexcheck can see.
Pinned at rev
51054a41in dig-node's manifests.NC-7 (§3.6, HARD RULE): every crate under
modules/cratesis a real crates.io-published crate, nevergit-dep-only, and consumers depend on the published version, never
git = ….Why this one survived when others were caught
A git-sourced dependency is structurally invisible to the
index.crates.iofreshness check that §2.4bprescribes: the registry has nothing to report, so the dep reads as fine forever. That is the same
blind spot that let
digstore-chaindrift undetected until it was found blocking three epics at once, andit is now written into CLAUDE.md §2.4b — but the rule only helps if someone looks.
Measured earlier in this ecosystem: a rev-pinned
dig-gossiphad drifted two minors behind its ownmain— rev51054a41corresponded to v0.25.0 whilemainwas at v0.30.0 with a dependency cascadealready adopted. Verify the current gap before assuming it is the same one.
And check whether
dig-gossipis published at all. A prior measurement foundindex.crates.io/di/g-/dig-gossipreturning 404 — if that is still true, this is not a bump but apublish-first job, and the NC-7 remedy is to publish the crate before any consumer can depend on it by
version.
Scope
dig-gossipon the index? If yes, at what version, and how far is51054a41behindmain?a crate is not done until it is live on crates.io and its consumers have migrated off any git dep).
Release-first (§4.1) binds: you cannot depend on a version that is not published. If
dig-gossiphasits own unpublished dependencies, walk that chain bottom-up and say what it was.
The trap to expect on the repoint
Moving off a git rev is not a no-op even when the code is identical. A rev pin and a version pin
resolve differently, and a caret-compatible sibling can silently leave an old line alive — measured here:
a
cargo update -p dig-peer-selectorpatch bump rewrote 190 lock lines and left twodig-natlinesand two
dig-tlslines while printing success.Verify the final state from the resolved
Cargo.lock, not the caret declarations, and confirm one lineper family among crates this ecosystem declares.
cargo tree -dis not a usable gate here —chia-blsalone resolves to several lines whose roots are upstream (clvmr,chialisp) and reach nopublic DIG signature. Trace a duplicate to its root and report the trace instead.
Note on dig-node's own dep state
§2.4b is currently unsatisfiable in dig-node without a full cascade — five semver-incompatible
dig-*steps (
dig-nat0.18→0.21,dig-tls0.3→0.4,dig-peer0.11→0.12,dig-dht0.11.1→0.12.1,dig-download0.19→0.20.4), anddig-walletis stranded on the chia 0.26 line because thechiaumbrellacrate has no 0.36 release (tracked on dig-node#308). Do not attempt that cascade here — this ticket
is the git-rev violation only. Say clearly if the repoint cannot be done without it.
Evidence
crate.
curl -sH 'User-Agent: dig-loop' https://index.crates.io/<a>/<b>/<crate>; the header isrequired or the response reads exactly like "not published". Use a known-bogus control.
ok.Provenance
Surfaced by the review gate on
DIG-Network/dig-nodePR #347 (eco#2760 / #253), and independently by thelane that fixed it — non-gating there, filed here so it is not rediscovered a third time.