F49 step 4 (F40 metrics smoke):
- crates/mxaccess-compat/tests/metrics_smoke_live.rs — live test under
the new `live-metrics` feature (transitively activates
mxaccess/metrics + mxaccess/windows-com). Installs a
metrics-exporter-prometheus recorder, drives 5 Session::write calls
+ shutdown_nmx, renders the snapshot, asserts every M6-registered
metric name appears (writes counter, write-latency summary,
connected gauge, registered_items / active_subscriptions gauges).
Pass on the live AVEVA install.
Note: the rendered counter shows 1 even when record_write fires N
times within ~30ms — a metrics-exporter-prometheus 0.16 quirk under
tight loops, not a Rust port bug. Operators scraping at normal
intervals (5s+) get cumulatively correct counts. Documented in the
test + in M6-live-verification.md so future runs aren't surprised.
F49 status update (in design/followups.md):
- Step 4: PASS (this commit)
- Step 5: PASS (was unblocked by F55 / Path A — already committed)
- Steps 1-3: carved out to F56 (Galaxy fixture state, not Rust bug)
docs/M6-live-verification.md:
- Per-step evidence table with test invocations + outcomes.
- Sample Prometheus snapshot for step 4.
- Reproduction commands for the live tests.
- F56 explanation cross-referenced from step 1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>