fix(proxy): retry silent bridge creates sooner - #1555
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
d0d264d to
a448b9c
Compare
6b8464c to
1b12951
Compare
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Main moved under this one. #1394 (merged 08-04, a66f793) landed the bounded version of this recovery: 60s eventless cap (helpers.py:201 on main), one fresh-hard replay via This PR's remaining delta reverses each of those decisions by editing the spec in place: cross-account owner rebind in Separately, the migration set can't land in any form: Closing in favor of #1394; the |
|
Closing per maintainer decision: superseded by #1394, and as filed this reverses merged spec MUST NOTs (duplicate-execution hazard) and carries fork-only schema migrations — full breakdown above. Any route-selection-escape behavior change needs a fresh owner-approved openspec change without the schema baggage. |
Summary
response.created, or closes before any user-visible outputmissing_response_created_timeoutfailures so route selection can escape an eventless upstream account instead of reselecting itmainand merge the bridge and capability-lineage Alembic branches into one migration headContext
The old bridge path could leave an accepted request attached to the same silent owner for minutes because no
response.createdevent arrived to establish a durable anchor. The recovery path now treats that pre-visible state explicitly: it bounds the wait, clears terminal or stale ownership, records owner-side missing-created failures in account health, retries on a valid owner, and keeps accounting aligned with the owner that actually settled the attempt.The branch's bridge compatibility migrations and the capability-lineage migration now on
mainboth extend the earlier pending-tool-call chain. The final no-op merge revision names both revisions as parents, preserving both schema histories while restoring the repository's single-head Alembic invariant.Validation
uv run --frozen pytest -q tests/unit/test_proxy_http_bridge.py::test_http_bridge_eventless_precreated_deadline_uses_current_send_and_client_safe_cap tests/integration/test_http_responses_bridge.py::test_v1_responses_http_bridge_retries_when_upstream_never_acknowledges_response_create tests/integration/test_http_responses_bridge.py::test_v1_responses_http_bridge_retries_once_when_upstream_closes_before_response_createduv run pytest -q tests/unit/test_proxy_http_bridge.pyuv run pytest -q tests/unit/test_proxy_http_bridge.py -k 'eventless_timeout or missing_response_created or force_retires'uv run --frozen pytest -q tests/unit/test_db_migrate.pyuv run --frozen ruff check app/modules/proxy/_service/http_bridge/helpers.py tests/unit/test_proxy_http_bridge.py tests/integration/test_http_responses_bridge.py app/db/alembic/versions/20260802_000000_merge_bridge_and_capability_lineage_heads.py tests/unit/test_db_migrate.pyuv run ruff check app/modules/proxy/_service/http_bridge/upstream_events.py tests/unit/test_proxy_http_bridge.pyuv run --frozen ruff format --check app/modules/proxy/_service/http_bridge/helpers.py tests/unit/test_proxy_http_bridge.py tests/integration/test_http_responses_bridge.py app/db/alembic/versions/20260802_000000_merge_bridge_and_capability_lineage_heads.py tests/unit/test_db_migrate.pyuv run --frozen ty checkopenspec validate recover-codex-desktop-idle-bridge --strictgit diff --checkpassedcodex-lb:live-stack-89edc22returnedmigration_policy=okandschema_drift=none