perf-sentinel chart v0.2.43
What's new in chart-v0.2.43
This is a metadata-only chart bump: appVersion advances from 0.7.6 to 0.7.7, the default image.tag now resolves to ghcr.io/robintra/perf-sentinel:0.7.7, and the artifacthub.io/images annotation is updated to keep the Artifact Hub display card in lockstep. No chart-level template diff, no values.yaml schema change, no new RBAC, no new optional ConfigMap or Secret, no .perf-sentinel.toml review required to upgrade. The chart-v0.2.42 surface is preserved byte-for-byte.
The 0.7.7 daemon image fixes an N+1 SQL detection gap on non-Java stacks. The sanitizer-aware classifier and the SQL normalizer both assumed JDBC-style ? placeholders, so Go (pgx $1), Python (psycopg %s, SQLAlchemy :name), .NET (@param), and any stack that sends pre-parameterized SQL to the wire were silently classified as redundant_sql instead of n_plus_one_sql. The release also adds framework-aware fix recommendations for Go and Node.js/TypeScript (96 entries, was 70) and comprehensive per-language instrumentation documentation. Full release notes for the daemon at v0.7.7. None of this touches a chart-level template, a daemon HTTP route, a Prometheus metric label set the chart already exposes, or the OTLP listener wire format.
Changed
appVersionbumped from0.7.6to0.7.7, defaultimage.tagnow resolves toghcr.io/robintra/perf-sentinel:0.7.7.artifacthub.io/imagesannotation updated toghcr.io/robintra/perf-sentinel:0.7.7. Runtime image selection is unaffected (templates already resolve to.Chart.AppVersionwhenvalues.yamlimage.tagis empty).- No chart-level config change.
values.yaml, every template, theServiceMonitorrendering, theNetworkPolicyrendering, the optional[daemon.ack]and[daemon.cors]plumbing, and theack-toml-baselinemount are byte-for-byte identical to chart-v0.2.42.
Behavior
- Daemon binary side: sanitizer-aware detection extended to non-Java stacks.
template_has_placeholdernow recognizes five placeholder styles (?,$?,%s,@param,:name) instead of JDBC-only?. The SQL normalizer treats PostgreSQL$Npositional parameters as placeholders ($?) instead of dollar-quoted string delimiters, enabling query grouping on Go pgx and Python asyncpg traces. Strict mode gains a sequential-siblings signal for bare-driver stacks (Vert.x reactive PG, pgx, asyncpg, sqlx, PrismaqueryRaw) and a cache-warm ORM signal for high-occurrence groups with low timing variance (EF Core + Npgsql, Hibernate L2 cache). - Daemon binary side: framework-aware fix recommendations for Go and Node.js/TypeScript. The
suggested_fixfield on findings now covers 6 language ecosystems (Java, C#, Python, Rust, Go, JavaScript) with 19 framework tags and 96 entries. Newframework_tagvalues:go_gorm,go_generic,node_prisma,node_generic. Surfaced in the TUI (perf-sentinel inspect) and the HTML dashboard. - Daemon binary side: per-span diagnostic timing stats. Findings now carry optional
span_duration_us_p50,span_duration_us_p99, andspan_duration_cv_x1000on thepatternfield. Not used in any detection verdict or GreenOps scoring, omitted from JSON when not populated. - Daemon binary side: microsecond sequentiality. The sequentiality check in the serialized-calls and pool-saturation detectors is now evaluated in microseconds instead of milliseconds. The previous integer division truncated sub-millisecond durations to zero and let concurrent spans pass the sequentiality gate.
- No HTTP-shape change on the daemon side. Every
/api/*route, every/metricsline, the OTLP HTTP and gRPC routes, and every JSON shape are byte-for-byte identical to chart-v0.2.42 for already-clean inputs. - No upgrade hook required, no on-disk migration. The runtime ack store JSONL schema is unchanged, existing acks survive the upgrade.
Install
helm install perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.2.43Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.2.43Operator action required only if you use sanitizer_aware_classification = "strict"
Bare-driver workloads may see some groups previously reported as redundant_sql (Warning at >= 5 occurrences) now reported as n_plus_one_sql (Critical at >= 10 occurrences). The serialized_calls and pool_saturation detectors may also fire on sub-millisecond bursts previously masked by the integer-division bug. If your quality_gate rules are wired on critical-only counts, re-baseline n_plus_one_sql_critical_max, serialized_calls_critical_max, and pool_saturation_critical_max (or fix the patterns) before tightening the gate. Full upgrade path at v0.7.7 release notes.
Full Changelog: chart-v0.2.42...chart-v0.2.43