···383383(found+fixed a real CR-framing bug), 114 = VERSION, **115 = iauth registration-seam** (native
384384leveva — `iauth_seam_proptest`, the `resolve_auth`→`finalize_registration` deferred-finalize gate
385385fuzzed over random verdict × arrival order; headline = byte-identical output regardless of order).
386386-The §4 "concrete fuzzing gaps" list is now **effectively exhausted** — only the deferred
387387-prometheus-output golden (user said skip) + the optional nightly cargo-fuzz tier (needs nightly;
388388-marked P12) remain. P11 is at its §7 definition-of-done; next is the **deferred infra items**
386386+**Slice 116 (2026-06-11) then closed the last non-nightly §4 item — the prometheus-output
387387+golden** — by turning it into a real feature: a `metrics { port; bind? }` config block stands up
388388+an axum `GET /metrics` endpoint serving `Counters::encode_text()` (see [[leveva-prometheus-metrics]]),
389389+pinned by `golden_metrics.rs` (boot + raw-HTTP scrape) + `metrics_endpoint_proptest.rs` (3 props).
390390+The §4 "concrete fuzzing gaps" list is now **fully closed** — only the optional nightly cargo-fuzz
391391+tier (needs nightly; marked P12) remains. P11 is at its §7 definition-of-done; next is the **deferred infra items**
389392(per-class connection caps, listener live-rebind, the auto-connect dial loop, default-channel-modes
390393rehash — each needs live-accounting/accept-task infra leveva lacks) or **P12 proper** (delete
391394`ircd-common`/`ircd-rs`). **Ask the user.**
···3737(empty body still echoes the letter in the `219`). Dep: `prometheus = "0.13"`, no `process`
3838feature (no libc/procfs). Related: [[leveva-next-step-s2s-completeness]],
3939[[leveva-command-folder]].
4040+4141+**Update (slice 116, 2026-06-11):** `encode_text()` now has a real consumer. A new
4242+top-level `metrics { port <u16>; bind? }` config block (`config/model.rs`
4343+`MetricsConfig`, `parse::metrics`) stands up an axum `GET /metrics` HTTP server
4444+(`leveva/src/metrics_server.rs`, spawned from `main.rs` when the block is set) that
4545+returns `ctx.counters.encode_text()` as `text/plain; version=0.0.4`. Reuses the
4646+WebSocket-transport axum dep. Unauthenticated/plaintext by design — `warnings()` flags an
4747+all-interfaces bind. Pinned by `golden_metrics.rs` (boot + raw-HTTP scrape + insta snap,
4848+canonicalizer sorts samples within each `# HELP` block — prometheus emits vec samples in
4949+hashmap order) and `metrics_endpoint_proptest.rs` (3 properties). **Key finding:** the
5050+exposition exposes the **raw** `IntGauge` (can read negative on stray-deregister
5151+underflow); only `snapshot()` clamps at zero for LUSERS. NICK/USER aren't counted
5252+(pre-registration `STATS m` divergence).