Skip to content

ui-server: Gemini Live setup rejects the function parameter schema #2356

Closed

Description

@schlessera

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

  1. added
    type: fixSomething is broken and must behave the way it is documented.
    area: ui-serverHono app factory: turn coordinator, auth, session catalog, routes, cron.
    priority: p2Wanted, not scheduled. Pulled in when a milestone has room.
    agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.
    on Oct 17, 2026
  2. self-assigned this
    on Oct 17, 2026
  3. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Claim: issue-2356-q7m2, branch fix/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.

  4. added this to the 0.44.0 milestone on Oct 17, 2026
  5. added
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 17, 2026
  6. removed their assignment
    on Oct 17, 2026
  7. removed
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 17, 2026
  8. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    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.

  9. self-assigned this
    on Oct 17, 2026
  10. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    Resumed claim issue-2356-q7m2 on branch fix/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. Candidate 8ad081da7c29f809c74c12638fb54a8bd14e2a72 rebases the schema fix onto current main 63fde3c8fe76e754aa4524f95b23f9786f4447fe, 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.

  11. added
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 17, 2026
  12. removed their assignment
    on Oct 17, 2026
  13. schlessera commented on Oct 17, 2026

    @schlessera
    OwnerAuthor

    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.

  14. schlessera commented on Oct 18, 2026

    @schlessera
    OwnerAuthor

    Unblocked: #2386 is closed, so scripts/sync-project.ts is removing the blocked label.

  15. removed
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 18, 2026
  16. self-assigned this
    on Oct 18, 2026
  17. schlessera commented on Oct 18, 2026

    @schlessera
    OwnerAuthor

    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 on fix/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.

  18. schlessera commented on Oct 18, 2026

    @schlessera
    OwnerAuthor

    Campaign claim 044-gemini-20261018: custody is cleared and the sole issue assignment was read back before scoped work. Implementation qualification uses dedicated branch as/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 is 7799a754b624b86fc9e3b240f9e422dcf3651c17, tree 8888874b137eecf39d1da85813917130bc340cce. 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.toMatchObject because 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.

  19. schlessera commented on Oct 19, 2026

    @schlessera
    OwnerAuthor

    2026-10-19 — Claim 044-gemini-20261018 remains parent-held. Readback confirmed sole existing assignment, draft/open PR #2359 and unchanged remote head 7799a754b624b86fc9e3b240f9e422dcf3651c17 before edits.

    Local integration candidate is 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0, tree e2778e2063d855f82def5c97070db0da7c04d60c, based on delivered main 90a95123cfceb169bd2ecf7c213544db742eaed7 (#2374). Integration preserves history and all four contribution files byte-identically. The contribution remains 28 insertions / 3 deletions; git diff origin/main --check passes. 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.

  20. schlessera commented on Oct 19, 2026

    @schlessera
    OwnerAuthor

    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 head 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0, tree e2778e2063d855f82def5c97070db0da7c04d60c, integrated base 90a95123cfceb169bd2ecf7c213544db742eaed7. Main's only advance since the previous candidate is delivered #2374. All four contribution files are byte-identical to prior PR head 7799a754b624b86fc9e3b240f9e422dcf3651c17; the contribution remains 28 insertions / 3 deletions. The recovery branch is separate from PR #2359's existing source branch fix/2356-gemini-setup-q7m2, which remains at that previous head. PR #2359 stays draft.

    Fresh receipts on recovery head: git diff origin/main --check passes; 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 --plan completes 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 to 7799a754b624b86fc9e3b240f9e422dcf3651c17. Exact-head preflight on 7799a754b624b86fc9e3b240f9e422dcf3651c17, base 685d83e22cc452e97a2c92ef7ae683f34ceb2371, 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:

    1. Coordinate sole custody with the parent, fetch 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.
    2. Obtain a released installation/native-runtime resource slot. Verify or create an owned frozen dependency installation following repository guidance; preserve the native fixture and all offline guards. No install or native allocation is authorized during this wrap-up.
    3. Assess the unresolved historical preflight failures; run and retain complete focused Gemini/GPT-Live/host proof, required cheap preflight and applicable types on the actual integrated candidate. Preserve any failures with complete output. If main changes, attribute its impact and qualify the resulting candidate honestly.
    4. After successful local qualification, re-read PR state and publish to the existing PR source branch with a normal fast-forward if identities still permit; do not open a replacement PR or overwrite another owner. Keep milestone 0.44.0.
    5. Parent alone grants the ready-confirmation/merge window. Complete every selected hosted category and exact head/base/checkout/aggregate validation before matching-head merge. No current complete hosted success is claimed.

    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.

  21. schlessera commented on Oct 19, 2026

    @schlessera
    OwnerAuthor

    Campaign coordinator releases its uncontested claim 044-gemini-20261018 for the requested different-machine handoff. The worker has finished bounded wrap-up; no owned task process remains. Independently verified remote as/qualify-issue-2356 at 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0. 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.

  22. schlessera commented on Oct 19, 2026

    @schlessera
    OwnerAuthor

    2026-10-19 — Successor campaign claim release044-2356-r2-20261019, branch fix/2356-qualification-release044-r2. The prior coordinator explicitly released 044-gemini-20261018; live readback found the issue unassigned before this serialized claim. The remotely preserved candidate is 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0, integrated with main 90a95123cfceb169bd2ecf7c213544db742eaed7. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.area: ui-serverHono app factory: turn coordinator, auth, session catalog, routes, cron.priority: p2Wanted, not scheduled. Pulled in when a milestone has room.type: fixSomething is broken and must behave the way it is documented.

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions