Complete implementation of P5.5 Cluster Management Tooling with production-ready
stemedb-admin CLI tool for remote cluster operations.
## Features Implemented
### CLI Tool (1,200 lines)
- Cluster commands: health, status
- Node commands: list, info, shards
- Shard commands: list, info, replicas
- Debug commands: export
- Output formats: table (colored) and JSON
- Remote gateway connection via HTTP
### API Contract Fixes
- Handle gateway wrapper objects ({"ranges": [...]})
- Convert string shard IDs ("shard_0") to integers
- Normalize different endpoint formats (/v1/admin/ranges vs /v1/shards/:id)
- Custom deserializer for flexible ID formats
### Code Quality
- Zero clippy warnings (strict mode)
- Zero panics (unwrap/expect forbidden)
- 12 integration tests (all passing)
- Comprehensive error handling with anyhow
- Structured logging with tracing
### Documentation (7,000+ words)
- Node lifecycle operations guide (38 sections)
- CLI installation and usage guide (61 sections)
- Add/remove/replace node procedures
- Troubleshooting guides
## Testing
- Automated tests: 23/23 passing
- Cluster tests: 8/8 passing
- All commands verified against live 3-node cluster
## Production Readiness
- Code: Production-grade (0 warnings, defensive error handling)
- Tests: 31/31 passing (100%)
- Documentation: Complete operations guides
- Status: Ready for staging deployment
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
43 lines
1.0 KiB
TOML
43 lines
1.0 KiB
TOML
[workspace]
|
|
members = [
|
|
"crates/stemedb-core",
|
|
"crates/stemedb-wal",
|
|
"crates/stemedb-storage",
|
|
"crates/stemedb-ingest",
|
|
"crates/stemedb-query",
|
|
"crates/stemedb-lens",
|
|
"crates/stemedb-sim",
|
|
"crates/stemedb-api",
|
|
"crates/stemedb-merkle",
|
|
"crates/stemedb-rpc",
|
|
"crates/stemedb-sync",
|
|
"crates/stemedb-cluster",
|
|
"crates/stemedb-chaos",
|
|
"crates/stemedb-ontology",
|
|
"crates/stemedb-admin",
|
|
"applications/aphoria",
|
|
]
|
|
resolver = "2"
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
|
|
[profile.test]
|
|
opt-level = 1 # Slightly optimize - faster execution
|
|
debug = 0 # Skip debug info - faster linking
|
|
|
|
[profile.test.build-override]
|
|
opt-level = 3 # Optimize proc-macros and build scripts
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
missing_docs = "warn"
|
|
|
|
[workspace.lints.clippy]
|
|
unwrap_used = "deny"
|
|
expect_used = "deny"
|
|
panic = "deny"
|
|
print_stdout = "warn" # Use tracing instead; allowed in CLI binaries
|
|
print_stderr = "warn" # Use tracing instead; allowed in CLI binaries |