feat: resident runtime, shutdown command, observatory, and IPL logging hardening

- 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
This commit is contained in:
2026-04-10 13:42:39 -07:00
parent 0af80612bb
commit 14ec58318b
13 changed files with 1618 additions and 13 deletions

View File

@@ -6,6 +6,19 @@ IPL (Initial Program Load) is the BEDS bootstrap sequence. The term comes from I
`ipl()` is the first function called from `main()`. If IPL completes successfully, the node is green and enters its operational state. If any required step fails, IPL aborts and the process exits with a console error report.
## Current Runtime State (2026-04)
The current Rust runtime behavior has advanced beyond the original POC notes in this page:
1. `main()` is now resident after IPL completes.
2. Dispatcher workers are started as a pool and the process remains active waiting for shutdown.
3. A broker `shutdown` command now triggers coordinated process shutdown.
4. IPL writes structured startup milestones to logger storage (`msLogs`) after logger init.
5. Development config can optionally purge selected admin/logger collections on IPL.
6. Optional trace-style method-entry logging is available through config (`trace_on`) for deep backend diagnostics.
Treat the sequence below as conceptual IPL ordering; operational lifecycle now includes post-IPL resident runtime and coordinated shutdown.
## Why Order Matters
The IPL sequence is not arbitrary. Each step depends on the previous one: