jml
|
4012791e7e
|
fix(api): enable non-strict mode for URL-encoded bracket notation
## Problem
Dashboard sends URL-encoded query parameters:
?sources%5B%5D=rfc&sources%5B%5D=owasp
(%5B = '[', %5D = ']')
But QsQuery extractor used strict mode, which rejects encoded brackets:
Error: "Invalid field contains an encoded bracket"
Result: All corpus filters in the dashboard failed silently.
## Solution
Changed QsQuery to use serde_qs non-strict mode:
Config::new(5, false) // false = non-strict
Now accepts BOTH:
- Literal brackets: ?sources[]=rfc
- Encoded brackets: ?sources%5B%5D=rfc (browsers)
## Verification
✅ URL-encoded query: ?sources%5B%5D=rfc&sources%5B%5D=community
Returns: 24 items (was: error)
Logs: sources=Some(["rfc", "community"]) ✅
✅ Literal brackets: ?sources[]=rfc (still works)
✅ All 4 extractor tests pass (added encoded brackets test)
✅ Clippy clean (0 warnings)
## Files Changed
- crates/stemedb-api/src/extractors.rs: Use non-strict Config
- crates/stemedb-api/README.md: Document QsQuery usage
- .claude/guides/backend/api-endpoints.md: Add best practices
- CLAUDE.md: Reference extractors documentation
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-09 16:11:25 +00:00 |
|
jordan
|
b3e8a9a058
|
feat: Multi-application expansion with chaos testing and community UI
Major additions:
- Community Next.js app (port 18187) for browsing claims with API docs
- stemedb-chaos crate: Fault injection, chaos testing, CRDT properties
- Latent ingestion system: Reddit/FDA ingesters with ADK-Go agents
- Disputed claims handling: Manual review workflows and validation
- Aphoria security scanner: New extractors (SQL injection, command
injection, weak crypto, TLS version), policy-based ignores, UAT reports
- Docker infrastructure: Dockerfile, docker-compose.yml for full stack
- VulnBank demo: Intentionally vulnerable multi-language test corpus
SDK & API enhancements:
- Source registry handlers for tracking data provenance
- Metrics endpoint
- Skeptic filtering improvements
Code quality:
- Split 14 large files (>500 lines) into focused modules
- All files now under 500-line limit per project guidelines
Documentation:
- Chaos testing guide, circuit breakers, observability docs
- Phase 7 UAT documentation updates
- Martin Kleppmann technical writer agent
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-02-04 01:24:14 -07:00 |
|
jordan
|
1ce4004807
|
feat: Complete Phase 2 (The Cortex) - query, lens, and API layers
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>
|
2026-02-01 13:22:44 -07:00 |
|