wora 0.0.21

A framework for building applications (daemons, etc) that run in different environments (Linux, Kubernetes, etc).
Documentation
# Runtime TODO

Linux reader/parser work: [reader TODO](https://github.com/adamflott/linux-observability-mm/blob/master/TODO.md).
Current memory APIs and measurements: [memory guide](docs/memory.md).

## Memory and resource limits

- [ ] Complete runtime container/allocator accounting beyond budgeted Linux
  storage/headers; reserve reload and serialization overlap before allocation.
- [ ] Add a minimal selectable routine profile in `src/o11y/linux_memory.rs`;
  make large slab/page-type/zone-CPU inventories optional within that profile.
- [ ] Bound CPU/disk/network inventories before collection in `src/o11y.rs`.

## Queues, tasks and outputs

- [ ] Coalesce queued periodic samples in `src/lib.rs` / `src/o11y.rs`;
  preserve shutdown/control capacity. The memory cache/watch already keeps the latest sample.
- [ ] Bound queue bytes and pending producers, including direct public senders;
  define rejection/backpressure behavior.
- [ ] Add a byte/record-limited ring mode to `O11yMemorySink` in `src/o11y.rs`.
- [ ] Cap general sink formatting/JSON scratch buffers; reuse the memory reporter's
  approach in `src/profiles.rs`.
- [ ] Bound exporter buffers/cardinality in `wora-observability/`; define stalled
  output handling, drop/coalesce counters and rate-limited diagnostics.
- [ ] Complete cancellation and reaping for `Wora::schedule_task` in `src/lib.rs`
  across restart boundaries; count admission is already opt-in.
- [ ] Complete in-flight blocking-collector limits across shutdown/restart;
  reuse shared provider leases so timed-out workers cannot admit replacements.

## Memory validation and deployment

- [ ] Stress slow sinks, full queues, retained snapshots, task limits, blocking
  collectors and repeated reloads/restarts; assert bounded allocations and responsive shutdown.
- [ ] Measure minimal release, sampling, reporting and each diagnostic separately;
  choose budget defaults from observed allocation peaks.
- [ ] Run release-process soaks in a dedicated cgroup; record build, RSS/PSS,
  cgroup current/peak, CPU, report cadence and throughput under slow outputs.
- [ ] Obtain a reproducible baseline heap profile; resolve unknown frames and
  separate live allocations from allocator-retained memory.
- [ ] Compare glibc arena limits after snapshot changes; measure contention,
  throughput and portability before recommending `MALLOC_ARENA_MAX`.
- [ ] Add a deployment example using `memory.high`/`memory.max`; document pressure,
  OOM behavior and the difference between cgroup usage and process RSS.

## Deletion-aware reloads

Removed files are skipped today; reload hooks receive no explicit deletion payload.

- [ ] Add removed paths to `ConfigReload` and removed path/key pairs to `SecretReload`.
- [ ] Pass change kinds into loaders; treat missing paths in mixed events as removals.
- [ ] Preserve `ConfigReload::{main,supplemental}` and `SecretReload::files`;
  plan compatibility for added public fields.
- [ ] Test config/secret deletion, renames and mixed present/missing paths.

## Reload coalescing

Watcher events are currently forwarded individually.

- [ ] Add debounce and maximum-window settings to `RunnerOptions`.
- [ ] Bound watcher registrations and pending paths; aggregate/deduplicate paths
  per root using final change kinds, with a dirty-root rescan marker on overflow.
- [ ] Keep callbacks nonblocking; test bursts, rename/save patterns and continuous writes.

## Consistent initial snapshots

Startup loads files sequentially, so concurrent changes can mix generations.

- [ ] Add bounded `WFS` reads/enumeration in `src/vfs.rs`; cap config/secret file
  counts, bytes and parsed old/new reload overlap.
- [ ] Add an optional snapshot capability to `WFS`; parse only after bounded acquisition.
- [ ] Snapshot `InMemoryVFS` nodes under one read lock.
- [ ] For `PhysicalVFS`, use an explicit generation/consistency strategy where
  available; directory metadata checks alone do not guarantee atomic contents.
- [ ] Limit retries and return an error if consistency cannot be established;
  define config/secret consistency separately.
- [ ] Test concurrent mutation, retry limits and generation consistency.

## Platform boundaries

Unix modules, signals and process helpers remain exposed without complete cfg gates.

- [ ] Gate Unix modules, signal conversion, UID/GID, resource-limit and locking helpers.
- [ ] Define the portable executor/event API and conditionally export platform helpers.
- [ ] Document built-in executor availability by target.
- [ ] Add Windows compile checks and target-gated prelude/examples.