Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
9d12d69
chore: record weekly guardrail baseline pulse
github-actions[bot] Aug 17, 2026
be0ba21
Merge remote-tracking branch 'upstream'
formed2forge Aug 21, 2026
c8fde14
Merge remote-tracking branch 'upstream/main'
formed2forge Aug 22, 2026
374e724
fix(macOS): keep legacy Home visible when toggled (#11933)
undivisible Aug 23, 2026
5069eb1
chore: consolidate changelog for v0.12.209
github-actions[bot] Aug 23, 2026
faab2c4
Make automatic development backend deploys converge (#12019)
Git-on-my-level Aug 23, 2026
a867f87
fix(deploy): let Cloud Run preflight see past the metrics sidecar (#1…
Git-on-my-level Aug 23, 2026
1cf0bb1
fix(deploy): write the GMP secret annotation with a project number (#…
Git-on-my-level Aug 23, 2026
02ee647
fix(deploy): read gcloud's export in the dialect gcloud writes (#12083)
Git-on-my-level Aug 23, 2026
d3c5129
fix(backend): declare the missing composite index for plugin_id-filte…
igor-popov-dev Aug 23, 2026
ed1f063
fix(app): stop retrying a dead speech-profile socket, offer skip inst…
igor-popov-dev Aug 23, 2026
dfd5be7
fix(app): stop a custom-STT hiccup from tearing down the transcriptio…
igor-popov-dev Aug 23, 2026
c08744a
fix(app): report why a phone call was refused instead of always blami…
igor-popov-dev Aug 23, 2026
05012ae
fix(desktop-windows): stop the bar auto-retracting on native Wayland …
formed2forge Aug 23, 2026
c87479b
fix(desktop-windows): classify a permanent mic/loopback failure as te…
formed2forge Aug 23, 2026
847ae3b
fix(ci): use authoritative live PR body on main pushes (#12085)
arhxam Aug 23, 2026
af2df5b
fix(dev-harness): reject loopback-lookalike hostnames (#12086)
arhxam Aug 23, 2026
3e4c461
fix(dev-harness): reject non-executable Typesense overrides (#12087)
arhxam Aug 23, 2026
36fd3fa
fix(dev-harness): honor explicit desktop profile environment (#12088)
arhxam Aug 23, 2026
344364b
fix(backend): ground action items on the primary user (#12089)
arhxam Aug 23, 2026
8ae69ad
fix(desktop-windows): authorize the bar as a PTT command sender (#12077)
formed2forge Aug 23, 2026
0f6da15
fix(backend): stop the async scanner counting awaited calls as blocki…
aryanorastar Aug 23, 2026
b71d7f6
docs(backend): expose self-hosted Firebase auth project (#12007)
shubhxho Aug 23, 2026
af0e451
fix(macos): recognize the browser titles users actually have (#11896)
Archit-lal Aug 23, 2026
aa6c3aa
fix(desktop): align memory source telemetry (#11938)
axAilotl Aug 23, 2026
3627328
chore: consolidate changelog for v0.12.210
github-actions[bot] Aug 23, 2026
8fd4bdd
Make AI task capture suggestion-only, expire suggestions in 2 days, a…
Git-on-my-level Aug 23, 2026
84d6852
fix(macos): add cloud connector disconnect state (#12078)
Git-on-my-level Aug 23, 2026
d495b03
fix(monitoring): accept the Cloud Run metrics egress filter at Cloud …
Git-on-my-level Aug 23, 2026
6de3268
fix(deploy): validate rendered runtime env before apply (#12098)
Git-on-my-level Aug 23, 2026
d712e6e
chore: consolidate changelog for v0.12.211
github-actions[bot] Aug 23, 2026
3819605
fix(monitoring): keep alert UIDs within Grafana's 40-character limit …
Git-on-my-level Aug 23, 2026
2439683
fix(desktop): cap onboarding demo audio at 10s and stop it repeating …
kodjima33 Aug 23, 2026
61f776a
fix(release): encode Stable manifest document IDs
kodjima33 Aug 23, 2026
db25756
fix(release): verify pre-fix Stable candidates
kodjima33 Aug 23, 2026
e005d2d
fix(release): keep candidates moving during Sentry outages
kodjima33 Aug 23, 2026
f2f5b3c
chore: consolidate changelog for v0.12.212
github-actions[bot] Aug 23, 2026
2107e51
fix(desktop): stop the onboarding music instead of looping it forever
kodjima33 Aug 23, 2026
7067273
fix(macOS): repair onboarding permission and profile setup (#12109)
Git-on-my-level Aug 23, 2026
a8ae396
chore: consolidate changelog for v0.12.213
github-actions[bot] Aug 23, 2026
555c1eb
feat(memory): measure canonical decision-path telemetry (#12096)
Git-on-my-level Aug 24, 2026
b18d9e6
fix(deploy): repair project-ID secret paths that crash the next deplo…
Git-on-my-level Aug 24, 2026
daa6cdd
fix(deploy): drop the stale pinned revision name when repairing annot…
Git-on-my-level Aug 24, 2026
682c9e9
fix(desktop-windows): use --frozen-lockfile in README's install step
formed2forge Aug 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 28 additions & 13 deletions .github/actions/deploy-backend-stack/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ description: >-
surfaces, and shared release-vector evidence for manual and auto-dev deploys.

inputs:
firebase_probe_signer_service_account:
description: >-
Optional service account for signing release-probe custom tokens when the
Firebase auth project differs from project_id. Requires
roles/iam.serviceAccountTokenCreator for the deploy identity on it.
required: false
default: ''
deploy_profile:
description: 'manual or auto-dev orchestration profile'
required: true
Expand Down Expand Up @@ -274,18 +281,6 @@ runs:
fi
python3 "$DEPLOY_CONTROL_SCRIPTS/preflight-cloud-run-deploy.py" "${PREFLIGHT_ARGS[@]}"

- name: Validate backend runtime env before deploy
shell: bash
env:
SYNC_LEDGER_FENCE_MODE: ${{ env.SYNC_LEDGER_FENCE_MODE }}
run: |
python3 "$DEPLOY_CONTROL_SCRIPTS/validate-backend-runtime-env.py" \
--env ${{ inputs.runtime_env }} \
--manifest "$GITHUB_WORKSPACE/backend/deploy/runtime_env.yaml" \
--check-workflows \
--workflow-root "$DEPLOY_WORKFLOW_ROOT" \
--check-rendered-cloud-run

- name: Build runtime image
uses: docker/build-push-action@v7
with:
Expand Down Expand Up @@ -428,7 +423,20 @@ runs:
run: |
python3 "$DEPLOY_CONTROL_SCRIPTS/render_backend_runtime_env.py" \
--env ${{ inputs.runtime_env }} \
--manifest "$GITHUB_WORKSPACE/backend/deploy/runtime_env.yaml" >> "$GITHUB_OUTPUT"
--manifest "$GITHUB_WORKSPACE/backend/deploy/runtime_env.yaml" \
--state-output "$RUNNER_TEMP/backend-runtime-env-state.json" >> "$GITHUB_OUTPUT"

- name: Validate backend runtime env before deploy
shell: bash
env:
SYNC_LEDGER_FENCE_MODE: ${{ env.SYNC_LEDGER_FENCE_MODE }}
run: |
python3 "$DEPLOY_CONTROL_SCRIPTS/validate-backend-runtime-env.py" \
--env ${{ inputs.runtime_env }} \
--manifest "$GITHUB_WORKSPACE/backend/deploy/runtime_env.yaml" \
--check-workflows \
--workflow-root "$DEPLOY_WORKFLOW_ROOT" \
--cloud-run-state "$RUNNER_TEMP/backend-runtime-env-state.json"

- name: Migrate legacy public Cloud Run bindings
shell: bash
Expand Down Expand Up @@ -487,6 +495,7 @@ runs:
--final-revision="backend-${{ steps.image-tag.outputs.revision_suffix }}"
--ingress-container=backend-1
--config="$DEPLOY_CONTROL_SCRIPTS/../deploy/cloud_run_gmp_sidecar.yaml"
--expected-env-state="$RUNNER_TEMP/backend-runtime-env-state.json"
)
if [[ -n "$GMP_CANDIDATE_TAG" ]]; then
args+=(--tag="$GMP_CANDIDATE_TAG")
Expand Down Expand Up @@ -744,6 +753,12 @@ runs:
candidate_api_url: ${{ steps.transcription-candidate.outputs.url }}
project_id: ${{ inputs.project_id }}
firebase_auth_project_id: based-hardware
# A development deploy identity cannot sign a custom token for the
# production Firebase project this gate authenticates against, so it
# failed at custom_token_signing and blocked every manual development
# deploy. Left empty the behaviour is unchanged; set the variable to
# the Firebase project's signer to make this lane usable.
firebase_signer_service_account: ${{ inputs.firebase_probe_signer_service_account }}

- name: Accept no-traffic Cloud Run candidate
id: verify-cloud-run-candidate
Expand Down
20 changes: 17 additions & 3 deletions .github/actions/transcription-release-candidate-probe/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ inputs:
firebase_auth_project_id:
description: Firebase project whose ID-token audience the candidate verifies.
required: true
firebase_signer_service_account:
description: >-
Service account to sign the probe's custom token as. Required when the
Firebase auth project differs from project_id, because Identity Toolkit
only accepts a signer authorized for that Firebase project. The caller's
deploy identity needs roles/iam.serviceAccountTokenCreator on it.
required: false
default: ''
evidence_path:
description: Optional absolute path for the redacted probe report.
required: false
Expand All @@ -26,15 +34,21 @@ runs:
EVIDENCE_PATH: ${{ inputs.evidence_path }}
PROBE_SECRET_PROJECT: ${{ inputs.project_id }}
FIREBASE_AUTH_PROJECT_ID: ${{ inputs.firebase_auth_project_id }}
FIREBASE_SIGNER_SERVICE_ACCOUNT: ${{ inputs.firebase_signer_service_account }}
run: |
set -euo pipefail
DEPLOY_CONTROL_SCRIPT_DIR="${DEPLOY_CONTROL_SCRIPTS:-backend/scripts}"
token_file="$(mktemp "$RUNNER_TEMP/omi-transcription-probe.XXXXXX")"
trap 'rm -f "$token_file"' EXIT
python3 "$DEPLOY_CONTROL_SCRIPT_DIR/firebase_release_probe_token.py" \
--secret-project "$PROBE_SECRET_PROJECT" \
--firebase-project "$FIREBASE_AUTH_PROJECT_ID" \
token_args=(
--secret-project "$PROBE_SECRET_PROJECT"
--firebase-project "$FIREBASE_AUTH_PROJECT_ID"
--token-output "$token_file"
)
if [[ -n "$FIREBASE_SIGNER_SERVICE_ACCOUNT" ]]; then
token_args+=(--signer-service-account "$FIREBASE_SIGNER_SERVICE_ACCOUNT")
fi
python3 "$DEPLOY_CONTROL_SCRIPT_DIR/firebase_release_probe_token.py" "${token_args[@]}"
probe_args=(
--candidate-api-url "$CANDIDATE_API_URL"
--bearer-token-file "$token_file"
Expand Down
19 changes: 17 additions & 2 deletions .github/checks-manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,16 @@ checks:
triggers: ["desktop/macos/Desktop/Sources/FloatingControlBar/RealtimeHubController.swift", "desktop/macos/scripts/check-hub-controller-ratchet.py"]
lanes: ["local", "ci"]
reason: "realtime hub extracted-type ownership anti-regrowth ratchet"
- id: task-capture-authority
command: ["python3", ".github/scripts/check_task_capture_authority.py"]
triggers: ["backend/utils/task_intelligence/**", "backend/utils/conversations/process_conversation.py", "backend/config/task_intelligence_sources_v1.json", "desktop/macos/Desktop/Sources/ProactiveAssistants/Assistants/TaskExtraction/**", ".github/scripts/check_task_capture_authority.py"]
lanes: ["local", "ci"]
reason: "INV-TASK-2: automatic capture proposes; four shipped paths wrote tasks the user never asked for"
- id: task-capture-authority-tests
command: ["python3", ".github/scripts/test_check_task_capture_authority.py"]
triggers: [".github/scripts/check_task_capture_authority.py", ".github/scripts/test_check_task_capture_authority.py", ".github/checks-manifest.yaml"]
lanes: ["local", "ci"]
reason: "the guard must still fail on each shape it was written for"
- id: desktop-auth-session-ratchet
command: ["python3", ".github/scripts/check_desktop_auth_session.py"]
triggers: ["desktop/macos/Desktop/Sources/APIClient.swift", "desktop/macos/Desktop/Sources/AuthService.swift", "desktop/macos/Desktop/Sources/AuthSessionCoordinator.swift", "desktop/macos/Desktop/Sources/DesktopKeychainStore.swift", "desktop/macos/Desktop/Sources/OmiApp.swift", "desktop/macos/Desktop/Sources/Auth/**/*.swift", ".github/scripts/check_desktop_auth_session.py"]
Expand Down Expand Up @@ -689,14 +699,19 @@ checks:
reason: "#9989 exercises non-main, ambiguous SHA, mismatched checkout, and workflow-contract rejection cases"
- id: backend-deploy-source-admission
command: ["python3", ".github/scripts/check_backend_deploy_source_admission.py"]
triggers: [".github/workflows/gcp_backend.yml", ".github/workflows/gcp_backend_auto_dev.yml", ".github/actions/deploy-backend-stack/**", ".github/scripts/verify_backend_release_admission.py", ".github/scripts/verify_auto_backend_release_admission.py", ".github/scripts/check_backend_deploy_source_admission.py", ".github/scripts/test_check_backend_deploy_source_admission.py", ".github/scripts/workflow_composite_contract.py", ".github/checks-manifest.yaml"]
triggers: [".github/workflows/gcp_backend.yml", ".github/workflows/gcp_backend_auto_dev.yml", ".github/actions/deploy-backend-stack/**", ".github/scripts/verify_backend_release_admission.py", ".github/scripts/verify_auto_backend_release_admission.py", ".github/scripts/check_backend_deploy_source_admission.py", ".github/scripts/test_check_backend_deploy_source_admission.py", ".github/scripts/test_verify_auto_backend_release_admission.py", ".github/scripts/workflow_composite_contract.py", ".github/checks-manifest.yaml"]
lanes: ["local", "ci"]
reason: "#9991 keeps backend deploy source selection bound to one successful main Release Eligibility proof"
- id: backend-deploy-source-admission-fixtures
command: ["python3", ".github/scripts/test_check_backend_deploy_source_admission.py"]
triggers: [".github/workflows/gcp_backend.yml", ".github/workflows/gcp_backend_auto_dev.yml", ".github/actions/deploy-backend-stack/**", ".github/scripts/verify_backend_release_admission.py", ".github/scripts/verify_auto_backend_release_admission.py", ".github/scripts/check_backend_deploy_source_admission.py", ".github/scripts/test_check_backend_deploy_source_admission.py", ".github/scripts/workflow_composite_contract.py", ".github/checks-manifest.yaml"]
triggers: [".github/workflows/gcp_backend.yml", ".github/workflows/gcp_backend_auto_dev.yml", ".github/actions/deploy-backend-stack/**", ".github/scripts/verify_backend_release_admission.py", ".github/scripts/verify_auto_backend_release_admission.py", ".github/scripts/check_backend_deploy_source_admission.py", ".github/scripts/test_check_backend_deploy_source_admission.py", ".github/scripts/test_verify_auto_backend_release_admission.py", ".github/scripts/workflow_composite_contract.py", ".github/checks-manifest.yaml"]
lanes: ["local", "ci"]
reason: "#9991 mutation-tests workflow-run event, result, branch, SHA, repository, and manual proof drift"
- id: automatic-backend-release-admission
command: ["python3", ".github/scripts/test_verify_auto_backend_release_admission.py"]
triggers: [".github/workflows/gcp_backend.yml", ".github/workflows/gcp_backend_auto_dev.yml", ".github/actions/deploy-backend-stack/**", ".github/scripts/verify_backend_release_admission.py", ".github/scripts/verify_auto_backend_release_admission.py", ".github/scripts/check_backend_deploy_source_admission.py", ".github/scripts/test_check_backend_deploy_source_admission.py", ".github/scripts/test_verify_auto_backend_release_admission.py", ".github/scripts/workflow_composite_contract.py", ".github/checks-manifest.yaml"]
lanes: ["local", "ci"]
reason: "#11979 keeps automatic development admission on merged-into-main ancestry, not main-tip equality"
- id: gcp-backend-production-boundary
command: ["python3", ".github/scripts/check-gcp-backend-production-boundary.py"]
triggers: [".github/workflows/gcp_backend.yml", ".github/actions/deploy-backend-stack/**", "backend/scripts/firebase_release_probe_token.py", "backend/scripts/transcription_capability_probe.py", ".github/scripts/check-gcp-backend-production-boundary.py", ".github/scripts/test_check_gcp_backend_production_boundary.py", ".github/scripts/workflow_composite_contract.py", ".github/checks-manifest.yaml"]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"schema_version": 1,
"id": "FC-bridge-liveness-without-data-path-proof",
"violated_contract": "A component whose only purpose is to move data between two systems is healthy only when a datum has recently crossed the whole path. Process availability, HTTP readiness, and a downstream scrape's `up` describe the relay's own endpoint, not its cargo, so they must never be allowed to classify it as healthy while every upstream query is rejected or every selector matches nothing. A relay that answers its own liveness probe while importing zero rows is indistinguishable, at the destination, from a source that is simply idle -- and idle is the reading an operator will take.",
"canonical_prevention": "Alert on the relay's own upstream outcome and on arrival, never on its liveness: the count of failed upstream queries, and the presence of at least one imported series under the name the destination actually queries. Execute the composed upstream expression against the real vendor endpoint before shipping the config that produces it -- a filter or query assembled in values is a program whose only compiler is the vendor API, and it is never exercised by rendering, unit tests, or deployment success.",
"canonical_prevention_artifact": [
"backend/charts/monitoring/alert-rules.json",
"backend/docs/runbooks/cloud-run-metrics-ingestion.md"
],
"evidence_prs": [11998],
"scope_hints": [
"backend/charts/monitoring/prometheus-stackdriver-exporter/**",
"backend/charts/monitoring/kube-prometheus-stack/**",
".github/workflows/gcp_cloud_run_metrics_egress.yml"
],
"status": "open"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"schema_version": 1,
"id": "FC-config-target-identified-by-count-not-identity",
"violated_contract": "A check that reads or rewrites one component's configuration must select that component by identity, never by asserting it is the only one present. Counting is a proxy for identity that holds only until something legitimately adds a second component, and when it breaks it rejects a correctly configured service rather than reporting real drift.",
"canonical_prevention": "Select the target by name or role and exclude known companions explicitly, sharing one definition of those companions with whatever attaches them. Reserve a cardinality assertion for the set that remains after companions are excluded, so the check still fails a genuinely ambiguous shape.",
"canonical_prevention_artifact": [
"backend/scripts/preflight-cloud-run-deploy.py",
"backend/tests/unit/test_preflight_cloud_run_deploy.py"
],
"evidence_prs": [11998],
"scope_hints": [
"backend/scripts/preflight-cloud-run-deploy.py",
"backend/scripts/attach_cloud_run_gmp_sidecar.py",
".github/actions/deploy-backend-stack/action.yml"
],
"status": "open"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"schema_version": 1,
"id": "FC-metadata-format-validated-only-on-next-read",
"violated_contract": "A value written into shared platform metadata must satisfy the parser of every tool that later reads that metadata, not merely the API that accepts the write. When the writing API is permissive and a different consumer is strict, the write succeeds and the failure surfaces on the next unrelated operation against the same resource, pointing away from the change that caused it.",
"canonical_prevention": "Write the strictest form every known consumer accepts, and assert that form in the writer's own test against the consumer's actual validation rule rather than a hand-copied expectation. Where the consumer is a vendored tool, copy its rule verbatim into the test so a vendor upgrade that tightens it fails locally instead of on the next deploy.",
"canonical_prevention_artifact": [
"backend/scripts/attach_cloud_run_gmp_sidecar.py",
"backend/tests/unit/test_attach_cloud_run_gmp_sidecar.py"
],
"evidence_prs": [11998],
"scope_hints": [
"backend/scripts/attach_cloud_run_gmp_sidecar.py",
"backend/deploy/cloud_run_gmp_sidecar.yaml",
".github/actions/deploy-backend-stack/action.yml"
],
"status": "open"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"schema_version": 1,
"id": "FC-serialiser-dialect-mismatch-retypes-values",
"violated_contract": "A tool that reads another tool's serialized output, edits it, and writes it back must parse under the same dialect the producer emitted. When the reader's dialect types a plain scalar differently from the writer's, the round trip silently rewrites values the edit never touched, and the corruption is attributed to whoever reads the record next rather than to the tool that rewrote it.",
"canonical_prevention": "Pin the reader to the producer's dialect rather than the library default, and prove the round trip is value-preserving with a fixture copied verbatim from the producer's real output -- not a hand-written approximation, which will be written in the dialect the author already assumes.",
"canonical_prevention_artifact": [
"backend/scripts/attach_cloud_run_gmp_sidecar.py",
"backend/tests/unit/test_attach_cloud_run_gmp_sidecar.py"
],
"evidence_prs": [11998],
"scope_hints": [
"backend/scripts/attach_cloud_run_gmp_sidecar.py",
"backend/deploy/runtime_env.yaml",
".github/actions/deploy-backend-stack/action.yml"
],
"status": "open"
}
1 change: 1 addition & 0 deletions .github/guardrail-pulse-history.jsonl
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
{"date": "2026-07-23", "metrics": {"brand_ui_purple": {"baseline": 1776, "count": 1776}, "deferred_work_markers": {"baseline": 837, "count": 837}, "lifecycle_unlabeled_scripts": {"baseline": 17, "count": 17}, "mapless_packages": {"baseline": 6, "count": 3}, "union_return_isinstance": {"baseline": 0, "count": 0}, "version_prefixed_files": {"baseline": 42, "count": 42}}}
{"date": "2026-08-17", "metrics": {"brand_ui_purple": {"baseline": 1763, "count": 1763}, "deferred_work_markers": {"baseline": 829, "count": 829}, "lifecycle_unlabeled_scripts": {"baseline": 10, "count": 10}, "mapless_packages": {"baseline": 6, "count": 2}, "union_return_isinstance": {"baseline": 0, "count": 0}, "version_prefixed_files": {"baseline": 38, "count": 38}}}
3 changes: 2 additions & 1 deletion .github/scripts/check-desktop-prod-promotion-policy.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
"EXPECTED_RELEASE_ID",
"EXPECTED_GENERATION",
"desktop_update_channels/macos-stable",
"desktop_release_manifests/$RELEASE_TAG",
'ENCODED_RELEASE_TAG="${RELEASE_TAG/+/%2B}"',
"desktop_release_manifests/$ENCODED_RELEASE_TAG",
"Publish immutable stable repair installer",
"Advance explicit stable pointer",
"Bridge stable for legacy desktop clients",
Expand Down
9 changes: 8 additions & 1 deletion .github/scripts/check-mobile-production-routing.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,16 @@
RETIRED_GKE_DESKTOP_BACKEND_MARKERS = ("desktop-api.omi.me", "desktop-backend")
GKE_WORKFLOW_MARKERS = ("gcloud container clusters", "helm ", "kubectl ")
CLOUD_RUN_OBSERVER_ROOT = Path("backend/charts/monitoring/prometheus-stackdriver-exporter")
# What makes one of these files an observer of Cloud Run is the monitored
# resource it selects, not how it spells the namespace set. `__run__` is Cloud
# Run's reserved pseudo-cluster, so these two markers together are proof; keying
# the exemption on an exact namespace comparison instead made it collapse the
# moment that disjunction was rewritten as one_of(...) to satisfy Cloud
# Monitoring's filter grammar, and flagged a read-only metrics reader as retired
# GKE ownership.
CLOUD_RUN_OBSERVER_MARKERS = (
"prometheus.googleapis.com/",
'resource.labels.namespace="desktop-backend"',
'resource.labels.cluster="__run__"',
)
LEGACY_BETA_ROUTING_PATHS = (
"codemagic.yaml",
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/check-release-process-guards.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ def check_desktop_codemagic_release() -> list[str]:

for required_fragment in (
"publish-desktop-debug-symbols.sh generate",
"publish-desktop-debug-symbols.sh upload",
"publish-desktop-debug-symbols.sh upload-best-effort",
'"$DSYM_ARCHIVE"',
"- build/*.dSYM",
"source scripts/launcher-bootstrap.sh",
Expand Down
Loading