Repository navigation
ui-server: Gemini Live setup rejects the function parameter schema #2356
Description
Out of scope
- Changing the selected model/provider, weakening host permission or input-attribution checks, adding paid CI, or claiming real-device qualification.
Context
During the separately authorized #961 live prerequisite probes on 2026-10-17, current main 2a0b77f675da2f01c32adba3f4920650a5ee09fa failed to open Gemini Live twice. The shipped createGeminiConversationProvider used the configured gemini-3.8-live Developer API v1beta BidiGenerateContent endpoint. No audio, backend call or tool execution was submitted.
The socket closed with code 1007 before setupComplete. Sanitized provider reason:
Invalid JSON payload received. Unknown name "additionalProperties" at 'setup.tools[0].function_declarations[0].parameters':
The setup builder sends parameters: { type: "OBJECT", properties: {}, additionalProperties: false } in the socket-open handler (packages/ui-server/src/voice/gemini-conversation.ts:116-128). The adapter correctly fails closed; its current keyless transport proof did not expose this live schema rejection. This blocks Gemini's #961 matrix before the first audio sample. Model metadata access returned HTTP 200, which alone did not prove a valid Live setup.
Related qualification: #961. Outcome belongs to epic #54.
Scope
- Correct the fixed function-declaration schema against the selected endpoint's current official schema.
- Preserve nonblocking host delegation and the rule that vendor arguments are never execution authority.
- Add a meaningful keyless regression that rejects the observed invalid setup shape and fails on the current implementation.
Acceptance criteria
- The selected Gemini Live setup does not include schema fields rejected by the endpoint's function-parameter Schema, verified against current primary documentation.
- A keyless regression fails on the current invalid setup for the intended schema assertion and passes after the correction; include failing/restored proof.
- Existing Gemini adapter lifecycle, bounded queues, correlation, cancellation and host-authority tests pass.
- Record the corrected candidate for a separately authorized ui: qualify both live conversation engines on real devices before activation #961 live setup recheck. A passing keyless test is not live connectivity or device proof.
Verification
Run the focused Gemini adapter tests through the repository test runner, typecheck/lint as applicable, and bun run check:pr --base origin/main before ready. CI remains keyless and offline. Retain the actual pre-fix live close code/reason above; no credentials or raw provider frames belong in public evidence.
Contract impact
Expected internal provider-wire correction only; no common CLI/MCP/WebSocket/schema contract change or permission expansion. Reassess if implementation changes a public machine surface.
2026-10-17 implementation candidate: ebb4a12def46412216a6d4acbd7cb4db89dd3bea omits parameters for the parameterless host_task, as permitted by the official FunctionDeclaration reference and installed SDK. A real loopback schema-checking handshake regression fails on the original setup at expect(...).resolves and passes after the correction. All 91 focused adapter/host tests pass. The separately authorized live recheck decoded the top-level setupComplete key from the endpoint's binary JSON response, establishing that this parameter-schema rejection is gone. Complete adapter readiness still fails on its string-only receive guard; that distinct defect is filed as #2358. No audio, backend execution, safe attribution or real-device qualification is claimed. #2356 remains scoped to the parameter schema correction and regression proof.
CI-blocked handoff — 2026-10-17
Draft PR #2359 preserves candidate 59eb04cbf725749d93a4d8bd3262c3ca9c18e06e. The scoped schema fix, failing-first loopback regression, 91 focused tests, patch changeset and refreshed local preflight are complete. Live setupComplete establishes removal of the original schema rejection; distinct binary receive handling remains #2358.
Historical blocker #1945 is delivered by #2371; the failed receipt below retains its original identity.
Selected hosted unit shard 2 in run 39069337278 / job 117503766498 failed the unchanged Pi containment tcp-host assertion: expected ECONNREFUSED, received connected. The earlier outer-listener counters were zero; endpoint identity and cause remain unknown. Exact source/run evidence is folded into #1945. No retry, weakened assertion or merge is authorized by the passing sibling checks. Other unfinished jobs retain their actual status, not an inferred pass.
Resume after endpoint attribution and a validated correction or explicit applicable maintainer ruling, then request complete confirmation on the actual live head/base and verify every selected job before matching-head merge. The claim issue-2356-q7m2 is released; code and PR remain available. Keep the release milestone 0.44.0 and the fully scoped agent-ready plus blocked labels.
2026-10-18 investigation update: the separately authorized #1945 follow-up used hosted-version Bun 1.4.2, captured both forbidden targets in eight finite natural Pi samples (all 552 assertions passed), and reproduced the exact tcp-host assertion under a controlled self-connection fault with socket inode/local-peer/namespace evidence. The original hosted endpoint remains unknown and no correction or exception was established. The final byte-restored full control had a distinct Claude refusal child exit 137, filed as #2367; it is not green. Keep the #1945 blocker and draft #2359 unchanged. Detailed attributed results are folded into #1945; no retry-for-green, capability activation or completed merge is inferred.
Resumed candidate — 2026-10-18
The maintainer explicitly resumed #2356 after #1945 closed through #2371 (82a64a13a08c44f2daef425d1a9df2c10840ea8e). Claim issue-2356-q7m2 owns the existing branch/PR again. Current candidate 8ad081da7c29f809c74c12638fb54a8bd14e2a72 is based on main 63fde3c8fe76e754aa4524f95b23f9786f4447fe. The scoped Gemini source and regression test are byte-identical across the rebase; the new base's containment/native/CI inputs require fresh local and hosted proof. The earlier blocked-handoff sections are historical. Keep the issue open until #2359 completes its actual current-candidate proof and merge; #2358 remains separate binary-frame work. No additional paid probe or capability promotion is performed. Release commitment remains 0.44.0, confirmed against published 0.43.1.
Current CI-blocked handoff — 2026-10-18
Blocked by #2386
Run 39079593313, attempt 1, failed browser (2), job 117533893225: WebKit authored narrow grouped notes light exceeded the unchanged 15-second deadline. The other 14 selected product jobs passed, including all unit shards; the aggregate failed. Actual checkout e700f7c has parents base 63fde3c and head 8ad081d, tree 048556cdbf4e7ce2e7d42fb721fec9833c21916d. This unchanged diagram case is outside the Gemini schema correction; #2386 owns attribution and correction. #1945 remains resolved.
PR #2359 is draft and unmerged. Claim issue-2356-q7m2 is released, preserving the branch and scoped implementation. Resume after #2386 delivers a validated correction or an explicit applicable maintainer ruling, then complete fresh selected proof on the actual candidate and verify the matching-head merge. No unchanged retry or gate weakening is requested. Release commitment remains 0.44.0; the source fix, failing-first regression and local preflight remain recorded.
Current campaign candidate — 2026-10-18
This supersedes the historical blocked handoffs above: #1945 and #2386 are delivered, and claim 044-gemini-20261018 owns qualification through the campaign coordinator. Draft PR #2359 now preserves head 7799a754b624b86fc9e3b240f9e422dcf3651c17, based on main 685d83e22cc452e97a2c92ef7ae683f34ceb2371, tree 8888874b137eecf39d1da85813917130bc340cce. The prior head remains in ancestry; the contribution remains the same four files.
Fresh mutation proof fails the named loopback handshake assertion on the original rejected schema, with byte-for-byte restoration. The restored focused suite passed 91 tests / 294 assertions on an identical tree. Exact-head cheap preflight passed lint/leakage/environment/changeset checks, 264 invariants / 1,796 assertions and 22 affected tests / 85 assertions. Current official documentation and installed @google/genai 2.21.0 support omission for this parameterless function.
Retain the qualification failures described in the PR: storage exhaustion caused ENOSPC, the initial attempted restored suite was still mutated, and an earlier preflight failed five invariant tests whose complete assertions were truncated. The separate passing exact-candidate preflight does not establish that earlier failure's cause. The coordinator must assess this retained failure before granting the hosted window.
No new live call, ready transition, hosted confirmation or merge occurred. Next action: coordinator reviews the exact candidate and receipts, then grants one explicit ready-candidate proof/merge window if accepted. Complete selected hosted qualification and matching-head merge remain required. #2358, #961 and #114 retain their separate scope and reservations. Milestone remains 0.44.0.
Activity
schlessera commentedon Oct 17, 2026
Claim:
issue-2356-q7m2, branchfix/2356-gemini-setup-q7m2. Working the explicitly selected #2356 in an isolated checkout: verify the selected endpoint schema, prove the setup rejection with a keyless failing-first regression, correct the provider wire shape, then complete PR proof and merge. The existing #961 authorization covers a bounded setup recheck; device/audio qualification remains separate.schlessera commentedon Oct 17, 2026
2026-10-18 — Blocker #1945 is delivered by merged PR #2371 /
82a64a13a08c44f2daef425d1a9df2c10840ea8e, with exact qualified parent/tree and fetched-main ancestry verified. Removing the satisfied blocked label. PR #2359 still needs its own fresh local/hosted candidate qualification on the delivered source; its historical failed run remains non-green. This reconciliation does not take over that implementation.schlessera commentedon Oct 17, 2026
Resumed claim
issue-2356-q7m2on branchfix/2356-gemini-setup-q7m2, under the explicit maintainer request to finish #2356. #1945 is closed with delivered #2371 (82a64a13a08c44f2daef425d1a9df2c10840ea8e); its historical failed receipt remains unchanged. Candidate8ad081da7c29f809c74c12638fb54a8bd14e2a72rebases the schema fix onto current main63fde3c8fe76e754aa4524f95b23f9786f4447fe, including the corrected containment fixture, native maintenance inputs and refreshed browser weights. The source/proof changes require fresh local preflight and complete selected hosted confirmation; no prior run is relabeled green on this new combined tree. The PR stays draft until preflight finishes. No further paid probe is needed.schlessera commentedon Oct 17, 2026
Current CI-blocked handoff — 2026-10-18
Blocked by #2386
Run 39079593313, attempt 1, failed browser (2), job 117533893225: WebKit authored narrow grouped notes light exceeded the unchanged 15-second deadline. The other 14 selected product jobs passed, including all unit shards; the aggregate failed. Actual checkout e700f7c has parents base 63fde3c and head 8ad081d, tree 048556cdbf4e7ce2e7d42fb721fec9833c21916d. This unchanged diagram case is outside the Gemini schema correction; #2386 owns attribution and correction. #1945 remains resolved.
PR #2359 is draft and unmerged. Claim issue-2356-q7m2 is released, preserving the branch and scoped implementation. Resume after #2386 delivers a validated correction or an explicit applicable maintainer ruling, then complete fresh selected proof on the actual candidate and verify the matching-head merge. No unchanged retry or gate weakening is requested. Release commitment remains 0.44.0; the source fix, failing-first regression and local preflight remain recorded.
schlessera commentedon Oct 18, 2026
Unblocked: #2386 is closed, so
scripts/sync-project.tsis removing theblockedlabel.schlessera commentedon Oct 18, 2026
0.44.0 campaign claim
044-gemini-20261018: serialized ownership readback confirms this issue was unassigned. The prior owner has completed its run; preserved implementation and historical receipts remain attributed. GPT-6.1-Sol worker owns readiness, scoped implementation/qualification onfix/2356-gemini-setup-q7m2(or a recorded unique branch if needed). The campaign coordinator serializes final candidate confirmation and merge windows; this claim does not authorize concurrent merges or bypass any existing proof requirement.schlessera commentedon Oct 18, 2026
Campaign claim
044-gemini-20261018: custody is cleared and the sole issue assignment was read back before scoped work. Implementation qualification uses dedicated branchas/qualify-issue-2356; no other checkout or branch was moved. Existing draft PR #2359 remains the delivery vehicle.Both historical blockers are delivered: #1945 through #2371 and #2386 through #2393. The candidate preserves the existing schema fix, regression, investigation correction and patch changeset, integrated with main
685d83e22cc452e97a2c92ef7ae683f34ceb2371. Current local head is7799a754b624b86fc9e3b240f9e422dcf3651c17, tree8888874b137eecf39d1da85813917130bc340cce. The old PR head is retained in ancestry so publication can be a normal fast-forward.Fresh mutation proof restored the rejected parameter schema: the named parameterless handshake test failed
expect(...).resolves.toMatchObjectbecause setup closed before completion. The provider file was restored byte-for-byte. The corrected focused Gemini/GPT-Live/host suite passed 91 tests / 294 assertions. Current official FunctionDeclaration documentation marks parameters optional; installed @google/genai 2.21.0 explicitly permits leaving it unset for functions with no parameters.Qualification also retains failures: storage exhaustion caused ENOSPC worker-probe errors and prevented the first shell restore command, so the first attempted restored suite was still mutated and is not restored proof (84 pass / 7 fail). The file was subsequently restored and its clean diff verified. The first cheap preflight failed five invariant tests (249 pass / 5 fail); complete original assertion details were not retained in this worker's truncated output, so no causal diagnosis is claimed. A bounded diagnostic of the named API/principal files passed 56 tests / 236 assertions. A fresh exact-candidate preflight is being retained separately. These passing observations do not erase the failures.
The campaign coordinator owns the future ready-candidate confirmation and merge window. No ready transition, expensive hosted confirmation, paid call, deployment or merge is requested by this update. #2358 remains separate binary receive work; #961 and #114 retain provider/device and reserved listening qualification.
schlessera commentedon Oct 19, 2026
2026-10-19 — Claim
044-gemini-20261018remains parent-held. Readback confirmed sole existing assignment, draft/open PR #2359 and unchanged remote head7799a754b624b86fc9e3b240f9e422dcf3651c17before edits.Local integration candidate is
0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0, treee2778e2063d855f82def5c97070db0da7c04d60c, based on delivered main90a95123cfceb169bd2ecf7c213544db742eaed7(#2374). Integration preserves history and all four contribution files byte-identically. The contribution remains 28 insertions / 3 deletions;git diff origin/main --checkpasses. This candidate has not been pushed.Fresh lightweight receipt with the existing installation and Bun 1.4.2:
bun run test packages/ui-server/tests/gemini-conversation.test.ts -t 'Gemini parameterless host_task completes a schema-checking peer handshake'passes 1 test / 1 assertion, with 19 intentionally filtered tests. This loopback handshake does not run a native worker and does not establish complete adapter or preflight qualification.Earlier 91-test focused and 264-invariant / 22-affected preflight results remain attributed to their recorded October 18 source. Their temporary log files are no longer present. The original five invariant failures still have no established cause; neither newer source nor a passing lightweight test diagnoses them.
Resource hold remains: another campaign worker owns installation and native runtime/loop1790 access. No install, native runtime, full preflight, ready confirmation, hosted request, merge or live paid call was performed in this continuation. Next required resources are an explicit installation/native slot release for dependency verification and full focused/preflight qualification, followed by the parent's separately granted hosted proof/merge window. No existing resource reservation or historical passing result is treated as current proof.
schlessera commentedon Oct 19, 2026
Machine handoff — 2026-10-19
Resource-limited wrap-up; implementation custody returns to campaign coordinator claim
044-gemini-20261018. The parent-held shared-account assignment is preserved: this worker does not own an independently releasable assignment.Recovery branch:
as/qualify-issue-2356, committed head0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0, treee2778e2063d855f82def5c97070db0da7c04d60c, integrated base90a95123cfceb169bd2ecf7c213544db742eaed7. Main's only advance since the previous candidate is delivered #2374. All four contribution files are byte-identical to prior PR head7799a754b624b86fc9e3b240f9e422dcf3651c17; the contribution remains 28 insertions / 3 deletions. The recovery branch is separate from PR #2359's existing source branchfix/2356-gemini-setup-q7m2, which remains at that previous head. PR #2359 stays draft.Fresh receipts on recovery head:
git diff origin/main --checkpasses; the named loopback parameterless-handshake test passes 1 test / 1 assertion under installed Bun 1.4.2, with 19 intentionally filtered tests.bun run check:pr --base origin/main --plancompletes as planning only, not executed proof; it selects the same four-file ui-server contribution and requires complete hosted product categories. No native worker, installation or broad runtime/build ran during this continuation.Historical receipts retain their identities: mutation of the rejected parameter schema fails the intended handshake assertion, followed by byte-for-byte restoration. The 91-test / 294-assertion restored suite ran on
a0d72131233e5ac4d65720e6e634f0ec5c13f387, with tree equal to7799a754b624b86fc9e3b240f9e422dcf3651c17. Exact-head preflight on7799a754b624b86fc9e3b240f9e422dcf3651c17, base685d83e22cc452e97a2c92ef7ae683f34ceb2371, passed 264 invariants / 1,796 assertions and 22 affected tests / 85 assertions. Full pending changeset planning assembled a lockstep minor without a major. Those temporary raw logs are no longer present; tracker evidence remains. None of these older receipts is proof of the new combined tree.Retained failures: ENOSPC prevented an initial restore shell command and caused worker-probe errors; that attempted restored suite still contained the mutation (84 pass / 7 fail). A separate first preflight failed five invariant tests (249 pass); its complete assertion output was truncated and its cause remains unresolved. A bounded API/principal diagnostic later passed 56 tests / 236 assertions, and the separately recorded exact-head preflight passed. Later success does not establish the earlier failures' cause.
Next machine:
as/qualify-issue-2356, and verify the exact recovery SHA/tree above in a dedicated checkout. Re-read issue/PR comments and current main before mutations.Acceptance remaining: current integrated candidate qualification and delivery. #2358 retains binary receive handling, #961 real audio/device qualification and #114 reserved human listening. No paid calls, capability activation, deployment or publishing is authorized or performed.
All commands from this continuation have completed. No worker-owned test/build/install/watch process remains. Tracked checkout is clean; committed recovery work is preserved remotely. No worktree or artifact was deleted.
schlessera commentedon Oct 19, 2026
Campaign coordinator releases its uncontested claim
044-gemini-20261018for the requested different-machine handoff. The worker has finished bounded wrap-up; no owned task process remains. Independently verified remoteas/qualify-issue-2356at0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0. Detailed receipts, remaining acceptance criteria and recovery instructions are in the machine handoff. This is source preservation, not current complete qualification or delivery. Existing PRs remain draft; no merge or new confirmation is requested. A successor must re-read live ownership, claim the issue, fetch this preservation branch and verify its SHA before resuming. The shared-account assignment is removed only for this coordinator-owned claim.schlessera commentedon Oct 19, 2026
2026-10-19 — Successor campaign claim
release044-2356-r2-20261019, branchfix/2356-qualification-release044-r2. The prior coordinator explicitly released044-gemini-20261018; live readback found the issue unassigned before this serialized claim. The remotely preserved candidate is0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0, integrated with main90a95123cfceb169bd2ecf7c213544db742eaed7. Existing draft PR #2359 remains the delivery vehicle and its source branch stays unchanged until fresh local qualification succeeds.The successor will use an isolated checkout and owned dependency installation, assess the recorded unresolved failures, and retain complete focused/preflight output with actual source identities. The installation/local feedback slot is allocated; no native loop/container allocation, paid provider probe, ready transition, hosted confirmation or merge is included in this preparation window. Historical passing observations do not diagnose or erase the five unexplained invariant failures. The campaign coordinator retains final confirmation and merge custody; #2358, #961 and #114 retain their separate scope.