Repository navigation
feat: batch 2026-07-19 — escalation org default + assignment picker, migration consolidation - #148
Merged
Merged
Conversation
…fault, and incident-open scheduling
…cy silent badge and delete usage count
…quential schedule test)
…ge, and delete usage count
…ase migration None of these have shipped in a release yet (latest tag is v0.4.1) and the upcoming release is v0.5.0, not v0.7.0 — per wiki/conventions/database.md "one migration per release", scratch migrations from a release cycle get squashed into one file before release. Folds the deported-agents (007) and org-default-escalation-policy (008) migrations into 006_v0_5_0 for both Postgres and SQLite; verified the consolidated migration produces a byte-identical schema to the pre-consolidation state (fresh-DB dump diff) and applies cleanly against an already-migrated dev DB. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fclairamb
enabled auto-merge (squash)
July 19, 2026 15:43
…t policy The check-form picker's "No escalation (silent)" shortcut creates a zero-step policy and calls onChange(created.uid), but the selection never stuck: Radix Select mirrors its controlled value onto a hidden native <select> for form/accessibility compatibility, and that mirror only recognizes policies whose SelectItem has rendered as a native <option> at least once. The freshly created policy's item never gets that chance — the popover is already closed by the time the create request resolves — so the native mirror reports back an empty change event that silently reset the selection to "" on the very next render. The visible trigger label had the same root cause: Radix's SelectValue caches whichever item's text last mounted while the dropdown was open, so it stayed frozen on the previous "Inherit" label even after the correct policy was selected, since the new item's text never mounted either. Fixes: seed the escalation-policies query cache synchronously in useCreateEscalationPolicy's onSuccess so the new policy is resolvable from the very next render; ignore the spurious empty-string change (no real SelectItem in this list ever uses "" as its value, so it's always that native-mirror echo); and render SelectValue's label from our own computed state instead of relying on Radix's item-mount-based text caching. Found via the E2E test authored for the escalation org-default spec, which failed in CI (authored-but-not-run-locally was flagged as a residual risk when that spec was audited); reproduced locally against a side-car server matching CI's build+seed exactly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Merged
fclairamb
added a commit
that referenced
this pull request
Jul 19, 2026
🤖 I have created a release *beep* *boop* --- ## [0.5.0](v0.4.1...v0.5.0) (2026-07-19) ### Features * batch 2026-07-16 — deported agents, SSH tunnels everywhere, incident comments, OAuth self-revocation, and a critical secrets-leak fix ([#145](#145)) ([994bc85](994bc85)) * batch 2026-07-19 — escalation org default + assignment picker, migration consolidation ([#148](#148)) ([bb585a8](bb585a8)) ### Bug Fixes * **deps:** update dependency docusaurus-plugin-llms to ^0.5.0 ([#147](#147)) ([1d30a78](1d30a78)) * **deps:** update go dependencies (non-major) ([#139](#139)) ([6906133](6906133)) * **deps:** update module github.com/go-ldap/ldap/v3 to v3.4.14 ([#141](#141)) ([b7166d6](b7166d6)) * **deps:** update module github.com/gosnmp/gosnmp to v1.44.0 ([#144](#144)) ([a1c5897](a1c5897)) * open v3 plaintext envelopes before the enabled-gate in sshtunnel and freebox resolvers ([#149](#149)) ([4223bdb](4223bdb)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This was referenced Sep 8, 2026
Closed
Closed
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.
Summary
Batch integration on
batch/2026-07-19— one/implement-todosspec, plus a migrationconsolidation chore, gated by an independent completeness audit and archived to
specs/done/2026/07/.Features
edited in dash0 but nothing in the UI ever assigned one to a check, and there was no org-wide
fallback for checks with none.
default_escalation_policy_uidonorganizations. Resolution precedence is now check → group → org default → none,fixed at incident-open time (never retargets in-flight cycles). Opt-in — unset reproduces
today's behavior exactly. Org settings page shows the blast radius ("N checks currently
inherit and will start using this policy") before you commit to a default.
escalation_modecolumn, no seeded "None"policy. A picker shortcut creates (or reuses) a zero-step policy to represent
"explicitly silent," badged "0 steps — silent" in the policy list, with an informational
note on the check form. Policy delete confirmation now shows usage count across both
checks and groups ("Used by N checks and M groups — they will fall back to inherited
escalation").
<resolved name>" (live-resolves group → org default), the org's policies (silent onesbadged), and the silent shortcut. Check-group REST now also exposes
escalationPolicyUidon both read and write paths (Postgres + SQLite).Chores
007_v0_6_0(deported agents) and008_v0_7_0(this PR'sescalation-default column) are folded into
006_v0_5_0. None of the three had shipped in arelease yet (latest tag
v0.4.1), and the upcoming release is v0.5.0 — perwiki/conventions/database.md("one migration per release"), scratch migrations from arelease cycle get squashed into a single file before release. Verified the consolidated
migration produces a byte-identical schema to the pre-consolidation state and applies
cleanly against an already-migrated dev DB.
QA
make build-backend lint-back testgreen (134 packages).make build-dash0+bun run lintgreen, no new ESLint errors in touched files.changed no net DDL.
delete usage count) but not run locally — the
:4000devloop isn't inSP_RUNMODE=test.