Contributing
Development Entry Points
The repository uses just as the main developer command surface:
just build
just test
just runtime-build
just synthetic-node
just seed-smoke
just test-integration
just benchmark-indexing
Code Areas
High-level module boundaries:
src/main.rs: CLI, startup, supervisor loop, long-lived taskssrc/indexer.rs: indexing pipeline and span trackingsrc/config.rs: TOML schema and runtime mapping resolutionsrc/ws_api/: public WebSockets APIsrc/protocol.rs: shared protocol types and database key layoutsrc/runtime_state.rs: live shared runtime statesrc/metrics.rs: Prometheus/OpenMetrics integrationsrc/config_gen.rs: starter index-spec generation from metadatasrc/synthetic_devnet.rs: synthetic local chain supportruntime/: in-repo synthetic runtime used for integration testing and benchmarking
Suggested Workflow
- run unit tests with
just test - use the synthetic harness when your change affects observable runtime behavior
- run ignored integration tests when changing indexing, API, or reconnect logic
- benchmark with the synthetic harness when changing throughput-sensitive code
- update the book when user-facing or operator-facing behavior changes
Testing Philosophy
Unit tests must be deterministic and must not rely on wall-clock timing. Behavior that depends on real node timing or networking belongs in integration tests instead.