Gate 1: Becoming a Reader
Status: Entry gate to Reader tier
Required: Complete Layers 01-03
Time estimate: 1-2 weeks (Foundations track) or 2-3 days (Accelerated track)
What You've Learned
In Phase 1, you built foundational fluency:
- Environment: Build, test, lint without friction
- Rust: Ownership/borrowing as system invariants, not abstract rules
- Visibility: Errors, tracing, metrics as first-class concerns
You can now read ICN code, trace flows, and explain behavior.
Requirements
Complete all four artifacts below. Each produces a concrete deliverable.
Artifact 1: System Map Diagram
What: Draw the ICN architecture showing kernel/app/domain crate boundaries.
Requirements:
- Three distinct regions: Kernel, Apps, Domain
- Label at least 5 crates in each region (15 total)
- Show dependency flow: Apps import both Kernel and Domain, Kernel never imports Domain
- Hand-drawn sketch (photo) or digital diagram (Figma, Excalidraw, etc.)
Example structure:
┌─────────────────────────────────────┐
│ KERNEL (generic) │
│ icn-core, icn-net, icn-gossip, │
│ icn-store, icn-obs, icn-kernel-api │
└─────────────────────────────────────┘
↑ ↑ ↑
│ │ │
┌────────┴───────────┴───────────┴────┐
│ APPS (oracles) │
│ apps/trust, apps/ledger, │
│ apps/governance │
└──────────────────────────────────────┘
↓ ↓ ↓
┌────────┴───────────┴───────────┴────┐
│ DOMAIN (data structures) │
│ icn-trust, icn-ledger, │
│ icn-governance, icn-ccl │
└──────────────────────────────────────┘
Verification: Can you explain why icn-core cannot import icn-ledger?
Artifact 2: Tooling Fluency
What: Prove you can navigate the build/test cycle without friction.
Tasks:
- Clone the ICN repo (if not already done)
- Run
cd icn && cargo build— must succeed - Run
cargo test --workspace --lib— must complete (some tests may fail, that's OK) - Introduce a deliberate compiler error (e.g., remove a semicolon)
- Run
cargo build, read the error, fix it - Screenshot or copy/paste the error + your fix
Verification: You understand compiler errors and can resolve them systematically.
Artifact 3: Error/Tracing Proof
What: Demonstrate understanding of ICN's error handling and observability.
Tasks:
- Locate
icn/crates/icn-core/src/error.rsand explain the thiserror pattern used - Explain the difference between
#[error("...")]and#[error(transparent)] - Add a new tracing span to your lab-02 workspace code
- Run the code, capture the tracing output, highlight the span you added
Verification: You can instrument code for visibility.
Artifact 4: Tiny PR
What: Make a small, meaningful contribution to ICN.
Options (choose one):
- Fix a typo in documentation
- Add a tracing span to improve observability
- Improve a test description or add a missing test case
- Add a code comment explaining a non-obvious invariant
Requirements:
- PR must follow commit format:
type(scope): description(seeCONTRIBUTING.md) - PR description explains why the change improves the codebase
- Code must pass
cargo fmtandcargo clippy
Note: This is a tiny PR — 1-10 lines changed. The goal is to practice the contribution workflow, not to ship a feature.
Verification: You can navigate the GitHub PR workflow and pass CI checks.
After Passing
Congratulations! You are now a Reader.
You can:
- ✅ Run tests and trace execution flows
- ✅ Read Rust code and identify invariants
- ✅ Explain error handling patterns
- ✅ File well-structured bug reports with repro steps
- ✅ Navigate the contribution workflow
Next step: Proceed to Phase 2: Architecture to become a Fixer.
Submission
Submit your four artifacts to your mentor or in the #onboarding channel:
- System map diagram (image)
- Compiler error trace + fix (screenshot or code block)
- Tracing span proof (code + output)
- Link to merged or open PR
Once reviewed and approved, you'll receive the Reader badge and can continue to Phase 2.
Need Help?
- Stuck on builds? →
reference/module-00-setup.mdhas troubleshooting steps - Rust confusion? →
reference/module-01-rust-fundamentals.mdhas deep dives - Tracing unclear? →
reference/module-12-observability.mdhas examples
Don't hesitate to ask questions in #onboarding or open a discussion thread!