Skip to content

Commit 9b9dcd3

Browse files
revert(dream): DREAM_AGENT_PAID_PERCENT back to 25 (revert BasedHardware#23208) (BasedHardware#23295)
* revert(dream): DREAM_AGENT_PAID_PERCENT back to 25 (revert BasedHardware#23208) The 12:00Z sweep at 100% crashed in dream_scheduler.discover with Firestore DeadlineExceeded; prod was rolled back to 25 by env apply at 13:02Z. This keeps the manifest in sync so trains do not re-apply 100. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(sync): read local_wal_sync part files in the WAL reconcile source check ca8422b moved the reconcile switch into the wal_job_reconciliation.dart part file, so the single-file source assertion failed on main. Read the library plus its declared parts; behaviour is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 800f812 commit 9b9dcd3

5 files changed

Lines changed: 19 additions & 12 deletions

File tree

‎backend/deploy/runtime_env.yaml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3174,7 +3174,7 @@ environments:
31743174
OMI_MESSAGING_LINK_TARGETS: {value: '{"telegram":{"provider":"telegram","address":"omi_chat_bot","deep_link_template":"https://t.me/{address}?start={proof}"},"imessage":{"provider":"linq","address":"+12062808403"}}',
31753175
category: rollout}
31763176
DREAM_AGENT_ENABLED: {value: 'true', category: rollout}
3177-
DREAM_AGENT_PAID_PERCENT: {value: '100', category: rollout}
3177+
DREAM_AGENT_PAID_PERCENT: {value: '25', category: rollout}
31783178
DREAM_AGENT_CONCURRENCY:
31793179
value: '8'
31803180
category: reliability
@@ -3544,7 +3544,7 @@ environments:
35443544
TRANSCRIPTION_SYNC_FINAL_PASS_HOURLY_REQUESTS: {value: '15000', category: rollout}
35453545
OMI_SHAPED_AGENT_MODE: {value: 'on', category: rollout}
35463546
DREAM_AGENT_ENABLED: {value: 'true', category: rollout}
3547-
DREAM_AGENT_PAID_PERCENT: {value: '100', category: rollout}
3547+
DREAM_AGENT_PAID_PERCENT: {value: '25', category: rollout}
35483548
DREAM_AGENT_CONCURRENCY:
35493549
value: '8'
35503550
category: reliability
@@ -3906,7 +3906,7 @@ environments:
39063906
TRANSCRIPTION_SYNC_FINAL_PASS_HOURLY_REQUESTS: {value: '15000', category: rollout}
39073907
OMI_SHAPED_AGENT_MODE: {value: 'on', category: rollout}
39083908
DREAM_AGENT_ENABLED: {value: 'true', category: rollout}
3909-
DREAM_AGENT_PAID_PERCENT: {value: '100', category: rollout}
3909+
DREAM_AGENT_PAID_PERCENT: {value: '25', category: rollout}
39103910
DREAM_AGENT_CONCURRENCY:
39113911
value: '8'
39123912
category: reliability
@@ -4209,7 +4209,7 @@ environments:
42094209
CAPTURE_SHARED_SPEECH_PERCENT: {value: '0', category: rollout}
42104210
OMI_SHAPED_AGENT_MODE: {value: 'on', category: rollout}
42114211
DREAM_AGENT_ENABLED: {value: 'true', category: rollout}
4212-
DREAM_AGENT_PAID_PERCENT: {value: '100', category: rollout}
4212+
DREAM_AGENT_PAID_PERCENT: {value: '25', category: rollout}
42134213
DREAM_AGENT_CONCURRENCY:
42144214
value: '8'
42154215
category: reliability

‎backend/deploy/runtime_env/prod.overlay.yaml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ overlay:
539539
value: paid
540540
category: rollout
541541
DREAM_AGENT_PAID_PERCENT:
542-
value: '100'
542+
value: '25'
543543
category: rollout
544544
DREAM_AGENT_CONCURRENCY:
545545
value: '8'
@@ -851,7 +851,7 @@ overlay:
851851
value: paid
852852
category: rollout
853853
DREAM_AGENT_PAID_PERCENT:
854-
value: '100'
854+
value: '25'
855855
category: rollout
856856
DREAM_AGENT_CONCURRENCY:
857857
value: '8'
@@ -1198,7 +1198,7 @@ overlay:
11981198
value: paid
11991199
category: rollout
12001200
DREAM_AGENT_PAID_PERCENT:
1201-
value: '100'
1201+
value: '25'
12021202
category: rollout
12031203
DREAM_AGENT_CONCURRENCY:
12041204
value: '8'
@@ -1482,7 +1482,7 @@ overlay:
14821482
value: paid
14831483
category: rollout
14841484
DREAM_AGENT_PAID_PERCENT:
1485-
value: '100'
1485+
value: '25'
14861486
category: rollout
14871487
DREAM_AGENT_CONCURRENCY:
14881488
value: '8'

‎backend/docs/feature-flag-registry.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ and an explicit empty literal renders as `''`.
192192
| `DEMAND_PROCESSING_SURFACE_REPORTING_ENABLED` | Default-off demand processing control: surface reporting enabled | backend, macos, mobile | env | closed | {value: 'false', category: rollout} | false (backend-listen (chart), pusher (chart)); {value: 'false', category: rollout} (cloud_run/backend, cloud_run/backend-integration, cloud_run/backend-sync, cloud_run/backend-sync-backfill, desktop-backend, gke/backend-listen, gke/pusher, job/notifications-job) | false (backend-listen (chart), cloud_run/backend, cloud_run/backend-integration, cloud_run/backend-sync, cloud_run/backend-sync-backfill, pusher (chart)); {value: 'false', category: rollout} (desktop-backend, gke/backend-listen, gke/pusher, job/notifications-job) | — | graduate | on | 2026-11-15 | dazheng |
193193
| `DEMAND_PROCESSING_TOOL_ENABLED` | Default-off demand processing control: tool enabled | backend | env | closed | {value: 'false', category: rollout} | false (backend-listen (chart), pusher (chart)); {value: 'false', category: rollout} (cloud_run/backend, cloud_run/backend-integration, cloud_run/backend-sync, cloud_run/backend-sync-backfill, desktop-backend, gke/backend-listen, gke/pusher, job/notifications-job) | false (backend-listen (chart), cloud_run/backend, cloud_run/backend-integration, cloud_run/backend-sync, cloud_run/backend-sync-backfill, pusher (chart)); {value: 'false', category: rollout} (desktop-backend, gke/backend-listen, gke/pusher, job/notifications-job) | — | graduate | on | 2026-11-15 | dazheng |
194194
| `DEMAND_PROCESSING_UID_ALLOWLIST` | Default-off demand processing control: uid allowlist | backend | env | closed | {value: '', category: rollout} | '' (backend-listen (chart), pusher (chart)); {value: '', category: rollout} (gke/backend-listen, gke/pusher) | '' (backend-listen (chart), pusher (chart)); {value: '', category: rollout} (gke/backend-listen, gke/pusher) | — | kill | off | 2026-11-15 | dazheng |
195-
| `DREAM_AGENT_PAID_PERCENT` | Stable per-owner percent of paid owners eligible under ELIGIBILITY=paid; unset admits all paid owners, malformed admits none; listed owners always stay in | backend | env | closed | — | — | 100 | — | kill | off | 2026-11-04 | dazheng |
195+
| `DREAM_AGENT_PAID_PERCENT` | Stable per-owner percent of paid owners eligible under ELIGIBILITY=paid; unset admits all paid owners, malformed admits none; listed owners always stay in | backend | env | closed | — | — | 25 | — | kill | off | 2026-11-04 | dazheng |
196196
| `EDGE_SHADOW_PERCENT` | Plan D D2: static uid-hash cohort whose raw listen frames and VAD window decisions are mirrored fire-and-forget to listen-edge /v1/shadow; default 0 (kill switch) | backend | env | closed | — | — | 0 (backend-listen (chart)) | — | pending | undecided | 2026-11-20 | dazheng |
197197
| `ENRICHMENT_ROUTE` | Default sync_handler; enrichment_queue binds new sr- enrichment obligations to /v2/enrichment/run on the enrichment queue (plan C3) | backend | env | closed | — | — | — | — | pending | undecided | 2026-11-02 | dazheng |
198198
| `EPISODES_CLIENT_CHANNELS` | Default beta; comma-separated X-Omi-App-Channel values (beta, store) whose episodes API calls are admitted and set the client-seen marker. A missing or unknown channel is never admitted | backend | env | closed | — | — | — | — | pending | on | 2026-11-03 | dazheng |

‎backend/tests/unit/test_sync_silent_failure.py‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"""
1111

1212
import os
13+
import re
1314
import threading
1415
from datetime import datetime, timezone
1516
from pathlib import Path
@@ -403,9 +404,15 @@ def test_app_accepts_200_and_202(self):
403404

404405
def test_app_keeps_wals_retryable_on_failed_reconcile(self):
405406
"""App keeps uploaded WALs retryable when sync v2 reconciliation fails."""
406-
source = self._read_app_file('services/wals/local_wal_sync.dart')
407-
if source is None:
407+
library = self._read_app_file('services/wals/local_wal_sync.dart')
408+
if library is None:
408409
pytest.skip("App source not available")
410+
# The reconcile logic lives in `part` files of this library (e.g. wal_job_reconciliation.dart).
411+
parts = [
412+
self._read_app_file(f'services/wals/{name}') or ''
413+
for name in re.findall(r"^part '([^']+)';", library, flags=re.MULTILINE)
414+
]
415+
source = '\n'.join([library, *parts])
409416

410417
assert 'reconcileUploadedWals' in source, "Must reconcile uploaded sync v2 jobs"
411418
assert 'case SyncJobFetchOutcome.notFound' in source, "Expired jobs must be recoverable"

‎config/feature-flags.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ flags:
126126
- {"key":"DREAM_AGENT_EXPECTED_TOKENS","aliases":[],"kind":"env","lifecycle":"config_switch","surfaces":["backend"],"summary":"Expected session tokens for initial spend holds and derived concurrency; default 12000; actual turn reservations enforce ceilings","fail":"closed","owner":"dazheng","created":"2026-10-15","terminal":"keep","decision":"keep"}
127127
- {"key":"DREAM_AGENT_ENABLED","aliases":[],"kind":"env","lifecycle":"ops_kill","surfaces":["backend"],"summary":"Global Dream harness kill switch; false prevents admission, model dispatch and effects","fail":"closed","owner":"dazheng","created":"2026-10-14","terminal":"keep","decision":"keep"}
128128
- {"key":"DREAM_AGENT_ELIGIBILITY","aliases":[],"kind":"env","lifecycle":"config_switch","surfaces":["backend"],"summary":"Eligible owner policy: all default, paid or allowlist; invalid values fail closed. Prod is paid, narrowed by DREAM_AGENT_PAID_PERCENT","fail":"closed","owner":"dazheng","created":"2026-10-14","terminal":"keep","decision":"keep"}
129-
- {"key":"DREAM_AGENT_PAID_PERCENT","aliases":[],"kind":"env","lifecycle":"rollout","surfaces":["backend"],"summary":"Stable per-owner percent of paid owners eligible under ELIGIBILITY=paid; unset admits all paid owners, malformed admits none; listed owners always stay in","fail":"closed","owner":"dazheng","created":"2026-10-21","review_by":"2026-11-04","terminal":"off","decision":"kill","notes":"David 2026-10-21: Dream ramps to paid owners on the 3.8 reservation; reservation headroom is the global cap. Delete the knob once prod runs unset (100%). 2026-10-21 13:01Z: the first 5% sweep failed ~17 cohort passes in seconds (error_type=other, applied=0); rolled back to 0 pending diagnosis. Cause: Firestore Aborted contention on the turn ledger, admission and discovery transactions; fixed by bounded retries (#23051). Re-ramp at 5% with DREAM_AGENT_CONCURRENCY=8. 2026-10-22: 5% held clean after the in-pass 429 retry (#23085): 00:00Z sweep complete=6 failed=0, dedicated-only 3.8; step to 25% at concurrency 8. 2026-10-22: 25% held clean with the gateway probe fix (#23180); set 100 explicitly (Cloud Run env merges never remove a key), then delete the knob in a cleanup PR.","ramp":{"cohorts":["listed owner + 5% of paid owners, 1 h hold","25%, 3 h hold","unset (all paid owners), 6 h soak"],"clean_metric":"<2 failed Dream passes/h, no new Dream ERROR signatures on backend-sync, no probe_failed storm, undo rate under 0.2, zero 3.8 on-demand Dream spend","expander":"dazheng (Dream lane, deploys via the rollout lead)","done_by":"2026-10-22"}}
129+
- {"key":"DREAM_AGENT_PAID_PERCENT","aliases":[],"kind":"env","lifecycle":"rollout","surfaces":["backend"],"summary":"Stable per-owner percent of paid owners eligible under ELIGIBILITY=paid; unset admits all paid owners, malformed admits none; listed owners always stay in","fail":"closed","owner":"dazheng","created":"2026-10-21","review_by":"2026-11-04","terminal":"off","decision":"kill","notes":"David 2026-10-21: Dream ramps to paid owners on the 3.8 reservation; reservation headroom is the global cap. Delete the knob once prod runs unset (100%). 2026-10-21 13:01Z: the first 5% sweep failed ~17 cohort passes in seconds (error_type=other, applied=0); rolled back to 0 pending diagnosis. Cause: Firestore Aborted contention on the turn ledger, admission and discovery transactions; fixed by bounded retries (#23051). Re-ramp at 5% with DREAM_AGENT_CONCURRENCY=8. 2026-10-22: 5% held clean after the in-pass 429 retry (#23085): 00:00Z sweep complete=6 failed=0, dedicated-only 3.8; step to 25% at concurrency 8.","ramp":{"cohorts":["listed owner + 5% of paid owners, 1 h hold","25%, 3 h hold","unset (all paid owners), 6 h soak"],"clean_metric":"<2 failed Dream passes/h, no new Dream ERROR signatures on backend-sync, no probe_failed storm, undo rate under 0.2, zero 3.8 on-demand Dream spend","expander":"dazheng (Dream lane, deploys via the rollout lead)","done_by":"2026-10-22"}}
130130
- {"key":"DREAM_AGENT_UID_ALLOWLIST","aliases":[],"kind":"env","lifecycle":"config_switch","surfaces":["backend"],"summary":"Comma-separated owner uids admitted when eligibility is allowlist; empty admits nobody","fail":"closed","owner":"dazheng","created":"2026-10-15","terminal":"keep","decision":"keep"}
131131
- {"key":"DREAM_ON_DEMAND_ENABLED","aliases":[],"kind":"env","lifecycle":"config_switch","surfaces":["backend"],"summary":"Gateway and backend gate for allowlisted Dream on-demand capacity; default false; prod backend false since the 3.8 reservation went live 2026-10-21","fail":"closed","owner":"dazheng","created":"2026-10-15","terminal":"keep","decision":"keep"}
132132
- {"key":"DREAM_GATEWAY_PROBE_ENABLED","aliases":[],"kind":"env","lifecycle":"ops_kill","surfaces":["backend"],"summary":"Default-on 3.8 reservation probe through the LLM gateway's reserved Dream route; 0/false/off/no makes no probe call and admission relies on fresh evidence from real Dream turns","fail":"open","owner":"dazheng","created":"2026-10-22","terminal":"keep","decision":"keep"}

0 commit comments

Comments
 (0)