This commit adds the read path (Cortex) to complement the write path (Spine): ## Crates - stemedb-api: HTTP API with axum + utoipa OpenAPI - /v1/assert, /v1/query, /v1/epoch, /v1/skeptic, /v1/trace, /v1/audit - Metered endpoints with quota enforcement - Ed25519 signature verification - stemedb-lens: Truth resolution lenses - RecencyLens, ConsensusLens, ConfidenceLens - VoteAwareConsensusLens (Ballot Box pattern) - TrustAwareAuthorityLens (The Hive pattern) - SkepticLens (conflict analysis) - EpochAwareLens (paradigm-safe queries) - stemedb-query: Query engine with materialized views ## Storage Extensions - VoteStore: Vote aggregation with cached counts - TrustRankStore: Agent reputation with decay - AuditStore: Query audit trail - IndexStore: SP/P/S index structures - SupersessionStore: Epoch supersession chains ## SDKs - sdk/go/steme: Go HTTP client with Ed25519 signing - sdk/go/adk: ADK-Go tools for AI agents ## Documentation - Updated CLAUDE.md, architecture.md, roadmap.md - New ai-lookup entries for all services - Use case docs for consumer health intelligence - Arena roadmap for simulation advancement Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.6 KiB
logging-consistency
AUDIT (2026-02-01)
Pattern: println!/eprintln! usage instead of structured tracing
Found: 13 instances in 6 files
Breakdown by Category
| Category | Count | Files | Decision |
|---|---|---|---|
| Doc comments | 8 | skeptic.rs (lens), skeptic.rs (query), lib.rs (query), lib.rs (storage), materializer.rs | KEEP - example code |
| CLI output | 5 | main.rs (sim) | KEEP - user-facing terminal output |
| Production code | 0 | - | N/A |
Detailed Locations
Doc Comments (Intentional - Example Code):
crates/stemedb-lens/src/skeptic.rs:32-//!examplecrates/stemedb-lens/src/skeptic.rs:34-//!examplecrates/stemedb-query/src/skeptic.rs:27-//!examplecrates/stemedb-query/src/skeptic.rs:29-//!examplecrates/stemedb-query/src/lib.rs:41-//!examplecrates/stemedb-storage/src/lib.rs:112-//!examplecrates/stemedb-storage/src/lib.rs:115-//!examplecrates/stemedb-query/src/materializer.rs:75-///example
CLI Binary Output (Intentional - User Facing):
crates/stemedb-sim/src/main.rs:32- prints simulation summarycrates/stemedb-sim/src/main.rs:35- prints PASSED messagecrates/stemedb-sim/src/main.rs:38- prints FAILED messagecrates/stemedb-sim/src/main.rs:40- prints error detailscrates/stemedb-sim/src/main.rs:46- prints fatal error
Conclusion: All instances are intentional. No production library code uses println.
ENFORCE (2026-02-01)
Added clippy lints to prevent future println!/eprintln! in library code:
| File | Change |
|---|---|
Cargo.toml |
Added print_stdout = "warn", print_stderr = "warn" to [workspace.lints.clippy] |
crates/stemedb-sim/src/main.rs |
Added #![allow(clippy::print_stdout, clippy::print_stderr)] with comment explaining CLI exemption |
Verified: cargo clippy --workspace -- -D warnings passes.
DOCUMENT (2026-02-01)
Added "Structured Logging" critical rule to CLAUDE.md:
Structured Logging: Use
tracing(info!, warn!, error!) instead ofprintln!/eprintln!. Clippy enforces viaprint_stdout/print_stderrat warn level. CLI binaries (e.g.,stemedb-sim) may use#![allow()]for user-facing output.
COMPLETE (2026-02-01)
Before: 13 println!/eprintln! instances (all intentional) After: 0 violations (8 in doc comments, 5 in CLI binary with allow attribute)
Enforcement:
- Workspace clippy lints:
print_stdout = "warn",print_stderr = "warn" - CLI exemption pattern:
#![allow(clippy::print_stdout, clippy::print_stderr)]
Documentation:
- CLAUDE.md Critical Rules: Added "Structured Logging" rule