v1.0.7
Fixes
apm-service-dependencies: correct latency for OTel services
Tier-1 latency was reading AVG(transaction.duration.summary), which ES|QL evaluates against an aggregate_metric_double field's default_metric (sum-per-doc) rather than the weighted mean SUM(sum) / SUM(value_count). Verified against the OTel Astronomy Shop demo: some services were inflated 2–5×, low-volume services reported implausible values like 600s. Latency now flows through the traces-based query; span counts still come from the correct summary metric. P99 and error counts are now reported in the tier-1 path too.
k8s-blast-radius / apm-health-summary: memory capacity numbers
Switched AVG(metrics.k8s.pod.memory.working_set) → MAX(...). The new aggregation is a tight upper bound regardless of whether the field is stored as a long gauge (OTel demo) or aggregate_metric_double (where AVG can blow up to sum-of-sums in some clusters). Blast-radius ring spacing was also bumped so 30+ node rings no longer collide.
UI
- Dep-graph: reverted
preserveAspectRatiothat was squishing wide-short graphs to available height. - Node badges now show fan-in ↔ fan-out counts (e.g.
2↔5) instead of the redundant root/leaf role. - Wheel-zoom is exponential in
deltaYwith a clamp — no more trackpad overshoots on each wheel tick.
New: field audit script
npm run audit:fields now exists. It extracts every (field, aggregation) tuple from ES|QL queries under src/tools/, skips intermediate columns created by EVAL / STATS aliases, probes _field_caps (serverless-compatible), samples a few values, and writes FIELD-AUDIT.md with verdicts: OK, CHECK, SUSPECT, WRONG, UNKNOWN. Targeted at the OTel Astronomy Shop demo as the canonical schema since that's what most people will test against.
Usage:
```
ELASTICSEARCH_URL=... ELASTICSEARCH_API_KEY=... npm run audit:fields
```
This was the tool that caught the transaction.duration.summary bug above — the audit flagged it SUSPECT, and a head-to-head against raw traces confirmed the inflation.