Repository navigation
fix(android): preserve quiet Gateway turns and recover completion - #694
Merged
Merged
Conversation
Extend the preserved PR #675 commits with read-only quiet probes, exact unsolicited settlement, passive reconnect and shutdown, native ask replay, and missing-final history reconciliation. Cover owner and observer paths through real Gateway transport and rendered fixture tests. Update current-upstream conformance for extracted helpers and additive requests. Adapt cancellation-only diagnostics from PR #668. Supersede PR #662's eventual interrupt lease; quiet tools use server-owned liveness instead. Co-authored-by: ophirhan <ophirhan@users.noreply.github.com>
Contributor
|
Noting handoff from my open #668 ( I agree with the lineage note here: the cancellation-only interrupt diagnostics were the durable piece; the local idle-timeout failure is correctly superseded by this PR’s quiet I’ve closed #668 as superseded by this consolidation (thanks for preserving co-authorship on the adapted commit). No further action needed from me on that branch unless something from #668’s Diagnostics Stop entry ( |
6 tasks done
This was referenced Oct 15, 2026
3 tasks done
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
Android treated a quiet Gateway turn as failed and sent
session.interrupt, including when another client submitted the turn. Quiet tools, provider waits, and compaction now keep their stream alive. Authoritative Gateway state recovers a missing completion frame and its saved answer without sending Stop.Addresses #676 and preserves the passive-observation guarantees discussed in #365.
Changes
session.active_listchecks during quiet periods. Fence settlement by turn, runtime/durable session, profile, socket, and progress generation.Verification
Candidate:
3ab59c12c496c44ae1669af4be87d402ce54216c, incorporating verifieddevatebebc3183bb62bb7feccfcad344ac9c3d75023f6. Prerequisite #715 restored the compatible native runtime and enforced the required-checks merge gate.3ab59c12c496c44ae1669af4be87d402ce54216c, including both APK native compatibility checks, lint, unit tests, and upstream routes. The first unit-test job timed out without a reported failing assertion; the job retry and the same focused CI shard run locally both passed on the unchanged commit.GatewayForegroundRecoveryInstrumentedTest: all nine tests passed on the exact final candidate3ab59c12c, with zero failures, errors, or skips. The active-list scenario now waits for its received partial answer so the idle probe captures the current progress generation. The timeout and production settlement guards are unchanged.python -m unittest discover -s scripts/tests -p check_gateway_scenario_conformance_test.py: 15 passed. The checker follows upstream's extracted session registry while retaining identity, status, and settlement checks; regressions verify missing fields/states still fail.73b9f2af7b87a619f42396710c332be04353aef2:quiet_turn_recovery,terminal_gap_activate,terminal_gap_session_info,terminal_gap_active_list,cross_client_observation,clarify_batch, andqueued_stop_resume. These are source-conformance checks, not live provider execution.0e0e26e0d: 439 sideload and 206 Google Play unit tests passed, with no failures, errors, or skips. Subsequent changes are base integration, instrumentation synchronization, and source-checker maintenance; the Gateway runtime and focused unit sources are unchanged.749b6c02dwithGateway turn timed out; both lost-start regressions failed on23248ea75because authoritative completion was ignored.scripts/android-lane.ps1. No physical-device installation/certification or production deployment for this PR.Screenshots
No layout change. Rendered stream and transcript behavior passed on the Standard Phone API 36 emulator.
Compatibility / risk
Client-only, with no new host routes or migrations. Unknown, absent, unsupported, or failed active-state reads remain unknown; they cannot invent completion. A host that provides no terminal or authoritative state still requires transport recovery or explicit Stop. Rollback is a revert.
Native request replay uses the existing read-only
session.events.sincesurface. No interrupt-reason fields are added to the wire. The source checker still requires every existing request contract while allowing additional methods that Android can decline with JSON-RPC method-not-found.Lineage / contributor credit
Checklist
devCHANGELOG.mdupdated