You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: refresh CLAUDE.md, devnet skills, and Table docs to match code
The docs drifted from the code as PRs landed:
- CLAUDE.md: 12 workspace crates (net/api and common/test-fixtures were
missing from the tree), Store buffer names (new_payloads/known_payloads),
BlocksByRange in req/resp, actual fetch backoff (5ms doubling,
MAX_FETCH_RETRIES attempts), XMSS signature size (SIGNATURE_SIZE),
libssz/libssz-merkle dependency renames, hash_tree_root(), the stf
spec-test location, and a docs/ index in Resources
- devnet-log-review skill: the justification threshold is
3*votes >= 2*N, i.e. ceil(2N/3) — the worked examples said 5-of-6 and
7-of-9 where the code needs 4 and 6; block proposal flow updated for
the pre-build path (#445/#474)
- test-pr-devnet skill: point log analysis at this repo's own
devnet-log-review skill and fix a broken relative link to CLAUDE.md
- tables.rs: BlockSignatures is keyed (slot || root) for slot-ordered
pruning and entries are pruned below the finalized boundary; States
anchors reference SNAPSHOT_ANCHOR_INTERVAL by name
- At least one node **must** be started with `--is-aggregator` to finalize blocks
319
-
- Without this flag, attestations pass signature verification and are logged as "Attestation processed", but the signature is never stored for aggregation (`store.rs:368`), so blocks are always built with `attestation_count=0`
328
+
- Without this flag, attestations pass signature verification and are logged as "Attestation processed", but the signature is never stored for aggregation (the `is_aggregator` gate in `on_gossip_attestation`, `store.rs`), so blocks are always built with `attestation_count=0`
320
329
- The attestation pipeline: gossip → verify signature → store gossip signature (only if `is_aggregator`) → aggregate at interval 2 → promote to known → pack into blocks
321
330
- **Symptom**: `justified_slot=0` and `finalized_slot=0` indefinitely despite healthy block production and attestation gossip
322
331
@@ -368,7 +377,7 @@ and are consumed during the tick pipeline (promotion at intervals 0/4,
368
377
aggregation at interval 2).
369
378
370
379
### State Root Computation
371
-
- Always computed via `tree_hash_root()` after full state transition
380
+
- Always computed via `hash_tree_root()` after full state transition
372
381
- Must match proposer's pre-computed `block.state_root`
0 commit comments