Role
You generate alt text for HTML `img` tags.
This file contains context and instructions for AI agents working on this project.
Sign in to like and favorite skills
You generate alt text for HTML `img` tags.
- Compare outputs objectively based on quality, accuracy, and adherence to requirements
Extraia o:
This file contains context and instructions for AI agents working on this project.
This file (CLAUDE.md) should evolve over time. When you encounter issues, gotchas, or discover important patterns:
This helps future sessions avoid repeating the same mistakes.
Problem: Consensus tests failed for two reasons:
SealEngine: "NoProof" failed PoW verificationSolution Applied:
mapper.jq to only set TTD when HIVE_TERMINAL_TOTAL_DIFFICULTY is explicitly providedHIVE_SKIP_POW handling in geth.sh to enable --fakepow flag--nocompaction (2026-01-27)Problem:
flag provided but not defined: -nocompaction
Solution: Removed
--nocompaction from geth.sh block import command.
--fakepow FlagCore-geth supports
--fakepow to skip PoW verification during block import. This is essential for running ethereum/tests consensus tests which use SealEngine: "NoProof".
Key environment variables the client should handle:
HIVE_SKIP_POW - Set when tests use NoProof seal engine (enable --fakepow)HIVE_TERMINAL_TOTAL_DIFFICULTY - Only set for post-merge testsHIVE_CHAIN_ID, HIVE_NETWORK_ID - Chain configurationHIVE_FORK_* - Fork block numbersPreferred approach: Use the
consensus-etc suite, which automatically filters to ETC-compatible forks and targets only clients with the etc role:
# Recommended: use consensus-etc suite — pass multiple clients as comma-separated ./hive --sim ethereum/consensus --sim.limit consensus-etc --client core-geth,besu-etc,nethermind-etc # Single client ./hive --sim ethereum/consensus --sim.limit consensus-etc --client core-geth # Filter by fork or test category ./hive --sim ethereum/consensus --sim.limit "consensus-etc/Berlin" --client nethermind-etc ./hive --sim ethereum/consensus --sim.limit "consensus-etc/.*bcValidBlockTest" --client besu-etc
Multiple clients: Hive accepts comma-separated
--client values. It builds all images and runs the suite against each client in a single invocation. Always prefer this over running separate commands per client.
The legacy
--sim.limit approach still works but requires manual fork filtering.
Always pass
when running consensus tests. The default parallelism of 1 makes large test runs extremely slow. Use 4 for a good balance of speed and resource usage:--sim.parallelism 4
# Recommended: run with parallelism 4 ./hive --sim ethereum/consensus --sim.limit consensus-etc --client core-geth --sim.parallelism 4 # For machines with more resources, can go higher ./hive --sim ethereum/consensus --sim.limit consensus-etc --client core-geth --sim.parallelism 8
Without
--sim.parallelism, tests run serially (~5s per test = hours for full suite).
ETC clients (core-geth, besu-etc, nethermind-etc) only support forks up through Berlin/Spiral. Post-merge tests (Paris, Shanghai, Cancun) will fail with misleading "unknown client type" errors. The
consensus-etc suite handles this automatically.
| ETH Fork | ETC Equivalent | Supported |
|---|---|---|
| Frontier — Berlin | Frontier — Magneto | Yes |
| London | Spiral (partial) | Partial (no EIP-1559) |
| Paris (Merge) and later | N/A | No |
SITREP.md is the single source of truth for current status:
TODO.md contains only future work:
README.md is a brief overview:
When work is completed:
Project-specific skills are defined in
.claude/skills/:
/pickup - Resume work from previous session: load SITREP.md, TODO.md, summarize state/handoff - Prepare for context handoff: sync docs, update promptlog, commit (run when context is full)/sync-docs [--commit] - Synchronize SITREP.md (status) and TODO.md (future plans only)/wrapup [message] - Update prompt log and commit all changes (run at end of significant sessions)/promptlog - Generate PROMPTLOG.md from session history/submodule-push [name] - Push submodule changes to fork/hive-run [simulator] [--client name] - Build and run Hive integration tests/hive-progress [--update] - Check progress of running Hive tests and update SITREP.md/hourly-monitor [--max-iterations N] - Start automated hourly loop to monitor tests, update SITREP.md, and commit/report <topic> - Create structured reports with Discord-friendly summariesEnd of session: Run
/wrapup to commit changes, or /handoff if context is full and work will continue in a new session.
The
gh CLI is configured with a fine-grained Personal Access Token scoped to specific repositories.
IstoraMandiri/etc-nexus (this repo)IstoraMandiri/hive (Hive fork)IstoraMandiri/core-geth (core-geth fork)Use
/submodule-push skill for pushing changes in submodules.
etc-nexus/ ├── hive/ # Submodule: IstoraMandiri/hive (fork of ethereum/hive) │ ├── clients/ │ │ ├── core-geth/ # ETC client (Go) │ │ ├── besu-etc/ # ETC client (Java) │ │ └── nethermind-etc/ # ETC client (C#) │ └── simulators/ethereum/consensus/ │ ├── main.go # Includes consensus-etc suite │ └── etc_forks.go # ETC fork env mappings ├── core-geth/ # Submodule: IstoraMandiri/core-geth ├── nethermind-etc-plugin/ # Submodule: IstoraMandiri/nethermind-etc-plugin ├── .devcontainer/ # Docker-in-Docker dev environment ├── .claude/ │ ├── skills/ # Project-specific Claude skills │ ├── hooks/ # Hook scripts │ └── settings.json ├── CLAUDE.md # This file - Agent instructions ├── SITREP.md # Single source of truth for current status ├── TODO.md # Future work only ├── README.md # Brief overview with links ├── PROMPTLOG.md # Session prompt history └── reports/ # Technical reports and analysis
consensus-etc suite implemented for streamlined ETC testinghive/clients/<name>/hive/simulators/<category>/<name>/etc role in their hive.yaml/hive-run skill to build and run tests--sim.parallelism 4 (or higher) for consensus test runs