Skip to content

fix(ui-server): omit Gemini parameterless function schema - #2359

Merged
schlessera merged 7 commits into
mainfrom
fix/2356-gemini-setup-q7m2
Oct 20, 2026
Merged

schlessera merged 7 commits into
mainfrom
fix/2356-gemini-setup-q7m2

Conversation

@schlessera

@schlessera schlessera commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Closes #2356

Gemini Live declares the parameterless host_task without a parameter schema. The former additionalProperties field was rejected before setup completed. A real loopback peer now checks the parameterless declaration before acknowledging setup; the investigation example and ui-server patch changeset accompany the correction. Host authority, nonblocking scheduling, correlation and shared machine contracts remain unchanged.

The official FunctionDeclaration reference marks parameters optional and distinguishes it from parametersJsonSchema. The installed @google/genai 2.24.0 source review recorded on 2026-10-19 explicitly permits leaving parameters unset for a function with no parameters. That owned installation still matches the unchanged lockfile; no installation was repeated for the current preflight.

Current prepared candidate and local proof

  • Prepared head: d24a93c9331edbb5c86f88c775af11e75843a51c; current base main and resolved merge base: e0337896b76b45a9d47b394a122abc2378977c9a; tree: de89f11ba2ee3ccc2d63fe3c9746f4aac61a70da. Immediate parents are 572a085cb827391ff9f07f5c451c2f9302a6fc52 and e0337896b76b45a9d47b394a122abc2378977c9a. History preserves published head 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0 through normal merges, without rebasing or moving another local branch.
  • The contribution remains four files / 28 insertions / 3 deletions. Stable patch ID: 9f4b50749f34cb2691240a73149d039bfa67dfab. Gemini source SHA256 adf069df844f70ac6675e8eb0fbc78af66070a68f19501609c69fca73fa625fb, regression SHA256 65045bf17592b258f720c18aeefd82ddd643269db92ab752cceafdb6b4dd4e45 and changeset SHA256 51240af14e5b0d922e79ccb0fed8dc1dd1a828b6fb085656bfbd9b668e602297 retain their historical bytes. Investigation SHA256 is a42232e1311254e90f37715bc32f8bfb0ef7f0c9d1c88b06ad893e55f575632a: its only incoming change was the verified AgentBackend citation range 672-702 to 672-704. No schema-fix behavior or permission policy changed during refresh.
  • Fresh bun run check:pr --base origin/main --plan passed in 17.86 seconds. Its complete parsed JSON matches accepted plan SHA256 dbc44aacb800e29afd59df2ca776c60eb20e2b2d56d2b2f07b44b96b1a3a81f4: ui-server only, global false, six fast files, typecheck and pack eligibility true, packed-consumer execution false. Hosted full tests, browser, layout, captures, endurance and runtime categories remain required. Identical selection content is a fresh planning observation, not reuse of prior executed proof.
  • The one authorized fresh ordinary bun run check:pr --base origin/main passed on this exact head/base/tree from 2026-10-19T23:47:02.123431+00:00 to 2026-10-19T23:48:06.700066+00:00 in 64.58 seconds. It passed lint/leakage, environment documentation, pending changeset package references and contribution changeset gates, then 264 fast invariants / 1,796 assertions and 22 import-graph affected tests / 85 assertions, with no failures, skips or todos. Actual selection matched the fresh plan. Full raw log SHA256: 6f934cbbdfaa4d8dd0ad677bcacd3faea1c7c428c0dae0ffa0942793ae317f99. Final identity/resource receipt SHA256: 64abf17d12967d39a705ffab2d23ad39700de7f96dacf6cb044081dfa23b3c3e.
  • The import-graph feedback executed the Gemini adapter tests and inbox-dispatch app tests; it did not execute the complete Gemini/GPT-Live/host suite, strict types or packaging. The complete 91-test focused suite, schema mutation/restoration and strict typecheck receipts below remain historical on their recorded source. Source-byte identity does not make them current combined-tree execution.
  • Current toolchain identity: Bun 1.4.3, TypeScript 6.0.3 and installed SDK 2.24.0. The existing owned frozen copyfile installation, lockfile, dependency manifests and runtime binary hashes were verified before each launch. No new install or workspace build was required or performed. No provider call, paid request, separately allocated native fixture, loop device, container, Btrfs resource, browser or new capability was started for this preflight.
  • Fresh admission retained ordinary UID/GID 1000, normal HOME, zero capability sets after namespace setup, original host temporary-filesystem identity, private temporary storage/cache/maintenance ledger, empty unfiltered IPv4/IPv6 main route tables, repository output-lease handling and all offline guards. Available RAM exceeded 4 GiB and free bytes exceeded the greater of 5% and 2 GiB. Source-filesystem Btrfs inode headroom is UNKNOWN: raw statvfs/df values were 0/0 and are not a numeric capacity guarantee. Temporary-filesystem inode counts were measured; bounded exclusive own-checkout/private-temp write/read/delete probes passed and were removed. Both command namespaces drained and ledgers were empty. No outer Python-held flock surrounded repository commands.

Incoming source and proof boundaries

Main advancement since the historical 0171 qualification includes delivered Storage/host/API work and its source citation updates; finite scope headroom and observation-order fixes; SDK-before-bundle and motion proof; fixture Git auto-maintenance guards; exact-candidate integration reservations; and the newest three fixes: #2425 held-root child TMPDIR matches its child mount, #2435 preserves unit-worker diagnostic outputs and expands CI artifact upload paths, and #2447 awaits the lazy Settings devices module after opening it.

The complete latest incoming diff was reviewed. It changes the hosted worker/test and artifact boundaries, without overlapping this four-file contribution, changing provider-facing setup/history bytes, weakening guards, or changing dependency manifests/default planner/build prerequisites. The new worker diagnostic collector pins source directories and verifies exclusive copied bytes before removing the same generated untracked image; tracked references, foreign paths and original failures remain protected. These changes do not supply a new combined-tree native/browser receipt. Shared backend/harness inputs from the earlier Storage/Git advancement still require relevant append-only provider-history and complete affected runtime proof in the separately authorized qualification window.

Historical qualification on earlier candidates

The following receipts retain their original candidates, dates, tool versions and limitations. They are not proof of the new combined candidate.

  • Qualified head: 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0; base main and resolved merge base: 90a95123cfceb169bd2ecf7c213544db742eaed7; tree: e2778e2063d855f82def5c97070db0da7c04d60c. Parents are prior PR head 7799a754b624b86fc9e3b240f9e422dcf3651c17 and that delivered main. All four contribution files remain byte-identical to the prior PR head: 28 insertions / 3 deletions. backends: identify the endpoint in an intermittent Pi containment connection #1945 and ci: authored narrow grouped diagram notes exceed WebKit case deadline #2386 are delivered through test: keep worker-probed TCP listeners off the ephemeral range #2371 and test(ui-react): separate narrow callout geometry and capture #2393.
  • Fresh frozen installation used an empty private cache and --backend=copyfile, with no shared mutable dependencies or output. Actual runtime: Bun 1.4.3; installed @google/genai 2.24.0 matches this candidate's lockfile. The lockfile and package manifest remain byte-identical to the candidate; these versions are distinct from historical receipts.
  • Fresh mutation restored the original rejected parameter schema. Gemini parameterless host_task completes a schema-checking peer handshake failed at expect(...).resolves.toMatchObject because the loopback peer closed before setup completed. The provider source was then restored byte-for-byte; restored SHA256: adf069df844f70ac6675e8eb0fbc78af66070a68f19501609c69fca73fa625fb.
  • Fresh complete focused Gemini/GPT-Live/host suite on this head: 91 passed / 294 assertions, no failures or skips. Strict typecheck passed. Lint/leakage, environment documentation, pending changeset package names and contribution changeset gates passed. Lint retained seven warnings outside the four-file contribution, with zero errors.
  • The single authorized ordinary bun run check:pr --base origin/main passed on this exact head/base/tree: 264 fast invariants / 1,796 assertions and 22 import-graph affected tests / 85 assertions, with no failures or skips. It ran on 2026-10-19 from 06:52:57 to 06:54:01 UTC, taking 63.98 seconds. Actual selection matched the retained plan: ui-server only, global false, six fast-invariant files. Full raw log SHA256: c32eb0833e1d47cc8ae72a24e8cab6642ee761a49959d56b07e0d10edc3e9169; final identity receipt SHA256: cfe6747a23cf1c1cdb2d8d5fe3a12e95f727662cbdf01dc397f52a89b57a3dae.
  • Local proof retained the repository offline guards in fresh user/mount/network namespaces, ordinary UID/GID 1000 with all capability sets zero, normal HOME, private temporary storage and maintenance ledger, and empty unfiltered IPv4/IPv6 main route tables. This is ordinary local proof, not pinned browser, container or native-storage qualification. No native fixture, loop device, container or Btrfs allocation was performed.

Retained historical failures and scope

Filesystem exhaustion previously caused ENOSPC worker-probe errors and prevented an initial shell restore. The attempted restored suite was still mutated: 84 passed / 7 failed; it is not restored proof. The first historical preflight failed five invariant tests (249 passed); complete original assertion details were truncated and their cause remains UNKNOWN. A later bounded diagnostic passed 56 tests / 236 assertions. Separate later receipts passed 91 focused tests / 294 assertions on a0d72131233e5ac4d65720e6e634f0ec5c13f387, whose tree equaled 7799a754b624b86fc9e3b240f9e422dcf3651c17, and preflight passed 264 invariants / 1,796 assertions plus 22 affected tests / 85 assertions on 7799a754b624b86fc9e3b240f9e422dcf3651c17, base 685d83e22cc452e97a2c92ef7ae683f34ceb2371. Those temporary original logs are lost; tracker history remains. Neither those later passes nor this fresh qualification diagnoses or erases the five historical failures.

Historical hosted failures remain failed evidence with their original identities and scope:

  • Run 39069337278, attempt 1, unit shard 2 / job 117503766498: unchanged Pi containment tcp-host assertion expected ECONNREFUSED, received connected. Checkout 1b9203d0c6630f5e43b7ff6b4de779ae111dccf3, tree a183600290c080d9d8e1e31eb0544187b2f63dcc, parents base 0d780605fe1ea9a281cce947b1f0074f3f3e7acc and head 59eb04cbf725749d93a4d8bd3262c3ca9c18e06e. backends: identify the endpoint in an intermittent Pi containment connection #1945 owns the historical endpoint-attribution finding; its delivery does not relabel this failed receipt.
  • Run 39079593313, attempt 1, browser (2) / job 117533893225: WebKit authored narrow grouped notes light exceeded its unchanged 15-second deadline. Checkout e700f7c2f46ed5996005be8c30e07a9eefc3ec38, tree 048556cdbf4e7ce2e7d42fb721fec9833c21916d, parents base 63fde3c8fe76e754aa4524f95b23f9786f4447fe and head 8ad081da7c29f809c74c12638fb54a8bd14e2a72. ci: authored narrow grouped diagram notes exceed WebKit case deadline #2386 owns that separate browser failure.

The earlier stale-candidate aggregate and cheap-draft-only run remain recorded in the existing comments; neither is current candidate confirmation. That historical update attributed no hosted result to head 0171fd1bf538f24ba8b7c8f36d12cf42d76b60e0; it supplies no current combined-candidate confirmation.

Prior separately authorized #961 setup recheck decoded binary JSON setupComplete, establishing removal of the original parameter-schema rejection. #2358 owns the separate binary receive defect. No live call was made during this qualification.

Remaining qualification and ownership

This PR remains draft. Root owns review and the separately authorized draft publication, followed by any expensive candidate confirmation and merge window. No current combined-candidate hosted success is claimed. The main-push run associated with base e0337896b76b45a9d47b394a122abc2378977c9a is separate main evidence; its pending/reconciled status cannot substitute for this candidate's selected proof.

Before any expensive confirmation or ordinary main merge, root must acquire and maintain the exact-candidate remote integration reservation under #2197. The five-minute lease renews each minute and has a sixty-minute absolute cap. The shared confirmation command requests readiness and can merge after successful validation; it is not a planning command. Root retains the serial queue/window. Verify live base, PR metadata and actual synthetic merge parents, complete selected hosted jobs/structured receipts/checkout identities, release milestones and the matching-head squash. A successful shared squash still leaves automatic main proof to reconcile separately. No reservation, ready transition, confirmation, watch, publication or merge was performed in this preparation turn.

Complete current types, packaging, affected unit/integration/runtime, pinned browser/layout/offline/endurance and editorial proof remains pending. Historical passing results do not diagnose the five UNKNOWN invariant failures or turn the still-mutated ENOSPC 84/7 attempt into restored proof. No failure, assertion, offline guard or required category is waived.

Release commitment remains 0.44.0 on PR #2359 and #2356. The parent-held claim and assignment remain untouched. #2358 retains binary receive handling; #961 retains audio/device qualification; #114 retains reserved human listening. No permission expansion, activation, capability promotion, paid probe, package publishing or deployment is included.

@schlessera schlessera added this to the 0.44.0 milestone Oct 17, 2026
@schlessera schlessera added type: fix Something is broken and must behave the way it is documented. area: ui-server Hono app factory: turn coordinator, auth, session catalog, routes, cron. labels Oct 17, 2026
@schlessera
schlessera marked this pull request as draft October 17, 2026 20:58
@schlessera

Copy link
Copy Markdown
Owner Author

CI run 39067846576, attempt 1, passed all 14 selected product jobs on head ebb4a12def46412216a6d4acbd7cb4db89dd3bea. Its final proof job 117502052947 failed the exact candidate guard, not a product assertion:

Candidate became stale: the live PR head, readiness or base changed; request confirmation again

The recorded checkout was d9d0f4bf8f8aa5effcbe12b0db3aa2fbd7949c9d, with base 5c670c6f93842717c9a3723606ebcbd7aa52406f, head ebb4a12def46412216a6d4acbd7cb4db89dd3bea and tree f6eecb5db80a72be6f30d017015c523d524e0b42. Main advanced to 0d780605fe1ea9a281cce947b1f0074f3f3e7acc during the run through #2293, changing CI selection/retention and browser proof tooling. The aggregate correctly refused the old candidate. This failed run is retained as failed evidence and does not authorize merging.

Returned the PR to draft and rebased the unchanged schema fix onto the new main. Current candidate is 59eb04cbf725749d93a4d8bd3262c3ca9c18e06e; refreshed local preflight and a new ready-for-review confirmation are required. The older successful jobs are not claimed as executing this new combined tree. No gate or implementation assertion has been weakened.

@schlessera
schlessera force-pushed the fix/2356-gemini-setup-q7m2 branch from ebb4a12 to 59eb04c Compare October 17, 2026 20:59
@schlessera
schlessera marked this pull request as ready for review October 17, 2026 20:59
@schlessera
schlessera marked this pull request as draft October 17, 2026 21:03
@schlessera
schlessera marked this pull request as ready for review October 17, 2026 21:03
@schlessera

Copy link
Copy Markdown
Owner Author

The all-green notification on head 59eb04cbf725749d93a4d8bd3262c3ca9c18e06e did not establish candidate confirmation. Inspection of run 39069053895 / proof job 117502911568 found PR_DRAFT: true, cadence: draft, no retained proof and every product category skipped. Its green proof is cheap-draft evidence only, despite the PR now being ready/CLEAN. No merge was attempted. The earlier actual product pass remains attributed to its original head/base and failed aggregate.

Returned to draft and then requested ready-for-review again without another push, to obtain a distinct actual confirmation event. The schema source, regression test, local preflight and release milestone remain unchanged. Await complete selected current-head proof and actual job checkout identity; never infer it from the check count alone.

@schlessera
schlessera marked this pull request as draft October 17, 2026 21:15
@schlessera

Copy link
Copy Markdown
Owner Author

2026-10-17 — Natural hosted failure in #2356 / PR #2359, extending the #1945 connection-oracle symptom to the tcp-host assertion. No cause or containment escape is established.

Run 39069337278, attempt 1, failed unit shard 2, job 117503766498. Actual resource receipt checkout: 1b9203d0c6630f5e43b7ff6b4de779ae111dccf3, tree a183600290c080d9d8e1e31eb0544187b2f63dcc, parents base 0d780605fe1ea9a281cce947b1f0074f3f3e7acc and PR head 59eb04cbf725749d93a4d8bd3262c3ca9c18e06e.

pi autonomous containment > a hostile staged share cannot read secrets, reach the network or sockets, or write the brain; inference, staging and escalation work failed in 3674.16 ms at tests/autonomous-containment.test.ts:58, message host TCP listener unreachable: expected ECONNREFUSED, received connected. The earlier all-zero six-listener counter assertion at line 56 passed. The subsequent tcp-upstream and later security assertions were not reached in that case. This worker's result: 779 pass / 1 fail / 4927 assertions across 49 files; the separate Claude hostile case and both refusal controls passed. This does not turn the failed Pi case into coverage for later assertions.

The containment test, attack fixture and Pi worker-entry source are unchanged between the PR and its base; the contribution changes only Gemini's declaration, its regression test, the investigation example and a changeset. No observer, port-binding mutation or weakened offline guard was introduced. The failed receipt does not identify local/peer tuples, endpoint namespace or an accepted listener, so it does not choose between local relay collision, self-connection or another cause. In particular, zero observed outer accepts alone is not proof of which endpoint was reached.

No retry was requested. The PR returned to draft and remains unmerged; it cannot satisfy its complete selected hosted-proof requirement with this failure. Resume requires #1945's endpoint attribution and a validated correction or an explicit applicable maintainer ruling; no exception is inferred. Keep the original failed identities and existing needs: repro scope.

@schlessera

Copy link
Copy Markdown
Owner Author

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.

@schlessera
schlessera force-pushed the fix/2356-gemini-setup-q7m2 branch from 59eb04c to 8ad081d Compare October 17, 2026 23:33
@schlessera
schlessera marked this pull request as ready for review October 17, 2026 23:35
@schlessera
schlessera marked this pull request as draft October 17, 2026 23:53
@schlessera

Copy link
Copy Markdown
Owner Author

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

Copy link
Copy Markdown
Owner Author

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.

@schlessera
schlessera marked this pull request as ready for review October 19, 2026 23:51
@schlessera
schlessera merged commit 6a73a59 into main Oct 20, 2026
30 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui-server Hono app factory: turn coordinator, auth, session catalog, routes, cron. type: fix Something is broken and must behave the way it is documented.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant