Repository navigation
build(deps): cascade Verbara.Sdk 2.8.0 and Verbara.Sdk.Pro 2.18.0-pro; ship the Asterisk chart's AMI/ARI users - #361
Merged
Conversation
- 7 Verbara.Sdk.* pins 2.7.0 -> 2.8.0 (Data.Npgsql, Cluster.Primitives, Cluster.Postgres, Hosting, Push, Resilience, OpenTelemetry). - 22 Verbara.Sdk.Pro.* pins 2.17.1-pro -> 2.18.0-pro. - Measured restore: no NU1605/NU1109; the project.assets.json diff by package name moves only Verbara.Sdk* (2.8.0) and Verbara.Sdk.Pro* (2.18.0-pro) packages, nothing added or removed, so no floor moved. Change: sdk-2-8-0-pin-cascade (decision record Verbara.Sdk/ADR-0040).
Verbara.Sdk.OpenTelemetry 2.8.0 declares OpenTelemetry.Exporter.Prometheus.AspNetCore 1.19.1-beta.1 itself (Sdk #388, H167), so Platform's transitive pin and its comment go. The project.assets.json diff by package name is empty: the exporter still resolves to 1.19.1-beta.1 in Verbara.Platform.Api and Verbara.Platform.Api.Tests. PrometheusScrapingEndpointTests stays unchanged and green. Change: sdk-2-8-0-pin-cascade (decision record Verbara.Sdk/ADR-0040).
…dded Sdk 2.8.0 (#391) added Subscribe(Func<ManagerEvent, CancellationToken, ValueTask>) to IAmiConnection with a default body. DeferredPrimaryAmiConnection compiled clean without it, so a handler subscribed through the wrapper was attached via the wrapper's OnEvent with a token that is never cancelled, and the primary connection's fast close never reached it. The wrapper now forwards the overload to the primary, resolved at use like every other member. Test first: the new forwarding test failed against the unforwarded wrapper (OnEventTokenSubscription returned instead of the primary's subscription), and a mutation pass that deletes the forwarding still builds and turns it red. Change: sdk-2-8-0-pin-cascade (decision record Verbara.Sdk/ADR-0040).
…erisk replica The Asterisk chart mounted only pjsip, extensions and modules, so AMI and ARI came from the andrius/asterisk:22 defaults: manager.conf has AMI disabled and http.conf binds ARI to 127.0.0.1. It also ran two replicas behind one load-balanced AMI address while Platform registers exactly one AMI server. - ConfigMap: manager.conf.template with Platform's [platform] user (same read/write/deny/permit as the Compose template, no eventfilter, so Sdk 2.8.0's pool sweep can send Status and sees every Hangup), ari.conf.template with the [verbara] user, and an http.conf serving ARI on 0.0.0.0:8088. - Passwords only in Secrets (asterisk.ami/ari.passwordSecret), rendered by the chart only when asterisk.ami/ari.password is passed; no literal in the repo. - The container command renders manager.conf and ari.conf with awk from ENVIRON (no sed replacement, so /, & and \ stay literal), sets systemname to the pod name under [options] of asterisk.conf, then execs asterisk -fpvvv. - replicas: 1, and the StatefulSet fails to render above 1. - PDB keeps minAvailable: 1 as a deliberate interlock and gains unhealthyPodEvictionPolicy: AlwaysAllow plus a comment on the maintenance procedure. - scripts/k8s-apps.sh requires VERBARA_AMI_PASSWORD and VERBARA_ARI_PASSWORD and passes each to both charts with --set-literal, so the Asterisk users and Platform's Asterisk__Ami__Password / Asterisk__Ari__Password cannot drift. Checked: helm lint, the default, password and replicas=2 renders, an unchanged platform chart render, and a local andrius/asterisk:22 boot showing the platform user's classes, system name asterisk-0, AMI login plus Status Success and ARI 200/401. Change: sdk-2-8-0-pin-cascade (decision record Verbara.Sdk/ADR-0040).
…sterisk - CHANGELOG [Unreleased] Upgrading: the pool sweep (Sdk #402, H142), the AMI write classes it needs, no Hangup eventfilter, systemname per Asterisk of a pool, the start-up '[LIVE] Status refused' signal; the breaking Asterisk chart change (AMI/ARI passwords at install, systemname per pod, one replica, replicas > 1 refused) and the maintenance procedure the PDB now requires. - CHANGELOG [Unreleased] Dependencies: Sdk 2.8.0 x Pro 2.18.0-pro, no floor moved, exporter pin removed (Sdk #388), Subscribe(Func) forwarded (Sdk #391), the sweep consumed with its defaults (Verbara.Sdk/ADR-0040). - Voice manual 06 §0.1: the whole [platform] AMI user, the reason for each read/write class from Platform's AMI call sites, the Hangup warning, systemname for a pool, what fails without them and how to detect it. - Validation checklist: a start-up log check for 'Status refused' and a two-agent blind-transfer test. - staging-environment.md: the Asterisk PDB blocks a drain (it does not keep voice up), and the chart runs one Asterisk replica. Change: sdk-2-8-0-pin-cascade (decision record Verbara.Sdk/ADR-0040).
This was referenced Oct 9, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Host leg of the cross-repo change
sdk-2-8-0-pin-cascade(roadmap R-021 second hop / licensing plan C16;decision_ref: Verbara.Sdk/ADR-0040). Pro shipped its leg asv2.18.0-pro(Verbara.Sdk.Pro #193). This PR ships in Platform v2.27.0 together with R-023 (#348) and the WhatsApp work (#354), which rebases on top.What changes
3f83bb18): 7Verbara.Sdk.*pins move to 2.8.0 and 22Verbara.Sdk.Pro.*pins to 2.18.0-pro. Restore reports no NU1605/NU1109 and no floor moves.78269f5a): Sdk 2.8.0 bringsOpenTelemetry.Exporter.Prometheus.AspNetCore1.19.1-beta.1 itself (Sdk H167), so the central pin added in build(deps): cascade Verbara.Sdk 2.7.0 and Verbara.Sdk.Pro 2.17.0-pro #332 goes.PrometheusScrapingEndpointTestsis unchanged and green. The AOT publish has 0 "will always throw".DeferredPrimaryAmiConnectionforwards the newIAmiConnection.Subscribe(Func<…>)default member (8da98b82). Without it the wrapper compiles and silently loses the Sdk's docs(changelog): cite PR #390 on the rate-limit entry #391 fast-close. The test was written first and goes red when the forwarding is removed.Hangupnever reached Platform are ended. It needs the AMI user to havewritewithsystem,callorreporting. The shipped Composemanager.conf.templatealready has it.4a933abd):Secret(no literal secret in the repo);systemnameis set per pod;minAvailable: 1as a deliberate interlock, withunhealthyPodEvictionPolicy: AlwaysAllowand a comment;scripts/k8s-apps.shpasses one password to both charts.a8fc0e79):[LIVE] Status refusedin the start-up log);staging-environment.mdis corrected about what the PDB does.Verification
helm lint; render checks, including thatreplicas=2must fail; a localandrius/asterisk:22boot proving the AMI user, the systemname and an AMIStatus.Lab merge gate (verbara-lab #16, merged) on this head with Sdk 2.8.0 / Pro 2.18.0-pro:
h159-queue-ownerruns, 20/20 each with 0 calls not offered;Hangupevent filtered out were ended by the sweep 5–12 s after the caller hung up, and a 100 s control call stayed up.Rollback
Revert. The pins go back to Sdk 2.7.0 / Pro 2.17.1-pro and the exporter pin returns with it. The Helm chart change reverts cleanly; an installed release keeps its Secret.
🤖 Generated with Claude Code