- clarify BEDS is compliance-friendly architecture, not certification
- add healthcare/regulated deployment framing to visual brief
- document controls BEDS provides vs contract implementation responsibilities
- update wiki index description for regulated-deployment positioning
- Add Prerequisites section: Rust, RabbitMQ, MongoDB, MariaDB, Apache+PHP
- Document Apache+PHP as required for observer tool with install commands
- Explain rationale: observer must be independent of BEDS binary
- Update project structure tree to reflect unified dispatcher + new modules
- Fix status table: reflect completed dispatcher, template registry, retry/DLQ,
resident runtime, logger store, dispatch traits; mark PHP observer as Next
- keep BEDS resident after IPL and coordinate clean shutdown
- propagate AMQP shutdown command across dispatcher pool
- add structured IPL milestone/event-chain logging with root GUID context
- add optional trace_on config for verbose method-entry diagnostics
- add dev purge-on-IPL controls for admin/logger collections
- add log level showcase events after IPL node-green
- add Mongo logger store helpers for chain/root lookup and purge
- add/modernize BEDS Observatory log_dumper utility UI and root record view
- refresh source headers and wiki docs for current architecture/runtime
- add architecture visual brief for leadership/image-generation workflows
- Single dispatcher pool replaces separate rBroker and wBroker pools
- All events consumed from single queue (beds.events)
- Template lookup reveals schema; class instantiation owns business logic
- Transport layer (dispatcher) is data-schema-agnostic
- AMQP consumer groups handle load-balancing natively
- Reduces exchange/queue topology overhead (no strict rec.read/rec.write)
- Maintains same queue names and routing keys for operator clarity
- r_broker.rs and w_broker.rs retained as reference (can be removed)
Implements architecture decision from user conversation on 2026-04-09.
- src/brokers/: pool manager, r_broker (rec.read), w_broker (rec.write),
BrokerPayload struct, BrokerError type
- src/core/: NamasteCore trait — fetch/write/update/delete interface, stubs
- IPL step 6: spawns rBroker + wBroker pools after exchange declaration
- tests/broker_pool_test.rs: integration tests for pool spawn (skip if broker down)
- BrokerPayload unit tests + doctest in payload.rs
- Added futures-lite, serde_json to Cargo.toml
- README.md, CLAUDE.md, wiki updated to reflect new structure and status
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Extract ipl() from main() with env-aware error handling (fatal in prod, warn in dev)
- Add amqp::validate() — TCP reachability check for RabbitMQ at IPL
- Refactor config::load() into load() + load_from() for testability
- Add lib.rs to expose public API to integration test harness
- Add test fixture scaffolding: tests/fixtures/beds_test.toml, tests/common/mod.rs
- Add unit tests for amqp::validate() error paths (closed port, bad address)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Was originally a proof of concept in the PHP version. Dropped in
production as too expensive. Removed all references from docs.
Supported backends are MySQL/MariaDB and MongoDB only.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
First working milestone of the Rust rewrite. Implements the two
foundational systems every other component depends on:
- TOML-based layered config (beds.toml + env.toml override) replacing
the PHP XML config system, fully deserialized into typed structs via
serde — no runtime string key lookups, shape enforced at compile time
- Structured logging via tracing + tracing-journald, with optional
console mirror, initialized from config before any services start
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>