Skip to content

fix(ai): bound Summarizer availability probes - #88

Open
StefanSa wants to merge 1 commit into
antoinevastel:masterfrom
StefanSa:fix/summarizer-availability-timeout
Open

StefanSa wants to merge 1 commit into
antoinevastel:masterfrom
StefanSa:fix/summarizer-availability-timeout

Conversation

@StefanSa

Copy link
Copy Markdown

Some Chromium-based browsers expose the Summarizer API while
Summarizer.availability() can remain pending indefinitely.

Because the AI signal participates in the aggregate fingerprint collection,
one unresolved availability probe can block the complete fingerprint forever.

This was reproduced with Microsoft Edge 154, where the API is exposed but
availability() did not settle. The same general failure class previously
affected Opera GX (#67).

This change bounds both Summarizer availability probes to 2.5 seconds and
falls back to the existing ERROR sentinel when a probe does not settle.

Normal resolved values and rejection handling remain unchanged, as does the
existing Opera exclusion.

Tests cover absent API, normal resolution/rejection, either or both probes
remaining pending, bounded completion, and existing Opera behavior.

Validation:

  • Edge 154: PASS after fix
  • Chrome 154: PASS
  • Firefox 157: PASS
  • Production challenge flow: one successful submit, valid challenge cookie,
    and no challenge loop

@buixor

buixor commented Oct 2, 2026

Copy link
Copy Markdown

I can confirm the issue on google-chrome 154.0.8037.57-1 when started on a new user profile. Summarizer.availability() never settles on a Chrome profile that hasn't already resolved its on-device model state.

@l4rm4nd

l4rm4nd commented Oct 13, 2026

Copy link
Copy Markdown

Any updates on this?

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants