# EPF Cohort 6 – Week 3 Update Started a deep dive into Grandine to build a clearer understanding of its internal components and tracing opportunities. Joined the Grandine Discord and got confirmation from maintainers that working on observability/tracing integration is welcome. ## Progress This Week - Investigated the main crates to understand where tracing instrumentation can be inserted. - Reviewed the purpose and lifecycle of **Context struct**, and how it controls configuration and service initialization (e.g., storage setup, P2P networking, validator duties). - Ran Grandine on the **Holesky** network as a **beacon node** and tested replacing the existing logger with **Tokio Tracing** to validate tracing output. - Tried **basic tracing setup** (tracing_subscriber, EnvFilter) and tested configuring log output with RUST_LOG on several binaries (such as grandine/src/main.rs and ad_hoc_bench/src/main.rs). - Learned how CLI arguments and config parsing (GrandineArgs, GrandineConfig) feed into Context and affect runtime behavior. - Practiced **searching and navigating the codebase** (using `grep` and `VSCode`) to locate important functions and modules. ## Next Steps - Plan to test tracing spans and events in beacon node modules. - Validate that tracing output provides clear and useful insights during node startup and block import. - Prepare initial **documentation or examples** of how to enable and interpret tracing logs. - Continue experimenting in my small Rust toy project to practice tracing and dependency management in parallel. - Continue systematically exploring the Grandine repository to build a more comprehensive understanding of its architecture and module interactions. - Learn more about the main components of a consensus client and identify how they are structured in Grandine. ## Resources - [Grandine GitHub Repository](https://github.com/grandinetech/grandine)