@pyric/cli 0.1.0-alpha.30.2 → 0.1.0-alpha.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1327) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +107 -40
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +107 -40
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/assurance/capabilities.d.ts.map +1 -1
  6. package/dist/assurance/capabilities.js +12 -14
  7. package/dist/assurance/capabilities.js.map +1 -1
  8. package/dist/bounded-request.d.ts +27 -5
  9. package/dist/bounded-request.d.ts.map +1 -1
  10. package/dist/bounded-request.js +48 -4
  11. package/dist/bounded-request.js.map +1 -1
  12. package/dist/bridge/client/bridge-url.d.ts +5 -1
  13. package/dist/bridge/client/bridge-url.d.ts.map +1 -1
  14. package/dist/bridge/client/bridge-url.js +5 -1
  15. package/dist/bridge/client/bridge-url.js.map +1 -1
  16. package/dist/bridge/client/bridge.d.ts +9 -3
  17. package/dist/bridge/client/bridge.d.ts.map +1 -1
  18. package/dist/bridge/client/bridge.js +17 -3
  19. package/dist/bridge/client/bridge.js.map +1 -1
  20. package/dist/bridge/frame-output.d.ts.map +1 -1
  21. package/dist/bridge/frame-output.js +46 -0
  22. package/dist/bridge/frame-output.js.map +1 -1
  23. package/dist/bridge/protocol.d.ts +10 -0
  24. package/dist/bridge/protocol.d.ts.map +1 -1
  25. package/dist/bridge/protocol.js +10 -0
  26. package/dist/bridge/protocol.js.map +1 -1
  27. package/dist/bridge/server/in-process.d.ts +16 -7
  28. package/dist/bridge/server/in-process.d.ts.map +1 -1
  29. package/dist/bridge/server/in-process.js +51 -17
  30. package/dist/bridge/server/in-process.js.map +1 -1
  31. package/dist/bridge/server/peer.d.ts +8 -0
  32. package/dist/bridge/server/peer.d.ts.map +1 -1
  33. package/dist/bridge/server/peer.js +10 -0
  34. package/dist/bridge/server/peer.js.map +1 -1
  35. package/dist/bridge/server/standalone.d.ts +7 -2
  36. package/dist/bridge/server/standalone.d.ts.map +1 -1
  37. package/dist/bridge/server/standalone.js +27 -99
  38. package/dist/bridge/server/standalone.js.map +1 -1
  39. package/dist/bridge/surface/arguments/firestore.d.ts +6 -6
  40. package/dist/bridge/surface/arguments/sandbox.d.ts +0 -47
  41. package/dist/bridge/surface/arguments/sandbox.d.ts.map +1 -1
  42. package/dist/bridge/surface/arguments/sandbox.js +2 -59
  43. package/dist/bridge/surface/arguments/sandbox.js.map +1 -1
  44. package/dist/bridge/surface/arguments/seed.d.ts +61 -0
  45. package/dist/bridge/surface/arguments/seed.d.ts.map +1 -0
  46. package/dist/bridge/surface/arguments/seed.js +67 -0
  47. package/dist/bridge/surface/arguments/seed.js.map +1 -0
  48. package/dist/bridge/surface/arguments/storage.d.ts +2 -2
  49. package/dist/bridge/surface/context.d.ts +5 -10
  50. package/dist/bridge/surface/context.d.ts.map +1 -1
  51. package/dist/bridge/surface/context.js +11 -23
  52. package/dist/bridge/surface/context.js.map +1 -1
  53. package/dist/bridge/surface/database-instance-catalog.d.ts +0 -3
  54. package/dist/bridge/surface/database-instance-catalog.d.ts.map +1 -1
  55. package/dist/bridge/surface/database-instance-catalog.js +4 -27
  56. package/dist/bridge/surface/database-instance-catalog.js.map +1 -1
  57. package/dist/bridge/surface/database-instance-project.d.ts +5 -0
  58. package/dist/bridge/surface/database-instance-project.d.ts.map +1 -0
  59. package/dist/bridge/surface/database-instance-project.js +32 -0
  60. package/dist/bridge/surface/database-instance-project.js.map +1 -0
  61. package/dist/bridge/surface/database-instance.d.ts +3 -3
  62. package/dist/bridge/surface/database-instance.d.ts.map +1 -1
  63. package/dist/bridge/surface/database-instance.js +1 -2
  64. package/dist/bridge/surface/database-instance.js.map +1 -1
  65. package/dist/bridge/surface/functions-runtime.d.ts +2 -2
  66. package/dist/bridge/surface/functions-runtime.js +5 -5
  67. package/dist/bridge/surface/functions-runtime.js.map +1 -1
  68. package/dist/bridge/surface/held-identity.d.ts +4 -4
  69. package/dist/bridge/surface/held-identity.d.ts.map +1 -1
  70. package/dist/bridge/surface/held-identity.js.map +1 -1
  71. package/dist/bridge/surface/manifest.sandbox.generated.d.ts +3 -0
  72. package/dist/bridge/surface/manifest.sandbox.generated.d.ts.map +1 -0
  73. package/dist/bridge/surface/manifest.sandbox.generated.js +135 -0
  74. package/dist/bridge/surface/manifest.sandbox.generated.js.map +1 -0
  75. package/dist/bridge/surface/method-types.d.ts +48 -7
  76. package/dist/bridge/surface/method-types.d.ts.map +1 -1
  77. package/dist/bridge/surface/method-types.js +15 -0
  78. package/dist/bridge/surface/method-types.js.map +1 -1
  79. package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts +2 -1
  80. package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts.map +1 -1
  81. package/dist/bridge/surface/methods/ai_logic/clearScripts.js +2 -1
  82. package/dist/bridge/surface/methods/ai_logic/clearScripts.js.map +1 -1
  83. package/dist/bridge/surface/methods/ai_logic/script.d.ts +2 -1
  84. package/dist/bridge/surface/methods/ai_logic/script.d.ts.map +1 -1
  85. package/dist/bridge/surface/methods/ai_logic/script.js +2 -1
  86. package/dist/bridge/surface/methods/ai_logic/script.js.map +1 -1
  87. package/dist/bridge/surface/methods/ai_logic/scripts.d.ts +2 -1
  88. package/dist/bridge/surface/methods/ai_logic/scripts.d.ts.map +1 -1
  89. package/dist/bridge/surface/methods/ai_logic/scripts.js +2 -1
  90. package/dist/bridge/surface/methods/ai_logic/scripts.js.map +1 -1
  91. package/dist/bridge/surface/methods/ai_logic/status.d.ts +2 -1
  92. package/dist/bridge/surface/methods/ai_logic/status.d.ts.map +1 -1
  93. package/dist/bridge/surface/methods/ai_logic/status.js +1 -0
  94. package/dist/bridge/surface/methods/ai_logic/status.js.map +1 -1
  95. package/dist/bridge/surface/methods/assurance/attach.d.ts +1 -0
  96. package/dist/bridge/surface/methods/assurance/attach.d.ts.map +1 -1
  97. package/dist/bridge/surface/methods/assurance/attach.js +1 -0
  98. package/dist/bridge/surface/methods/assurance/attach.js.map +1 -1
  99. package/dist/bridge/surface/methods/assurance/canIUse.d.ts +1 -0
  100. package/dist/bridge/surface/methods/assurance/canIUse.d.ts.map +1 -1
  101. package/dist/bridge/surface/methods/assurance/canIUse.js +1 -0
  102. package/dist/bridge/surface/methods/assurance/canIUse.js.map +1 -1
  103. package/dist/bridge/surface/methods/assurance/define.d.ts +1 -0
  104. package/dist/bridge/surface/methods/assurance/define.d.ts.map +1 -1
  105. package/dist/bridge/surface/methods/assurance/define.js +1 -0
  106. package/dist/bridge/surface/methods/assurance/define.js.map +1 -1
  107. package/dist/bridge/surface/methods/assurance/export.d.ts +1 -0
  108. package/dist/bridge/surface/methods/assurance/export.d.ts.map +1 -1
  109. package/dist/bridge/surface/methods/assurance/export.js +1 -0
  110. package/dist/bridge/surface/methods/assurance/export.js.map +1 -1
  111. package/dist/bridge/surface/methods/assurance/inspect.d.ts +1 -0
  112. package/dist/bridge/surface/methods/assurance/inspect.d.ts.map +1 -1
  113. package/dist/bridge/surface/methods/assurance/inspect.js +1 -0
  114. package/dist/bridge/surface/methods/assurance/inspect.js.map +1 -1
  115. package/dist/bridge/surface/methods/assurance/map.d.ts +1 -0
  116. package/dist/bridge/surface/methods/assurance/map.d.ts.map +1 -1
  117. package/dist/bridge/surface/methods/assurance/map.js +1 -0
  118. package/dist/bridge/surface/methods/assurance/map.js.map +1 -1
  119. package/dist/bridge/surface/methods/assurance/minimize.d.ts +1 -0
  120. package/dist/bridge/surface/methods/assurance/minimize.d.ts.map +1 -1
  121. package/dist/bridge/surface/methods/assurance/minimize.js +1 -0
  122. package/dist/bridge/surface/methods/assurance/minimize.js.map +1 -1
  123. package/dist/bridge/surface/methods/assurance/propose.d.ts +1 -0
  124. package/dist/bridge/surface/methods/assurance/propose.d.ts.map +1 -1
  125. package/dist/bridge/surface/methods/assurance/propose.js +1 -0
  126. package/dist/bridge/surface/methods/assurance/propose.js.map +1 -1
  127. package/dist/bridge/surface/methods/assurance/replaySession.d.ts +1 -0
  128. package/dist/bridge/surface/methods/assurance/replaySession.d.ts.map +1 -1
  129. package/dist/bridge/surface/methods/assurance/replaySession.js +1 -0
  130. package/dist/bridge/surface/methods/assurance/replaySession.js.map +1 -1
  131. package/dist/bridge/surface/methods/assurance/run.d.ts +1 -0
  132. package/dist/bridge/surface/methods/assurance/run.d.ts.map +1 -1
  133. package/dist/bridge/surface/methods/assurance/run.js +1 -0
  134. package/dist/bridge/surface/methods/assurance/run.js.map +1 -1
  135. package/dist/bridge/surface/methods/assurance/start.d.ts +1 -0
  136. package/dist/bridge/surface/methods/assurance/start.d.ts.map +1 -1
  137. package/dist/bridge/surface/methods/assurance/start.js +1 -0
  138. package/dist/bridge/surface/methods/assurance/start.js.map +1 -1
  139. package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts +1 -0
  140. package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts.map +1 -1
  141. package/dist/bridge/surface/methods/assurance/testRulesHosted.js +1 -0
  142. package/dist/bridge/surface/methods/assurance/testRulesHosted.js.map +1 -1
  143. package/dist/bridge/surface/methods/assurance/verify.d.ts +1 -0
  144. package/dist/bridge/surface/methods/assurance/verify.d.ts.map +1 -1
  145. package/dist/bridge/surface/methods/assurance/verify.js +1 -0
  146. package/dist/bridge/surface/methods/assurance/verify.js.map +1 -1
  147. package/dist/bridge/surface/methods/assurance/verifyCases.d.ts +1 -0
  148. package/dist/bridge/surface/methods/assurance/verifyCases.d.ts.map +1 -1
  149. package/dist/bridge/surface/methods/assurance/verifyCases.js +1 -0
  150. package/dist/bridge/surface/methods/assurance/verifyCases.js.map +1 -1
  151. package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts +2 -1
  152. package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts.map +1 -1
  153. package/dist/bridge/surface/methods/auth/actAsAdmin.js +1 -0
  154. package/dist/bridge/surface/methods/auth/actAsAdmin.js.map +1 -1
  155. package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts +2 -1
  156. package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts.map +1 -1
  157. package/dist/bridge/surface/methods/auth/actAsAnonymous.js +1 -0
  158. package/dist/bridge/surface/methods/auth/actAsAnonymous.js.map +1 -1
  159. package/dist/bridge/surface/methods/auth/createCustomToken.d.ts +1 -0
  160. package/dist/bridge/surface/methods/auth/createCustomToken.d.ts.map +1 -1
  161. package/dist/bridge/surface/methods/auth/createCustomToken.js +1 -0
  162. package/dist/bridge/surface/methods/auth/createCustomToken.js.map +1 -1
  163. package/dist/bridge/surface/methods/auth/createUser.d.ts +2 -1
  164. package/dist/bridge/surface/methods/auth/createUser.d.ts.map +1 -1
  165. package/dist/bridge/surface/methods/auth/createUser.js +2 -1
  166. package/dist/bridge/surface/methods/auth/createUser.js.map +1 -1
  167. package/dist/bridge/surface/methods/auth/deleteUser.d.ts +2 -1
  168. package/dist/bridge/surface/methods/auth/deleteUser.d.ts.map +1 -1
  169. package/dist/bridge/surface/methods/auth/deleteUser.js +2 -1
  170. package/dist/bridge/surface/methods/auth/deleteUser.js.map +1 -1
  171. package/dist/bridge/surface/methods/auth/getUser.d.ts +2 -1
  172. package/dist/bridge/surface/methods/auth/getUser.d.ts.map +1 -1
  173. package/dist/bridge/surface/methods/auth/getUser.js +2 -1
  174. package/dist/bridge/surface/methods/auth/getUser.js.map +1 -1
  175. package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts +2 -1
  176. package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts.map +1 -1
  177. package/dist/bridge/surface/methods/auth/getUserByEmail.js +2 -1
  178. package/dist/bridge/surface/methods/auth/getUserByEmail.js.map +1 -1
  179. package/dist/bridge/surface/methods/auth/impersonate.d.ts +2 -1
  180. package/dist/bridge/surface/methods/auth/impersonate.d.ts.map +1 -1
  181. package/dist/bridge/surface/methods/auth/impersonate.js +1 -0
  182. package/dist/bridge/surface/methods/auth/impersonate.js.map +1 -1
  183. package/dist/bridge/surface/methods/auth/importUsers.d.ts +2 -1
  184. package/dist/bridge/surface/methods/auth/importUsers.d.ts.map +1 -1
  185. package/dist/bridge/surface/methods/auth/importUsers.js +3 -2
  186. package/dist/bridge/surface/methods/auth/importUsers.js.map +1 -1
  187. package/dist/bridge/surface/methods/auth/listUsers.d.ts +2 -1
  188. package/dist/bridge/surface/methods/auth/listUsers.d.ts.map +1 -1
  189. package/dist/bridge/surface/methods/auth/listUsers.js +2 -1
  190. package/dist/bridge/surface/methods/auth/listUsers.js.map +1 -1
  191. package/dist/bridge/surface/methods/auth/sessions.d.ts +2 -1
  192. package/dist/bridge/surface/methods/auth/sessions.d.ts.map +1 -1
  193. package/dist/bridge/surface/methods/auth/sessions.js +1 -0
  194. package/dist/bridge/surface/methods/auth/sessions.js.map +1 -1
  195. package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts +2 -1
  196. package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts.map +1 -1
  197. package/dist/bridge/surface/methods/auth/setCustomUserClaims.js +2 -1
  198. package/dist/bridge/surface/methods/auth/setCustomUserClaims.js.map +1 -1
  199. package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts +2 -1
  200. package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts.map +1 -1
  201. package/dist/bridge/surface/methods/auth/signInAnonymously.js +1 -0
  202. package/dist/bridge/surface/methods/auth/signInAnonymously.js.map +1 -1
  203. package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts +2 -1
  204. package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts.map +1 -1
  205. package/dist/bridge/surface/methods/auth/signInWithCredential.js +1 -0
  206. package/dist/bridge/surface/methods/auth/signInWithCredential.js.map +1 -1
  207. package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts +2 -1
  208. package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts.map +1 -1
  209. package/dist/bridge/surface/methods/auth/signInWithCustomToken.js +1 -0
  210. package/dist/bridge/surface/methods/auth/signInWithCustomToken.js.map +1 -1
  211. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts +2 -1
  212. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts.map +1 -1
  213. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js +1 -0
  214. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js.map +1 -1
  215. package/dist/bridge/surface/methods/auth/signOut.d.ts +2 -1
  216. package/dist/bridge/surface/methods/auth/signOut.d.ts.map +1 -1
  217. package/dist/bridge/surface/methods/auth/signOut.js +1 -0
  218. package/dist/bridge/surface/methods/auth/signOut.js.map +1 -1
  219. package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts +2 -1
  220. package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts.map +1 -1
  221. package/dist/bridge/surface/methods/auth/takeAuthMail.js +1 -0
  222. package/dist/bridge/surface/methods/auth/takeAuthMail.js.map +1 -1
  223. package/dist/bridge/surface/methods/auth/updateUser.d.ts +2 -1
  224. package/dist/bridge/surface/methods/auth/updateUser.d.ts.map +1 -1
  225. package/dist/bridge/surface/methods/auth/updateUser.js +2 -1
  226. package/dist/bridge/surface/methods/auth/updateUser.js.map +1 -1
  227. package/dist/bridge/surface/methods/auth/useAppSession.d.ts +2 -1
  228. package/dist/bridge/surface/methods/auth/useAppSession.d.ts.map +1 -1
  229. package/dist/bridge/surface/methods/auth/useAppSession.js +1 -0
  230. package/dist/bridge/surface/methods/auth/useAppSession.js.map +1 -1
  231. package/dist/bridge/surface/methods/auth/whoami.d.ts +2 -1
  232. package/dist/bridge/surface/methods/auth/whoami.d.ts.map +1 -1
  233. package/dist/bridge/surface/methods/auth/whoami.js +1 -0
  234. package/dist/bridge/surface/methods/auth/whoami.js.map +1 -1
  235. package/dist/bridge/surface/methods/database/crawl.d.ts +2 -1
  236. package/dist/bridge/surface/methods/database/crawl.d.ts.map +1 -1
  237. package/dist/bridge/surface/methods/database/crawl.js +1 -0
  238. package/dist/bridge/surface/methods/database/crawl.js.map +1 -1
  239. package/dist/bridge/surface/methods/database/get.d.ts +2 -1
  240. package/dist/bridge/surface/methods/database/get.d.ts.map +1 -1
  241. package/dist/bridge/surface/methods/database/get.js +1 -0
  242. package/dist/bridge/surface/methods/database/get.js.map +1 -1
  243. package/dist/bridge/surface/methods/database/push.d.ts +2 -1
  244. package/dist/bridge/surface/methods/database/push.d.ts.map +1 -1
  245. package/dist/bridge/surface/methods/database/push.js +1 -0
  246. package/dist/bridge/surface/methods/database/push.js.map +1 -1
  247. package/dist/bridge/surface/methods/database/query.d.ts +2 -1
  248. package/dist/bridge/surface/methods/database/query.d.ts.map +1 -1
  249. package/dist/bridge/surface/methods/database/query.js +1 -0
  250. package/dist/bridge/surface/methods/database/query.js.map +1 -1
  251. package/dist/bridge/surface/methods/database/remove.d.ts +2 -1
  252. package/dist/bridge/surface/methods/database/remove.d.ts.map +1 -1
  253. package/dist/bridge/surface/methods/database/remove.js +1 -0
  254. package/dist/bridge/surface/methods/database/remove.js.map +1 -1
  255. package/dist/bridge/surface/methods/database/set.d.ts +2 -1
  256. package/dist/bridge/surface/methods/database/set.d.ts.map +1 -1
  257. package/dist/bridge/surface/methods/database/set.js +1 -0
  258. package/dist/bridge/surface/methods/database/set.js.map +1 -1
  259. package/dist/bridge/surface/methods/database/update.d.ts +2 -1
  260. package/dist/bridge/surface/methods/database/update.d.ts.map +1 -1
  261. package/dist/bridge/surface/methods/database/update.js +1 -0
  262. package/dist/bridge/surface/methods/database/update.js.map +1 -1
  263. package/dist/bridge/surface/methods/firestore/addDoc.d.ts +2 -1
  264. package/dist/bridge/surface/methods/firestore/addDoc.d.ts.map +1 -1
  265. package/dist/bridge/surface/methods/firestore/addDoc.js +2 -1
  266. package/dist/bridge/surface/methods/firestore/addDoc.js.map +1 -1
  267. package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts +2 -1
  268. package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts.map +1 -1
  269. package/dist/bridge/surface/methods/firestore/deleteDoc.js +2 -1
  270. package/dist/bridge/surface/methods/firestore/deleteDoc.js.map +1 -1
  271. package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts +2 -1
  272. package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts.map +1 -1
  273. package/dist/bridge/surface/methods/firestore/discoverPaths.js +1 -0
  274. package/dist/bridge/surface/methods/firestore/discoverPaths.js.map +1 -1
  275. package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts +7 -6
  276. package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts.map +1 -1
  277. package/dist/bridge/surface/methods/firestore/extractIndexes.js +1 -0
  278. package/dist/bridge/surface/methods/firestore/extractIndexes.js.map +1 -1
  279. package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts +2 -1
  280. package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts.map +1 -1
  281. package/dist/bridge/surface/methods/firestore/findCollectionGroup.js +1 -0
  282. package/dist/bridge/surface/methods/firestore/findCollectionGroup.js.map +1 -1
  283. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts +6 -5
  284. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts.map +1 -1
  285. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js +1 -0
  286. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js.map +1 -1
  287. package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts +6 -5
  288. package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts.map +1 -1
  289. package/dist/bridge/surface/methods/firestore/getCountFromServer.js +1 -0
  290. package/dist/bridge/surface/methods/firestore/getCountFromServer.js.map +1 -1
  291. package/dist/bridge/surface/methods/firestore/getDoc.d.ts +2 -1
  292. package/dist/bridge/surface/methods/firestore/getDoc.d.ts.map +1 -1
  293. package/dist/bridge/surface/methods/firestore/getDoc.js +2 -1
  294. package/dist/bridge/surface/methods/firestore/getDoc.js.map +1 -1
  295. package/dist/bridge/surface/methods/firestore/getDocs.d.ts +6 -5
  296. package/dist/bridge/surface/methods/firestore/getDocs.d.ts.map +1 -1
  297. package/dist/bridge/surface/methods/firestore/getDocs.js +2 -1
  298. package/dist/bridge/surface/methods/firestore/getDocs.js.map +1 -1
  299. package/dist/bridge/surface/methods/firestore/setDoc.d.ts +2 -1
  300. package/dist/bridge/surface/methods/firestore/setDoc.d.ts.map +1 -1
  301. package/dist/bridge/surface/methods/firestore/setDoc.js +2 -1
  302. package/dist/bridge/surface/methods/firestore/setDoc.js.map +1 -1
  303. package/dist/bridge/surface/methods/firestore/updateDoc.d.ts +2 -1
  304. package/dist/bridge/surface/methods/firestore/updateDoc.d.ts.map +1 -1
  305. package/dist/bridge/surface/methods/firestore/updateDoc.js +2 -1
  306. package/dist/bridge/surface/methods/firestore/updateDoc.js.map +1 -1
  307. package/dist/bridge/surface/methods/firestore/writeBatch.d.ts +2 -1
  308. package/dist/bridge/surface/methods/firestore/writeBatch.d.ts.map +1 -1
  309. package/dist/bridge/surface/methods/firestore/writeBatch.js +2 -1
  310. package/dist/bridge/surface/methods/firestore/writeBatch.js.map +1 -1
  311. package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts +1 -0
  312. package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts.map +1 -1
  313. package/dist/bridge/surface/methods/firestore/writeIndexes.js +1 -0
  314. package/dist/bridge/surface/methods/firestore/writeIndexes.js.map +1 -1
  315. package/dist/bridge/surface/methods/functions/executions.d.ts +3 -2
  316. package/dist/bridge/surface/methods/functions/executions.d.ts.map +1 -1
  317. package/dist/bridge/surface/methods/functions/executions.js +2 -1
  318. package/dist/bridge/surface/methods/functions/executions.js.map +1 -1
  319. package/dist/bridge/surface/methods/functions/fire.d.ts +1 -0
  320. package/dist/bridge/surface/methods/functions/fire.d.ts.map +1 -1
  321. package/dist/bridge/surface/methods/functions/fire.js +6 -5
  322. package/dist/bridge/surface/methods/functions/fire.js.map +1 -1
  323. package/dist/bridge/surface/methods/functions/listTriggers.d.ts +2 -1
  324. package/dist/bridge/surface/methods/functions/listTriggers.d.ts.map +1 -1
  325. package/dist/bridge/surface/methods/functions/listTriggers.js +1 -0
  326. package/dist/bridge/surface/methods/functions/listTriggers.js.map +1 -1
  327. package/dist/bridge/surface/methods/messaging/deliveries.d.ts +2 -1
  328. package/dist/bridge/surface/methods/messaging/deliveries.d.ts.map +1 -1
  329. package/dist/bridge/surface/methods/messaging/deliveries.js +1 -0
  330. package/dist/bridge/surface/methods/messaging/deliveries.js.map +1 -1
  331. package/dist/bridge/surface/methods/messaging/send.d.ts +2 -1
  332. package/dist/bridge/surface/methods/messaging/send.d.ts.map +1 -1
  333. package/dist/bridge/surface/methods/messaging/send.js +2 -1
  334. package/dist/bridge/surface/methods/messaging/send.js.map +1 -1
  335. package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts +2 -1
  336. package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts.map +1 -1
  337. package/dist/bridge/surface/methods/messaging/subscribeToTopic.js +1 -0
  338. package/dist/bridge/surface/methods/messaging/subscribeToTopic.js.map +1 -1
  339. package/dist/bridge/surface/methods/messaging/tokens.d.ts +2 -1
  340. package/dist/bridge/surface/methods/messaging/tokens.d.ts.map +1 -1
  341. package/dist/bridge/surface/methods/messaging/tokens.js +1 -0
  342. package/dist/bridge/surface/methods/messaging/tokens.js.map +1 -1
  343. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts +2 -1
  344. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts.map +1 -1
  345. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js +1 -0
  346. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js.map +1 -1
  347. package/dist/bridge/surface/methods/registry.d.ts.map +1 -1
  348. package/dist/bridge/surface/methods/registry.js +2 -8
  349. package/dist/bridge/surface/methods/registry.js.map +1 -1
  350. package/dist/bridge/surface/methods/rules/explainDenial.d.ts +1 -0
  351. package/dist/bridge/surface/methods/rules/explainDenial.d.ts.map +1 -1
  352. package/dist/bridge/surface/methods/rules/explainDenial.js +1 -0
  353. package/dist/bridge/surface/methods/rules/explainDenial.js.map +1 -1
  354. package/dist/bridge/surface/methods/rules/getStdlib.d.ts +1 -0
  355. package/dist/bridge/surface/methods/rules/getStdlib.d.ts.map +1 -1
  356. package/dist/bridge/surface/methods/rules/getStdlib.js +1 -0
  357. package/dist/bridge/surface/methods/rules/getStdlib.js.map +1 -1
  358. package/dist/bridge/surface/methods/rules/lint.d.ts +1 -0
  359. package/dist/bridge/surface/methods/rules/lint.d.ts.map +1 -1
  360. package/dist/bridge/surface/methods/rules/lint.js +1 -0
  361. package/dist/bridge/surface/methods/rules/lint.js.map +1 -1
  362. package/dist/bridge/surface/methods/rules/listStdlib.d.ts +1 -0
  363. package/dist/bridge/surface/methods/rules/listStdlib.d.ts.map +1 -1
  364. package/dist/bridge/surface/methods/rules/listStdlib.js +1 -0
  365. package/dist/bridge/surface/methods/rules/listStdlib.js.map +1 -1
  366. package/dist/bridge/surface/methods/rules/set.d.ts +1 -0
  367. package/dist/bridge/surface/methods/rules/set.d.ts.map +1 -1
  368. package/dist/bridge/surface/methods/rules/set.js +1 -0
  369. package/dist/bridge/surface/methods/rules/set.js.map +1 -1
  370. package/dist/bridge/surface/methods/rules/simulate.d.ts +1 -0
  371. package/dist/bridge/surface/methods/rules/simulate.d.ts.map +1 -1
  372. package/dist/bridge/surface/methods/rules/simulate.js +1 -0
  373. package/dist/bridge/surface/methods/rules/simulate.js.map +1 -1
  374. package/dist/bridge/surface/methods/sandbox/activity.d.ts +2 -1
  375. package/dist/bridge/surface/methods/sandbox/activity.d.ts.map +1 -1
  376. package/dist/bridge/surface/methods/sandbox/activity.js +2 -1
  377. package/dist/bridge/surface/methods/sandbox/activity.js.map +1 -1
  378. package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts +2 -1
  379. package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts.map +1 -1
  380. package/dist/bridge/surface/methods/sandbox/advanceClock.js +1 -0
  381. package/dist/bridge/surface/methods/sandbox/advanceClock.js.map +1 -1
  382. package/dist/bridge/surface/methods/sandbox/apply.d.ts +1 -0
  383. package/dist/bridge/surface/methods/sandbox/apply.d.ts.map +1 -1
  384. package/dist/bridge/surface/methods/sandbox/apply.js +1 -0
  385. package/dist/bridge/surface/methods/sandbox/apply.js.map +1 -1
  386. package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts +1 -0
  387. package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts.map +1 -1
  388. package/dist/bridge/surface/methods/sandbox/checkpoint.js +1 -0
  389. package/dist/bridge/surface/methods/sandbox/checkpoint.js.map +1 -1
  390. package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts +1 -0
  391. package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts.map +1 -1
  392. package/dist/bridge/surface/methods/sandbox/deleteCapture.js +1 -1
  393. package/dist/bridge/surface/methods/sandbox/deleteCapture.js.map +1 -1
  394. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts +1 -0
  395. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts.map +1 -1
  396. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js +1 -0
  397. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js.map +1 -1
  398. package/dist/bridge/surface/methods/sandbox/diff.d.ts +1 -0
  399. package/dist/bridge/surface/methods/sandbox/diff.d.ts.map +1 -1
  400. package/dist/bridge/surface/methods/sandbox/diff.js +1 -0
  401. package/dist/bridge/surface/methods/sandbox/diff.js.map +1 -1
  402. package/dist/bridge/surface/methods/sandbox/discard.d.ts +1 -0
  403. package/dist/bridge/surface/methods/sandbox/discard.d.ts.map +1 -1
  404. package/dist/bridge/surface/methods/sandbox/discard.js +1 -0
  405. package/dist/bridge/surface/methods/sandbox/discard.js.map +1 -1
  406. package/dist/bridge/surface/methods/sandbox/events.d.ts +2 -1
  407. package/dist/bridge/surface/methods/sandbox/events.d.ts.map +1 -1
  408. package/dist/bridge/surface/methods/sandbox/events.js +2 -1
  409. package/dist/bridge/surface/methods/sandbox/events.js.map +1 -1
  410. package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts +1 -0
  411. package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts.map +1 -1
  412. package/dist/bridge/surface/methods/sandbox/exportFixture.js +1 -0
  413. package/dist/bridge/surface/methods/sandbox/exportFixture.js.map +1 -1
  414. package/dist/bridge/surface/methods/sandbox/fork.d.ts +1 -0
  415. package/dist/bridge/surface/methods/sandbox/fork.d.ts.map +1 -1
  416. package/dist/bridge/surface/methods/sandbox/fork.js +1 -0
  417. package/dist/bridge/surface/methods/sandbox/fork.js.map +1 -1
  418. package/dist/bridge/surface/methods/sandbox/inspect.d.ts +2 -1
  419. package/dist/bridge/surface/methods/sandbox/inspect.d.ts.map +1 -1
  420. package/dist/bridge/surface/methods/sandbox/inspect.js +2 -1
  421. package/dist/bridge/surface/methods/sandbox/inspect.js.map +1 -1
  422. package/dist/bridge/surface/methods/sandbox/listBranches.d.ts +1 -0
  423. package/dist/bridge/surface/methods/sandbox/listBranches.d.ts.map +1 -1
  424. package/dist/bridge/surface/methods/sandbox/listBranches.js +1 -0
  425. package/dist/bridge/surface/methods/sandbox/listBranches.js.map +1 -1
  426. package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts +1 -0
  427. package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts.map +1 -1
  428. package/dist/bridge/surface/methods/sandbox/listCaptures.js +1 -1
  429. package/dist/bridge/surface/methods/sandbox/listCaptures.js.map +1 -1
  430. package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts +1 -0
  431. package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts.map +1 -1
  432. package/dist/bridge/surface/methods/sandbox/listCheckpoints.js +1 -0
  433. package/dist/bridge/surface/methods/sandbox/listCheckpoints.js.map +1 -1
  434. package/dist/bridge/surface/methods/sandbox/listeners.d.ts +2 -1
  435. package/dist/bridge/surface/methods/sandbox/listeners.d.ts.map +1 -1
  436. package/dist/bridge/surface/methods/sandbox/listeners.js +1 -0
  437. package/dist/bridge/surface/methods/sandbox/listeners.js.map +1 -1
  438. package/dist/bridge/surface/methods/sandbox/openCapture.d.ts +1 -0
  439. package/dist/bridge/surface/methods/sandbox/openCapture.d.ts.map +1 -1
  440. package/dist/bridge/surface/methods/sandbox/openCapture.js +1 -1
  441. package/dist/bridge/surface/methods/sandbox/openCapture.js.map +1 -1
  442. package/dist/bridge/surface/methods/sandbox/promote.d.ts +1 -0
  443. package/dist/bridge/surface/methods/sandbox/promote.d.ts.map +1 -1
  444. package/dist/bridge/surface/methods/sandbox/promote.js +1 -0
  445. package/dist/bridge/surface/methods/sandbox/promote.js.map +1 -1
  446. package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts +3 -2
  447. package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts.map +1 -1
  448. package/dist/bridge/surface/methods/sandbox/renameCapture.js +1 -1
  449. package/dist/bridge/surface/methods/sandbox/renameCapture.js.map +1 -1
  450. package/dist/bridge/surface/methods/sandbox/reset.d.ts +3 -2
  451. package/dist/bridge/surface/methods/sandbox/reset.d.ts.map +1 -1
  452. package/dist/bridge/surface/methods/sandbox/reset.js +1 -0
  453. package/dist/bridge/surface/methods/sandbox/reset.js.map +1 -1
  454. package/dist/bridge/surface/methods/sandbox/resetClock.d.ts +2 -1
  455. package/dist/bridge/surface/methods/sandbox/resetClock.d.ts.map +1 -1
  456. package/dist/bridge/surface/methods/sandbox/resetClock.js +1 -0
  457. package/dist/bridge/surface/methods/sandbox/resetClock.js.map +1 -1
  458. package/dist/bridge/surface/methods/sandbox/restore.d.ts +1 -0
  459. package/dist/bridge/surface/methods/sandbox/restore.d.ts.map +1 -1
  460. package/dist/bridge/surface/methods/sandbox/restore.js +1 -0
  461. package/dist/bridge/surface/methods/sandbox/restore.js.map +1 -1
  462. package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts +1 -0
  463. package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts.map +1 -1
  464. package/dist/bridge/surface/methods/sandbox/saveCapture.js +1 -1
  465. package/dist/bridge/surface/methods/sandbox/saveCapture.js.map +1 -1
  466. package/dist/bridge/surface/methods/sandbox/seed.d.ts +2 -1
  467. package/dist/bridge/surface/methods/sandbox/seed.d.ts.map +1 -1
  468. package/dist/bridge/surface/methods/sandbox/seed.js +3 -2
  469. package/dist/bridge/surface/methods/sandbox/seed.js.map +1 -1
  470. package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts +1 -0
  471. package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts.map +1 -1
  472. package/dist/bridge/surface/methods/sandbox/seedFromFixture.js +1 -0
  473. package/dist/bridge/surface/methods/sandbox/seedFromFixture.js.map +1 -1
  474. package/dist/bridge/surface/methods/sandbox/setClock.d.ts +2 -1
  475. package/dist/bridge/surface/methods/sandbox/setClock.d.ts.map +1 -1
  476. package/dist/bridge/surface/methods/sandbox/setClock.js +1 -0
  477. package/dist/bridge/surface/methods/sandbox/setClock.js.map +1 -1
  478. package/dist/bridge/surface/methods/sandbox-registry.d.ts +6 -0
  479. package/dist/bridge/surface/methods/sandbox-registry.d.ts.map +1 -0
  480. package/dist/bridge/surface/methods/sandbox-registry.js +21 -0
  481. package/dist/bridge/surface/methods/sandbox-registry.js.map +1 -0
  482. package/dist/bridge/surface/methods/storage/deleteObject.d.ts +2 -1
  483. package/dist/bridge/surface/methods/storage/deleteObject.d.ts.map +1 -1
  484. package/dist/bridge/surface/methods/storage/deleteObject.js +1 -0
  485. package/dist/bridge/surface/methods/storage/deleteObject.js.map +1 -1
  486. package/dist/bridge/surface/methods/storage/getBytes.d.ts +2 -1
  487. package/dist/bridge/surface/methods/storage/getBytes.d.ts.map +1 -1
  488. package/dist/bridge/surface/methods/storage/getBytes.js +1 -0
  489. package/dist/bridge/surface/methods/storage/getBytes.js.map +1 -1
  490. package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts +2 -1
  491. package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts.map +1 -1
  492. package/dist/bridge/surface/methods/storage/getDownloadURL.js +1 -0
  493. package/dist/bridge/surface/methods/storage/getDownloadURL.js.map +1 -1
  494. package/dist/bridge/surface/methods/storage/getMetadata.d.ts +2 -1
  495. package/dist/bridge/surface/methods/storage/getMetadata.d.ts.map +1 -1
  496. package/dist/bridge/surface/methods/storage/getMetadata.js +1 -0
  497. package/dist/bridge/surface/methods/storage/getMetadata.js.map +1 -1
  498. package/dist/bridge/surface/methods/storage/listAll.d.ts +2 -1
  499. package/dist/bridge/surface/methods/storage/listAll.d.ts.map +1 -1
  500. package/dist/bridge/surface/methods/storage/listAll.js +1 -0
  501. package/dist/bridge/surface/methods/storage/listAll.js.map +1 -1
  502. package/dist/bridge/surface/methods/storage/provision.d.ts +1 -0
  503. package/dist/bridge/surface/methods/storage/provision.d.ts.map +1 -1
  504. package/dist/bridge/surface/methods/storage/provision.js +1 -0
  505. package/dist/bridge/surface/methods/storage/provision.js.map +1 -1
  506. package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts +2 -1
  507. package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts.map +1 -1
  508. package/dist/bridge/surface/methods/storage/setCrossServiceIam.js +1 -0
  509. package/dist/bridge/surface/methods/storage/setCrossServiceIam.js.map +1 -1
  510. package/dist/bridge/surface/methods/storage/status.d.ts +1 -0
  511. package/dist/bridge/surface/methods/storage/status.d.ts.map +1 -1
  512. package/dist/bridge/surface/methods/storage/status.js +1 -0
  513. package/dist/bridge/surface/methods/storage/status.js.map +1 -1
  514. package/dist/bridge/surface/methods/storage/updateMetadata.d.ts +6 -5
  515. package/dist/bridge/surface/methods/storage/updateMetadata.d.ts.map +1 -1
  516. package/dist/bridge/surface/methods/storage/updateMetadata.js +1 -0
  517. package/dist/bridge/surface/methods/storage/updateMetadata.js.map +1 -1
  518. package/dist/bridge/surface/methods/storage/uploadBytes.d.ts +1 -0
  519. package/dist/bridge/surface/methods/storage/uploadBytes.d.ts.map +1 -1
  520. package/dist/bridge/surface/methods/storage/uploadBytes.js +1 -0
  521. package/dist/bridge/surface/methods/storage/uploadBytes.js.map +1 -1
  522. package/dist/bridge/surface/render/discriminator-schemas.d.ts +2 -2
  523. package/dist/bridge/surface/request-instant.d.ts +2 -2
  524. package/dist/bridge/surface/request-instant.d.ts.map +1 -1
  525. package/dist/bridge/surface/request-instant.js.map +1 -1
  526. package/dist/bridge/surface/rules-engines/database.d.ts.map +1 -1
  527. package/dist/bridge/surface/rules-engines/database.js +1 -2
  528. package/dist/bridge/surface/rules-engines/database.js.map +1 -1
  529. package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts +38 -0
  530. package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts.map +1 -0
  531. package/dist/bridge/surface/rules-engines/storage-request-resource.js +246 -0
  532. package/dist/bridge/surface/rules-engines/storage-request-resource.js.map +1 -0
  533. package/dist/bridge/surface/rules-engines/storage.d.ts.map +1 -1
  534. package/dist/bridge/surface/rules-engines/storage.js +44 -65
  535. package/dist/bridge/surface/rules-engines/storage.js.map +1 -1
  536. package/dist/bridge/surface/sandbox-context.d.ts +25 -0
  537. package/dist/bridge/surface/sandbox-context.d.ts.map +1 -0
  538. package/dist/bridge/surface/sandbox-context.js +29 -0
  539. package/dist/bridge/surface/sandbox-context.js.map +1 -0
  540. package/dist/bridge/surface/service-handles.d.ts +6 -6
  541. package/dist/bridge/surface/service-handles.d.ts.map +1 -1
  542. package/dist/bridge/surface/service-handles.js +7 -4
  543. package/dist/bridge/surface/service-handles.js.map +1 -1
  544. package/dist/bridge/surface/sign-in.d.ts +2 -2
  545. package/dist/bridge/surface/sign-in.d.ts.map +1 -1
  546. package/dist/bridge/surface/sign-in.js +1 -1
  547. package/dist/bridge/surface/sign-in.js.map +1 -1
  548. package/dist/bridge/surface/storage-rules.d.ts +2 -9
  549. package/dist/bridge/surface/storage-rules.d.ts.map +1 -1
  550. package/dist/bridge/surface/storage-rules.js +0 -10
  551. package/dist/bridge/surface/storage-rules.js.map +1 -1
  552. package/dist/bridge/surface/stored-identity.d.ts +3 -3
  553. package/dist/bridge/surface/stored-identity.d.ts.map +1 -1
  554. package/dist/bridge/surface/stored-identity.js.map +1 -1
  555. package/dist/bridge/surface/types.d.ts +29 -8
  556. package/dist/bridge/surface/types.d.ts.map +1 -1
  557. package/dist/cli/firebase-json.d.ts +35 -7
  558. package/dist/cli/firebase-json.d.ts.map +1 -1
  559. package/dist/cli/firebase-json.js +13 -0
  560. package/dist/cli/firebase-json.js.map +1 -1
  561. package/dist/cli/firestore-indexes.d.ts.map +1 -1
  562. package/dist/cli/firestore-indexes.js +2 -1
  563. package/dist/cli/firestore-indexes.js.map +1 -1
  564. package/dist/cli/index.d.ts +6 -0
  565. package/dist/cli/index.d.ts.map +1 -1
  566. package/dist/cli/index.js +44 -11
  567. package/dist/cli/index.js.map +1 -1
  568. package/dist/cli/public-dir-hint.d.ts +8 -0
  569. package/dist/cli/public-dir-hint.d.ts.map +1 -0
  570. package/dist/cli/public-dir-hint.js +30 -0
  571. package/dist/cli/public-dir-hint.js.map +1 -0
  572. package/dist/cli/run.d.ts +8 -2
  573. package/dist/cli/run.d.ts.map +1 -1
  574. package/dist/cli/run.js +28 -5
  575. package/dist/cli/run.js.map +1 -1
  576. package/dist/cli/sandbox-runner.d.ts.map +1 -1
  577. package/dist/cli/sandbox-runner.js +11 -2
  578. package/dist/cli/sandbox-runner.js.map +1 -1
  579. package/dist/cli/serve-diagnostics.d.ts.map +1 -1
  580. package/dist/cli/serve-diagnostics.js +11 -1
  581. package/dist/cli/serve-diagnostics.js.map +1 -1
  582. package/dist/cli/serve.d.ts.map +1 -1
  583. package/dist/cli/serve.js +25 -24
  584. package/dist/cli/serve.js.map +1 -1
  585. package/dist/cli/snapshot.d.ts.map +1 -1
  586. package/dist/cli/snapshot.js +13 -5
  587. package/dist/cli/snapshot.js.map +1 -1
  588. package/dist/cli/surface-method-runner.js +1 -1
  589. package/dist/cli/surface-method-runner.js.map +1 -1
  590. package/dist/cli/verify.d.ts.map +1 -1
  591. package/dist/cli/verify.js +10 -1
  592. package/dist/cli/verify.js.map +1 -1
  593. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  594. package/dist/conformance/.generated/can-i-use-browser.js +19 -3
  595. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  596. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  597. package/dist/conformance/.generated/can-i-use.js +1 -1
  598. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  599. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  600. package/dist/conformance/.generated/conformance-docs.js +1 -1
  601. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  602. package/dist/conformance/.generated/served-availability.d.ts.map +1 -1
  603. package/dist/conformance/.generated/served-availability.js +1 -1
  604. package/dist/conformance/.generated/served-availability.js.map +1 -1
  605. package/dist/discover/merge.d.ts.map +1 -1
  606. package/dist/discover/merge.js +11 -3
  607. package/dist/discover/merge.js.map +1 -1
  608. package/dist/functions/child-protocol.d.ts +43 -0
  609. package/dist/functions/child-protocol.d.ts.map +1 -0
  610. package/dist/functions/child-protocol.js +14 -0
  611. package/dist/functions/child-protocol.js.map +1 -0
  612. package/dist/functions/child.d.ts +2 -0
  613. package/dist/functions/child.d.ts.map +1 -0
  614. package/dist/functions/child.js +92 -0
  615. package/dist/functions/child.js.map +1 -0
  616. package/dist/{functions-rtdb → functions}/development-runtime.d.ts +5 -4
  617. package/dist/functions/development-runtime.d.ts.map +1 -0
  618. package/dist/{functions-rtdb → functions}/development-runtime.js +2 -2
  619. package/dist/functions/development-runtime.js.map +1 -0
  620. package/dist/functions/endpoints.d.ts +39 -0
  621. package/dist/functions/endpoints.d.ts.map +1 -0
  622. package/dist/functions/endpoints.js +48 -0
  623. package/dist/functions/endpoints.js.map +1 -0
  624. package/dist/functions/events.d.ts.map +1 -0
  625. package/dist/functions/events.js.map +1 -0
  626. package/dist/functions/execution-log.d.ts.map +1 -0
  627. package/dist/functions/execution-log.js.map +1 -0
  628. package/dist/functions/module-loader.d.ts.map +1 -0
  629. package/dist/functions/module-loader.js.map +1 -0
  630. package/dist/functions/project.d.ts +7 -0
  631. package/dist/functions/project.d.ts.map +1 -0
  632. package/dist/{functions-rtdb → functions}/project.js +1 -1
  633. package/dist/functions/project.js.map +1 -0
  634. package/dist/functions/rtdb/child-runtime.d.ts +23 -0
  635. package/dist/functions/rtdb/child-runtime.d.ts.map +1 -0
  636. package/dist/functions/rtdb/child-runtime.js +102 -0
  637. package/dist/functions/rtdb/child-runtime.js.map +1 -0
  638. package/dist/functions/rtdb/delivery.d.ts.map +1 -0
  639. package/dist/functions/rtdb/delivery.js.map +1 -0
  640. package/dist/{functions-rtdb → functions/rtdb}/discovery.d.ts +3 -20
  641. package/dist/functions/rtdb/discovery.d.ts.map +1 -0
  642. package/dist/{functions-rtdb → functions/rtdb}/discovery.js +6 -21
  643. package/dist/functions/rtdb/discovery.js.map +1 -0
  644. package/dist/functions/rtdb/event.d.ts.map +1 -0
  645. package/dist/functions/rtdb/event.js.map +1 -0
  646. package/dist/functions/rtdb/execution.d.ts.map +1 -0
  647. package/dist/functions/rtdb/execution.js.map +1 -0
  648. package/dist/functions/rtdb/in-memory-delivery.d.ts.map +1 -0
  649. package/dist/functions/rtdb/in-memory-delivery.js.map +1 -0
  650. package/dist/functions/rtdb/projection.d.ts.map +1 -0
  651. package/dist/functions/rtdb/projection.js.map +1 -0
  652. package/dist/functions/rtdb/reference-pattern.d.ts.map +1 -0
  653. package/dist/functions/rtdb/reference-pattern.js.map +1 -0
  654. package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.d.ts +1 -1
  655. package/dist/functions/rtdb/remote-delivery.d.ts.map +1 -0
  656. package/dist/functions/rtdb/remote-delivery.js.map +1 -0
  657. package/dist/{functions-rtdb/child.d.ts → functions/spawn.d.ts} +16 -38
  658. package/dist/functions/spawn.d.ts.map +1 -0
  659. package/dist/functions/spawn.js +166 -0
  660. package/dist/functions/spawn.js.map +1 -0
  661. package/dist/functions/unsupported.d.ts +23 -0
  662. package/dist/functions/unsupported.d.ts.map +1 -0
  663. package/dist/functions/unsupported.js +25 -0
  664. package/dist/functions/unsupported.js.map +1 -0
  665. package/dist/google-endpoints.d.ts +9 -2
  666. package/dist/google-endpoints.d.ts.map +1 -1
  667. package/dist/google-endpoints.js +72 -3
  668. package/dist/google-endpoints.js.map +1 -1
  669. package/dist/next/bridge-import-loader.d.ts +9 -0
  670. package/dist/next/bridge-import-loader.d.ts.map +1 -0
  671. package/dist/next/bridge-import-loader.js +45 -0
  672. package/dist/next/bridge-import-loader.js.map +1 -0
  673. package/dist/next/bridge-imports.d.ts +26 -0
  674. package/dist/next/bridge-imports.d.ts.map +1 -0
  675. package/dist/next/bridge-imports.js +90 -0
  676. package/dist/next/bridge-imports.js.map +1 -0
  677. package/dist/next/client-aliases.d.ts +13 -5
  678. package/dist/next/client-aliases.d.ts.map +1 -1
  679. package/dist/next/client-aliases.js +14 -27
  680. package/dist/next/client-aliases.js.map +1 -1
  681. package/dist/next/guard.d.ts +3 -2
  682. package/dist/next/guard.d.ts.map +1 -1
  683. package/dist/next/guard.js +28 -10
  684. package/dist/next/guard.js.map +1 -1
  685. package/dist/next/turbopack-config.d.ts +9 -0
  686. package/dist/next/turbopack-config.d.ts.map +1 -1
  687. package/dist/next/turbopack-config.js +21 -0
  688. package/dist/next/turbopack-config.js.map +1 -1
  689. package/dist/next/webpack-config.d.ts +9 -0
  690. package/dist/next/webpack-config.d.ts.map +1 -1
  691. package/dist/next/webpack-config.js +18 -0
  692. package/dist/next/webpack-config.js.map +1 -1
  693. package/dist/next/with-pyric.d.ts +1 -0
  694. package/dist/next/with-pyric.d.ts.map +1 -1
  695. package/dist/next/with-pyric.js +25 -0
  696. package/dist/next/with-pyric.js.map +1 -1
  697. package/dist/register/activation.d.ts +16 -0
  698. package/dist/register/activation.d.ts.map +1 -0
  699. package/dist/register/activation.js +22 -0
  700. package/dist/register/activation.js.map +1 -0
  701. package/dist/register/app-bridge-admin-app-check.d.ts.map +1 -1
  702. package/dist/register/app-bridge-admin-app-check.js +3 -1
  703. package/dist/register/app-bridge-admin-app-check.js.map +1 -1
  704. package/dist/register/child-process-guard.d.ts +43 -0
  705. package/dist/register/child-process-guard.d.ts.map +1 -0
  706. package/dist/register/child-process-guard.js +165 -0
  707. package/dist/register/child-process-guard.js.map +1 -0
  708. package/dist/register/client/bootstrap.js +6 -1
  709. package/dist/register/client/bootstrap.js.map +1 -1
  710. package/dist/register/connect-prototypes.d.ts +9 -0
  711. package/dist/register/connect-prototypes.d.ts.map +1 -1
  712. package/dist/register/connect-prototypes.js +11 -0
  713. package/dist/register/connect-prototypes.js.map +1 -1
  714. package/dist/register/hooks.d.ts +7 -1
  715. package/dist/register/hooks.d.ts.map +1 -1
  716. package/dist/register/hooks.js +44 -2
  717. package/dist/register/hooks.js.map +1 -1
  718. package/dist/register/index.d.ts.map +1 -1
  719. package/dist/register/index.js +93 -23
  720. package/dist/register/index.js.map +1 -1
  721. package/dist/register/mapping.d.ts +33 -0
  722. package/dist/register/mapping.d.ts.map +1 -1
  723. package/dist/register/mapping.js +45 -3
  724. package/dist/register/mapping.js.map +1 -1
  725. package/dist/register/net-guard.d.ts +17 -0
  726. package/dist/register/net-guard.d.ts.map +1 -1
  727. package/dist/register/net-guard.js +118 -41
  728. package/dist/register/net-guard.js.map +1 -1
  729. package/dist/register/package-identity.d.ts +16 -0
  730. package/dist/register/package-identity.d.ts.map +1 -0
  731. package/dist/register/package-identity.js +97 -0
  732. package/dist/register/package-identity.js.map +1 -0
  733. package/dist/register/swap-or-stop.d.ts +27 -0
  734. package/dist/register/swap-or-stop.d.ts.map +1 -0
  735. package/dist/register/swap-or-stop.js +170 -0
  736. package/dist/register/swap-or-stop.js.map +1 -0
  737. package/dist/register/worker-guard.d.ts +20 -0
  738. package/dist/register/worker-guard.d.ts.map +1 -0
  739. package/dist/register/worker-guard.js +77 -0
  740. package/dist/register/worker-guard.js.map +1 -0
  741. package/dist/remote/resolve-host.d.ts +9 -0
  742. package/dist/remote/resolve-host.d.ts.map +1 -1
  743. package/dist/remote/resolve-host.js +13 -2
  744. package/dist/remote/resolve-host.js.map +1 -1
  745. package/dist/serve/ai-proxy.d.ts +2 -0
  746. package/dist/serve/ai-proxy.d.ts.map +1 -1
  747. package/dist/serve/ai-proxy.js +33 -8
  748. package/dist/serve/ai-proxy.js.map +1 -1
  749. package/dist/serve/app-ports.d.ts +48 -0
  750. package/dist/serve/app-ports.d.ts.map +1 -0
  751. package/dist/serve/app-ports.js +82 -0
  752. package/dist/serve/app-ports.js.map +1 -0
  753. package/dist/serve/bridge-mount.d.ts +13 -0
  754. package/dist/serve/bridge-mount.d.ts.map +1 -1
  755. package/dist/serve/bridge-mount.js +28 -8
  756. package/dist/serve/bridge-mount.js.map +1 -1
  757. package/dist/serve/bundler.d.ts +6 -0
  758. package/dist/serve/bundler.d.ts.map +1 -1
  759. package/dist/serve/bundler.js +78 -26
  760. package/dist/serve/bundler.js.map +1 -1
  761. package/dist/serve/discovery.d.ts +17 -3
  762. package/dist/serve/discovery.d.ts.map +1 -1
  763. package/dist/serve/discovery.js +199 -63
  764. package/dist/serve/discovery.js.map +1 -1
  765. package/dist/serve/entries/auth.d.ts.map +1 -1
  766. package/dist/serve/entries/auth.js +19 -1
  767. package/dist/serve/entries/auth.js.map +1 -1
  768. package/dist/serve/entries/firestore-surface.d.ts +1 -0
  769. package/dist/serve/entries/firestore-surface.d.ts.map +1 -1
  770. package/dist/serve/entries/firestore-surface.js +1 -0
  771. package/dist/serve/entries/firestore-surface.js.map +1 -1
  772. package/dist/serve/entries/init-payload.d.ts +9 -2
  773. package/dist/serve/entries/init-payload.d.ts.map +1 -1
  774. package/dist/serve/entries/init-payload.js +25 -5
  775. package/dist/serve/entries/init-payload.js.map +1 -1
  776. package/dist/serve/entries/moved-host.d.ts +18 -0
  777. package/dist/serve/entries/moved-host.d.ts.map +1 -0
  778. package/dist/serve/entries/moved-host.js +14 -0
  779. package/dist/serve/entries/moved-host.js.map +1 -0
  780. package/dist/serve/entries/runtime-origin.d.ts +6 -0
  781. package/dist/serve/entries/runtime-origin.d.ts.map +1 -1
  782. package/dist/serve/entries/runtime-origin.js.map +1 -1
  783. package/dist/serve/entries/unsupported/firestore.d.ts +0 -1
  784. package/dist/serve/entries/unsupported/firestore.d.ts.map +1 -1
  785. package/dist/serve/entries/unsupported/firestore.js +0 -1
  786. package/dist/serve/entries/unsupported/firestore.js.map +1 -1
  787. package/dist/serve/entries/worker-runtime.d.ts.map +1 -1
  788. package/dist/serve/entries/worker-runtime.js +19 -7
  789. package/dist/serve/entries/worker-runtime.js.map +1 -1
  790. package/dist/serve/firebase-module-swap.d.ts +19 -2
  791. package/dist/serve/firebase-module-swap.d.ts.map +1 -1
  792. package/dist/serve/firebase-module-swap.js +92 -16
  793. package/dist/serve/firebase-module-swap.js.map +1 -1
  794. package/dist/serve/gemini-proxy.js +2 -2
  795. package/dist/serve/gemini-proxy.js.map +1 -1
  796. package/dist/serve/hosted/runtime.d.ts.map +1 -1
  797. package/dist/serve/hosted/runtime.js +10 -3
  798. package/dist/serve/hosted/runtime.js.map +1 -1
  799. package/dist/serve/namespace.d.ts +7 -0
  800. package/dist/serve/namespace.d.ts.map +1 -1
  801. package/dist/serve/namespace.js +32 -24
  802. package/dist/serve/namespace.js.map +1 -1
  803. package/dist/serve/repro/compare.d.ts +2 -1
  804. package/dist/serve/repro/compare.d.ts.map +1 -1
  805. package/dist/serve/repro/compare.js +9 -1
  806. package/dist/serve/repro/compare.js.map +1 -1
  807. package/dist/serve/rules-fixture-check.d.ts.map +1 -1
  808. package/dist/serve/rules-fixture-check.js +22 -10
  809. package/dist/serve/rules-fixture-check.js.map +1 -1
  810. package/dist/serve/rules.d.ts +35 -9
  811. package/dist/serve/rules.d.ts.map +1 -1
  812. package/dist/serve/rules.js +72 -21
  813. package/dist/serve/rules.js.map +1 -1
  814. package/dist/serve/sandbox-session.d.ts +3 -0
  815. package/dist/serve/sandbox-session.d.ts.map +1 -1
  816. package/dist/serve/sandbox-session.js +10 -3
  817. package/dist/serve/sandbox-session.js.map +1 -1
  818. package/dist/serve/server.d.ts +10 -2
  819. package/dist/serve/server.d.ts.map +1 -1
  820. package/dist/serve/server.js +24 -4
  821. package/dist/serve/server.js.map +1 -1
  822. package/dist/serve/site-ui/_astro/{RulesCodeEditor.Cp_-FK3b.js → RulesCodeEditor.D-eQLCvu.js} +1 -1
  823. package/dist/serve/site-ui/_astro/app.BjQiEBOY.js +1 -0
  824. package/dist/serve/site-ui/_astro/app.C84Qr10v.js +151 -0
  825. package/dist/serve/site-ui/_astro/{chess-showcase.CVhCNUi_.js → chess-showcase.CsH1s4g7.js} +1 -1
  826. package/dist/serve/site-ui/_astro/{example-runtime.zC1l-Yka.js → example-runtime.CTp8mh7I.js} +1 -1
  827. package/dist/serve/site-ui/_astro/sandbox-controls.DI8MTU3L.js +1725 -0
  828. package/dist/serve/site-ui/_astro/{seed.B4vza_Bv.js → seed.BvtbLu-q.js} +1 -1
  829. package/dist/serve/site-ui/_astro/writes.D8gcuovU.js +1 -0
  830. package/dist/serve/site-ui/auth/index.html +1 -1
  831. package/dist/serve/site-ui/docs/ai-compat/index.html +48 -9
  832. package/dist/serve/site-ui/docs/ai-compat.md +53 -8
  833. package/dist/serve/site-ui/docs/app-check-compat/index.html +102 -26
  834. package/dist/serve/site-ui/docs/app-check-compat.md +107 -25
  835. package/dist/serve/site-ui/docs/auth-compat/index.html +33 -21
  836. package/dist/serve/site-ui/docs/auth-compat.md +35 -20
  837. package/dist/serve/site-ui/docs/build/ai-logic/index.html +13 -4
  838. package/dist/serve/site-ui/docs/build/ai-logic.md +14 -4
  839. package/dist/serve/site-ui/docs/conformance-scores/index.html +2 -2
  840. package/dist/serve/site-ui/docs/conformance-scores.md +2 -2
  841. package/dist/serve/site-ui/docs/database-compat/index.html +113 -49
  842. package/dist/serve/site-ui/docs/database-compat.md +118 -48
  843. package/dist/serve/site-ui/docs/firestore-compat/index.html +144 -37
  844. package/dist/serve/site-ui/docs/firestore-compat.md +149 -36
  845. package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +1 -1
  846. package/dist/serve/site-ui/docs/firestore-swift-compat.md +1 -1
  847. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +12 -12
  848. package/dist/serve/site-ui/docs/functions-rtdb-compat.md +12 -12
  849. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  850. package/dist/serve/site-ui/docs/get-started/how-the-swap-works.md +1 -1
  851. package/dist/serve/site-ui/docs/get-started/node-host/index.html +1 -0
  852. package/dist/serve/site-ui/docs/get-started/node-host.md +2 -0
  853. package/dist/serve/site-ui/docs/index.json +45 -5
  854. package/dist/serve/site-ui/docs/messaging-compat/index.html +2 -2
  855. package/dist/serve/site-ui/docs/messaging-compat.md +2 -2
  856. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +3 -1
  857. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api.md +2 -0
  858. package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +11 -3
  859. package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +13 -3
  860. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  861. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
  862. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -0
  863. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -0
  864. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api/index.html +1 -1
  865. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api.md +1 -1
  866. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +17 -9
  867. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +13 -11
  868. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +8 -4
  869. package/dist/serve/site-ui/docs/pyric-database-reference-api.md +9 -4
  870. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +15 -4
  871. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +21 -4
  872. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +7 -1
  873. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +1 -0
  874. package/dist/serve/site-ui/docs/reference/cli/index.html +4 -3
  875. package/dist/serve/site-ui/docs/reference/cli.md +5 -3
  876. package/dist/serve/site-ui/docs/rules-compat/index.html +150 -49
  877. package/dist/serve/site-ui/docs/rules-compat.md +149 -51
  878. package/dist/serve/site-ui/docs/storage-compat/index.html +20 -20
  879. package/dist/serve/site-ui/docs/storage-compat.md +20 -20
  880. package/dist/serve/site-ui/docs/tutorial/index.html +2 -1
  881. package/dist/serve/site-ui/docs/tutorial.md +2 -1
  882. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  883. package/dist/serve/site-ui/firestore/index.html +1 -1
  884. package/dist/serve/site-ui/rtdb/index.html +1 -1
  885. package/dist/serve/site-ui/settings/index.html +1 -1
  886. package/dist/serve/site-ui/storage/index.html +1 -1
  887. package/dist/serve/site-ui/studio/index.html +1 -1
  888. package/dist/serve/site-ui/traffic/index.html +1 -1
  889. package/dist/serve/vite-ai-config.d.ts +8 -0
  890. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  891. package/dist/serve/vite-ai-config.js +16 -1
  892. package/dist/serve/vite-ai-config.js.map +1 -1
  893. package/dist/serve/vite-functions-development.d.ts +3 -3
  894. package/dist/serve/vite-functions-development.d.ts.map +1 -1
  895. package/dist/serve/vite-functions-development.js +1 -1
  896. package/dist/serve/vite-functions-development.js.map +1 -1
  897. package/dist/serve/vite-generation-bridge.d.ts +2 -2
  898. package/dist/serve/vite-generation-bridge.d.ts.map +1 -1
  899. package/dist/serve/vite-generation-functions.d.ts +3 -3
  900. package/dist/serve/vite-generation-functions.d.ts.map +1 -1
  901. package/dist/serve/vite-generation-functions.js +1 -1
  902. package/dist/serve/vite-generation-functions.js.map +1 -1
  903. package/dist/serve/vite-generation-middleware.d.ts +1 -1
  904. package/dist/serve/vite-generation-middleware.d.ts.map +1 -1
  905. package/dist/serve/vite-generation-middleware.js +36 -1
  906. package/dist/serve/vite-generation-middleware.js.map +1 -1
  907. package/dist/serve/vite-module-swap.d.ts.map +1 -1
  908. package/dist/serve/vite-module-swap.js +8 -0
  909. package/dist/serve/vite-module-swap.js.map +1 -1
  910. package/dist/serve/vite-page-runtime.d.ts.map +1 -1
  911. package/dist/serve/vite-page-runtime.js +7 -1
  912. package/dist/serve/vite-page-runtime.js.map +1 -1
  913. package/dist/serve/vite-rules-source.d.ts +1 -1
  914. package/dist/serve/vite-rules-source.d.ts.map +1 -1
  915. package/dist/serve/vite-rules-source.js +2 -4
  916. package/dist/serve/vite-rules-source.js.map +1 -1
  917. package/dist/serve/vite-sandbox-generation.d.ts +2 -2
  918. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
  919. package/dist/serve/vite-sandbox-generation.js +2 -2
  920. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  921. package/dist/serve/worker/client/auth.d.ts +29 -5
  922. package/dist/serve/worker/client/auth.d.ts.map +1 -1
  923. package/dist/serve/worker/client/auth.js +61 -11
  924. package/dist/serve/worker/client/auth.js.map +1 -1
  925. package/dist/serve/worker/client/clock.d.ts +0 -16
  926. package/dist/serve/worker/client/clock.d.ts.map +1 -1
  927. package/dist/serve/worker/client/clock.js +23 -10
  928. package/dist/serve/worker/client/clock.js.map +1 -1
  929. package/dist/serve/worker/client/firestore-reads.d.ts +12 -5
  930. package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -1
  931. package/dist/serve/worker/client/firestore-reads.js +47 -16
  932. package/dist/serve/worker/client/firestore-reads.js.map +1 -1
  933. package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -1
  934. package/dist/serve/worker/client/firestore-refs.js +4 -14
  935. package/dist/serve/worker/client/firestore-refs.js.map +1 -1
  936. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts.map +1 -1
  937. package/dist/serve/worker/client/rtdb-connection-lifecycle.js +5 -0
  938. package/dist/serve/worker/client/rtdb-connection-lifecycle.js.map +1 -1
  939. package/dist/serve/worker/client/rtdb-snapshots.d.ts +7 -0
  940. package/dist/serve/worker/client/rtdb-snapshots.d.ts.map +1 -1
  941. package/dist/serve/worker/client/rtdb-snapshots.js +25 -1
  942. package/dist/serve/worker/client/rtdb-snapshots.js.map +1 -1
  943. package/dist/serve/worker/client/rtdb-value-validation.d.ts +21 -0
  944. package/dist/serve/worker/client/rtdb-value-validation.d.ts.map +1 -0
  945. package/dist/serve/worker/client/rtdb-value-validation.js +183 -0
  946. package/dist/serve/worker/client/rtdb-value-validation.js.map +1 -0
  947. package/dist/serve/worker/client/rtdb-writes.d.ts.map +1 -1
  948. package/dist/serve/worker/client/rtdb-writes.js +7 -0
  949. package/dist/serve/worker/client/rtdb-writes.js.map +1 -1
  950. package/dist/serve/worker/client/snapshots.d.ts +2 -0
  951. package/dist/serve/worker/client/snapshots.d.ts.map +1 -1
  952. package/dist/serve/worker/client/snapshots.js +13 -7
  953. package/dist/serve/worker/client/snapshots.js.map +1 -1
  954. package/dist/serve/worker/client/websocket-connection.d.ts +6 -0
  955. package/dist/serve/worker/client/websocket-connection.d.ts.map +1 -1
  956. package/dist/serve/worker/client/websocket-connection.js +32 -3
  957. package/dist/serve/worker/client/websocket-connection.js.map +1 -1
  958. package/dist/serve/worker/host/auth-credential-sign-in.d.ts +33 -0
  959. package/dist/serve/worker/host/auth-credential-sign-in.d.ts.map +1 -0
  960. package/dist/serve/worker/host/auth-credential-sign-in.js +70 -0
  961. package/dist/serve/worker/host/auth-credential-sign-in.js.map +1 -0
  962. package/dist/serve/worker/host/auth-reauthentication.js +3 -3
  963. package/dist/serve/worker/host/auth-reauthentication.js.map +1 -1
  964. package/dist/serve/worker/host/rules.d.ts +15 -1
  965. package/dist/serve/worker/host/rules.d.ts.map +1 -1
  966. package/dist/serve/worker/host/rules.js +43 -34
  967. package/dist/serve/worker/host/rules.js.map +1 -1
  968. package/dist/serve/worker/host/staged-sign-in-results.d.ts +24 -0
  969. package/dist/serve/worker/host/staged-sign-in-results.d.ts.map +1 -0
  970. package/dist/serve/worker/host/staged-sign-in-results.js +40 -0
  971. package/dist/serve/worker/host/staged-sign-in-results.js.map +1 -0
  972. package/dist/serve/worker/host/storage.d.ts.map +1 -1
  973. package/dist/serve/worker/host/storage.js +20 -12
  974. package/dist/serve/worker/host/storage.js.map +1 -1
  975. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  976. package/dist/serve/worker/host/subscriptions.js +6 -2
  977. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  978. package/dist/serve/worker/host-auth.d.ts +3 -0
  979. package/dist/serve/worker/host-auth.d.ts.map +1 -1
  980. package/dist/serve/worker/host-auth.js +32 -13
  981. package/dist/serve/worker/host-auth.js.map +1 -1
  982. package/dist/serve/worker/inbound-validation/operation-arguments.d.ts.map +1 -1
  983. package/dist/serve/worker/inbound-validation/operation-arguments.js +27 -14
  984. package/dist/serve/worker/inbound-validation/operation-arguments.js.map +1 -1
  985. package/dist/serve/worker/operation-persistence.d.ts +1 -0
  986. package/dist/serve/worker/operation-persistence.d.ts.map +1 -1
  987. package/dist/serve/worker/operation-persistence.js +1 -0
  988. package/dist/serve/worker/operation-persistence.js.map +1 -1
  989. package/dist/serve/worker/protocol.d.ts +9 -1
  990. package/dist/serve/worker/protocol.d.ts.map +1 -1
  991. package/dist/serve/worker/protocol.js.map +1 -1
  992. package/dist/serve/worker/rtdb-value-equality.d.ts.map +1 -1
  993. package/dist/serve/worker/rtdb-value-equality.js +3 -1
  994. package/dist/serve/worker/rtdb-value-equality.js.map +1 -1
  995. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  996. package/dist/serve/worker/serve-init.js +3 -9
  997. package/dist/serve/worker/serve-init.js.map +1 -1
  998. package/dist/serve/worker-build-lock.d.ts +23 -0
  999. package/dist/serve/worker-build-lock.d.ts.map +1 -0
  1000. package/dist/serve/worker-build-lock.js +179 -0
  1001. package/dist/serve/worker-build-lock.js.map +1 -0
  1002. package/dist/serve/worker-bundle-cache.d.ts +17 -0
  1003. package/dist/serve/worker-bundle-cache.d.ts.map +1 -0
  1004. package/dist/serve/worker-bundle-cache.js +89 -0
  1005. package/dist/serve/worker-bundle-cache.js.map +1 -0
  1006. package/dist/verify/cases.js +7 -3
  1007. package/dist/verify/cases.js.map +1 -1
  1008. package/dist/verify/index.d.ts.map +1 -1
  1009. package/dist/verify/index.js +11 -5
  1010. package/dist/verify/index.js.map +1 -1
  1011. package/package.json +10 -4
  1012. package/src/assurance/.generated/conformance-verdicts.ts +107 -40
  1013. package/src/assurance/capabilities.ts +11 -15
  1014. package/src/bounded-request.ts +66 -7
  1015. package/src/bridge/client/bridge-url.ts +5 -1
  1016. package/src/bridge/client/bridge.ts +19 -3
  1017. package/src/bridge/frame-output.ts +45 -0
  1018. package/src/bridge/protocol.ts +13 -0
  1019. package/src/bridge/server/in-process.ts +57 -17
  1020. package/src/bridge/server/peer.ts +11 -0
  1021. package/src/bridge/server/standalone.ts +29 -107
  1022. package/src/bridge/surface/arguments/sandbox.ts +2 -69
  1023. package/src/bridge/surface/arguments/seed.ts +78 -0
  1024. package/src/bridge/surface/context.ts +26 -37
  1025. package/src/bridge/surface/database-instance-catalog.ts +4 -32
  1026. package/src/bridge/surface/database-instance-project.ts +40 -0
  1027. package/src/bridge/surface/database-instance.ts +4 -4
  1028. package/src/bridge/surface/functions-runtime.ts +5 -5
  1029. package/src/bridge/surface/held-identity.ts +4 -4
  1030. package/src/bridge/surface/manifest.sandbox.generated.ts +137 -0
  1031. package/src/bridge/surface/method-types.ts +61 -7
  1032. package/src/bridge/surface/methods/ai_logic/clearScripts.ts +2 -1
  1033. package/src/bridge/surface/methods/ai_logic/script.ts +2 -1
  1034. package/src/bridge/surface/methods/ai_logic/scripts.ts +2 -1
  1035. package/src/bridge/surface/methods/ai_logic/status.ts +1 -0
  1036. package/src/bridge/surface/methods/assurance/attach.ts +1 -0
  1037. package/src/bridge/surface/methods/assurance/canIUse.ts +1 -0
  1038. package/src/bridge/surface/methods/assurance/define.ts +1 -0
  1039. package/src/bridge/surface/methods/assurance/export.ts +1 -0
  1040. package/src/bridge/surface/methods/assurance/inspect.ts +1 -0
  1041. package/src/bridge/surface/methods/assurance/map.ts +1 -0
  1042. package/src/bridge/surface/methods/assurance/minimize.ts +1 -0
  1043. package/src/bridge/surface/methods/assurance/propose.ts +1 -0
  1044. package/src/bridge/surface/methods/assurance/replaySession.ts +1 -0
  1045. package/src/bridge/surface/methods/assurance/run.ts +1 -0
  1046. package/src/bridge/surface/methods/assurance/start.ts +1 -0
  1047. package/src/bridge/surface/methods/assurance/testRulesHosted.ts +1 -0
  1048. package/src/bridge/surface/methods/assurance/verify.ts +1 -0
  1049. package/src/bridge/surface/methods/assurance/verifyCases.ts +1 -0
  1050. package/src/bridge/surface/methods/auth/actAsAdmin.ts +1 -0
  1051. package/src/bridge/surface/methods/auth/actAsAnonymous.ts +1 -0
  1052. package/src/bridge/surface/methods/auth/createCustomToken.ts +1 -0
  1053. package/src/bridge/surface/methods/auth/createUser.ts +2 -1
  1054. package/src/bridge/surface/methods/auth/deleteUser.ts +2 -1
  1055. package/src/bridge/surface/methods/auth/getUser.ts +2 -1
  1056. package/src/bridge/surface/methods/auth/getUserByEmail.ts +2 -1
  1057. package/src/bridge/surface/methods/auth/impersonate.ts +1 -0
  1058. package/src/bridge/surface/methods/auth/importUsers.ts +3 -2
  1059. package/src/bridge/surface/methods/auth/listUsers.ts +2 -1
  1060. package/src/bridge/surface/methods/auth/sessions.ts +1 -0
  1061. package/src/bridge/surface/methods/auth/setCustomUserClaims.ts +2 -1
  1062. package/src/bridge/surface/methods/auth/signInAnonymously.ts +1 -0
  1063. package/src/bridge/surface/methods/auth/signInWithCredential.ts +1 -0
  1064. package/src/bridge/surface/methods/auth/signInWithCustomToken.ts +1 -0
  1065. package/src/bridge/surface/methods/auth/signInWithEmailAndPassword.ts +1 -0
  1066. package/src/bridge/surface/methods/auth/signOut.ts +1 -0
  1067. package/src/bridge/surface/methods/auth/takeAuthMail.ts +1 -0
  1068. package/src/bridge/surface/methods/auth/updateUser.ts +2 -1
  1069. package/src/bridge/surface/methods/auth/useAppSession.ts +1 -0
  1070. package/src/bridge/surface/methods/auth/whoami.ts +1 -0
  1071. package/src/bridge/surface/methods/database/crawl.ts +1 -0
  1072. package/src/bridge/surface/methods/database/get.ts +1 -0
  1073. package/src/bridge/surface/methods/database/push.ts +1 -0
  1074. package/src/bridge/surface/methods/database/query.ts +1 -0
  1075. package/src/bridge/surface/methods/database/remove.ts +1 -0
  1076. package/src/bridge/surface/methods/database/set.ts +1 -0
  1077. package/src/bridge/surface/methods/database/update.ts +1 -0
  1078. package/src/bridge/surface/methods/firestore/addDoc.ts +2 -1
  1079. package/src/bridge/surface/methods/firestore/deleteDoc.ts +2 -1
  1080. package/src/bridge/surface/methods/firestore/discoverPaths.ts +1 -0
  1081. package/src/bridge/surface/methods/firestore/extractIndexes.ts +1 -0
  1082. package/src/bridge/surface/methods/firestore/findCollectionGroup.ts +1 -0
  1083. package/src/bridge/surface/methods/firestore/getAggregateFromServer.ts +1 -0
  1084. package/src/bridge/surface/methods/firestore/getCountFromServer.ts +1 -0
  1085. package/src/bridge/surface/methods/firestore/getDoc.ts +2 -1
  1086. package/src/bridge/surface/methods/firestore/getDocs.ts +2 -1
  1087. package/src/bridge/surface/methods/firestore/setDoc.ts +2 -1
  1088. package/src/bridge/surface/methods/firestore/updateDoc.ts +2 -1
  1089. package/src/bridge/surface/methods/firestore/writeBatch.ts +2 -1
  1090. package/src/bridge/surface/methods/firestore/writeIndexes.ts +1 -0
  1091. package/src/bridge/surface/methods/functions/executions.ts +2 -1
  1092. package/src/bridge/surface/methods/functions/fire.ts +7 -6
  1093. package/src/bridge/surface/methods/functions/listTriggers.ts +1 -0
  1094. package/src/bridge/surface/methods/messaging/deliveries.ts +1 -0
  1095. package/src/bridge/surface/methods/messaging/send.ts +2 -1
  1096. package/src/bridge/surface/methods/messaging/subscribeToTopic.ts +1 -0
  1097. package/src/bridge/surface/methods/messaging/tokens.ts +1 -0
  1098. package/src/bridge/surface/methods/messaging/unsubscribeFromTopic.ts +1 -0
  1099. package/src/bridge/surface/methods/registry.ts +2 -12
  1100. package/src/bridge/surface/methods/rules/explainDenial.ts +1 -0
  1101. package/src/bridge/surface/methods/rules/getStdlib.ts +1 -0
  1102. package/src/bridge/surface/methods/rules/lint.ts +1 -0
  1103. package/src/bridge/surface/methods/rules/listStdlib.ts +1 -0
  1104. package/src/bridge/surface/methods/rules/set.ts +1 -0
  1105. package/src/bridge/surface/methods/rules/simulate.ts +1 -0
  1106. package/src/bridge/surface/methods/sandbox/activity.ts +2 -1
  1107. package/src/bridge/surface/methods/sandbox/advanceClock.ts +1 -0
  1108. package/src/bridge/surface/methods/sandbox/apply.ts +1 -0
  1109. package/src/bridge/surface/methods/sandbox/checkpoint.ts +1 -0
  1110. package/src/bridge/surface/methods/sandbox/deleteCapture.ts +1 -1
  1111. package/src/bridge/surface/methods/sandbox/deleteCheckpoint.ts +1 -0
  1112. package/src/bridge/surface/methods/sandbox/diff.ts +1 -0
  1113. package/src/bridge/surface/methods/sandbox/discard.ts +1 -0
  1114. package/src/bridge/surface/methods/sandbox/events.ts +2 -1
  1115. package/src/bridge/surface/methods/sandbox/exportFixture.ts +1 -0
  1116. package/src/bridge/surface/methods/sandbox/fork.ts +1 -0
  1117. package/src/bridge/surface/methods/sandbox/inspect.ts +2 -1
  1118. package/src/bridge/surface/methods/sandbox/listBranches.ts +1 -0
  1119. package/src/bridge/surface/methods/sandbox/listCaptures.ts +1 -1
  1120. package/src/bridge/surface/methods/sandbox/listCheckpoints.ts +1 -0
  1121. package/src/bridge/surface/methods/sandbox/listeners.ts +1 -0
  1122. package/src/bridge/surface/methods/sandbox/openCapture.ts +1 -1
  1123. package/src/bridge/surface/methods/sandbox/promote.ts +1 -0
  1124. package/src/bridge/surface/methods/sandbox/renameCapture.ts +1 -1
  1125. package/src/bridge/surface/methods/sandbox/reset.ts +3 -2
  1126. package/src/bridge/surface/methods/sandbox/resetClock.ts +1 -0
  1127. package/src/bridge/surface/methods/sandbox/restore.ts +1 -0
  1128. package/src/bridge/surface/methods/sandbox/saveCapture.ts +1 -1
  1129. package/src/bridge/surface/methods/sandbox/seed.ts +3 -2
  1130. package/src/bridge/surface/methods/sandbox/seedFromFixture.ts +1 -0
  1131. package/src/bridge/surface/methods/sandbox/setClock.ts +1 -0
  1132. package/src/bridge/surface/methods/sandbox-registry.ts +24 -0
  1133. package/src/bridge/surface/methods/storage/deleteObject.ts +1 -0
  1134. package/src/bridge/surface/methods/storage/getBytes.ts +1 -0
  1135. package/src/bridge/surface/methods/storage/getDownloadURL.ts +1 -0
  1136. package/src/bridge/surface/methods/storage/getMetadata.ts +1 -0
  1137. package/src/bridge/surface/methods/storage/listAll.ts +1 -0
  1138. package/src/bridge/surface/methods/storage/provision.ts +1 -0
  1139. package/src/bridge/surface/methods/storage/setCrossServiceIam.ts +1 -0
  1140. package/src/bridge/surface/methods/storage/status.ts +1 -0
  1141. package/src/bridge/surface/methods/storage/updateMetadata.ts +1 -0
  1142. package/src/bridge/surface/methods/storage/uploadBytes.ts +1 -0
  1143. package/src/bridge/surface/request-instant.ts +2 -2
  1144. package/src/bridge/surface/rules-engines/database.ts +1 -2
  1145. package/src/bridge/surface/rules-engines/storage-request-resource.ts +275 -0
  1146. package/src/bridge/surface/rules-engines/storage.ts +54 -81
  1147. package/src/bridge/surface/sandbox-context.ts +49 -0
  1148. package/src/bridge/surface/service-handles.ts +13 -9
  1149. package/src/bridge/surface/sign-in.ts +3 -3
  1150. package/src/bridge/surface/storage-rules.ts +2 -14
  1151. package/src/bridge/surface/stored-identity.ts +3 -3
  1152. package/src/bridge/surface/types.ts +30 -8
  1153. package/src/cli/firebase-json.ts +45 -7
  1154. package/src/cli/firestore-indexes.ts +2 -1
  1155. package/src/cli/index.ts +46 -11
  1156. package/src/cli/public-dir-hint.ts +35 -0
  1157. package/src/cli/run.ts +35 -7
  1158. package/src/cli/sandbox-runner.ts +10 -2
  1159. package/src/cli/serve-diagnostics.ts +12 -1
  1160. package/src/cli/serve.ts +27 -26
  1161. package/src/cli/service-commands.test.ts +7 -0
  1162. package/src/cli/snapshot.ts +15 -6
  1163. package/src/cli/surface-method-runner.ts +1 -1
  1164. package/src/cli/verify.ts +11 -1
  1165. package/src/conformance/.generated/can-i-use-browser.ts +22 -3
  1166. package/src/conformance/.generated/can-i-use.ts +1 -1
  1167. package/src/conformance/.generated/conformance-docs.ts +1 -1
  1168. package/src/conformance/.generated/served-availability.ts +1 -1
  1169. package/src/discover/merge.ts +12 -3
  1170. package/src/functions/child-protocol.ts +59 -0
  1171. package/src/functions/child.ts +107 -0
  1172. package/src/{functions-rtdb → functions}/development-runtime.ts +13 -14
  1173. package/src/functions/endpoints.ts +80 -0
  1174. package/src/{functions-rtdb → functions}/project.ts +2 -2
  1175. package/src/functions/rtdb/child-runtime.ts +139 -0
  1176. package/src/{functions-rtdb → functions/rtdb}/discovery.ts +9 -43
  1177. package/src/{functions-rtdb → functions/rtdb}/remote-delivery.ts +1 -1
  1178. package/src/functions/spawn.ts +212 -0
  1179. package/src/functions/unsupported.ts +42 -0
  1180. package/src/google-endpoints.ts +74 -3
  1181. package/src/next/bridge-import-loader.ts +56 -0
  1182. package/src/next/bridge-imports.ts +108 -0
  1183. package/src/next/client-aliases.ts +14 -27
  1184. package/src/next/guard.ts +33 -11
  1185. package/src/next/turbopack-config.ts +26 -0
  1186. package/src/next/webpack-config.ts +26 -0
  1187. package/src/next/with-pyric.ts +26 -0
  1188. package/src/register/activation.ts +26 -0
  1189. package/src/register/app-bridge-admin-app-check.ts +3 -1
  1190. package/src/register/child-process-guard.ts +189 -0
  1191. package/src/register/client/bootstrap.ts +7 -1
  1192. package/src/register/connect-prototypes.ts +12 -0
  1193. package/src/register/hooks.ts +56 -3
  1194. package/src/register/index.ts +92 -20
  1195. package/src/register/mapping.ts +57 -3
  1196. package/src/register/net-guard.ts +149 -39
  1197. package/src/register/package-identity.ts +98 -0
  1198. package/src/register/swap-or-stop.ts +194 -0
  1199. package/src/register/worker-guard.ts +90 -0
  1200. package/src/remote/resolve-host.ts +14 -2
  1201. package/src/serve/ai-proxy.ts +36 -8
  1202. package/src/serve/app-ports.ts +119 -0
  1203. package/src/serve/bridge-mount.ts +36 -8
  1204. package/src/serve/bundler.ts +87 -29
  1205. package/src/serve/discovery.ts +244 -67
  1206. package/src/serve/entries/auth.ts +22 -1
  1207. package/src/serve/entries/firestore-surface.ts +1 -0
  1208. package/src/serve/entries/init-payload.ts +28 -5
  1209. package/src/serve/entries/moved-host.ts +28 -0
  1210. package/src/serve/entries/runtime-origin.ts +6 -0
  1211. package/src/serve/entries/unsupported/firestore.ts +0 -1
  1212. package/src/serve/entries/worker-runtime.ts +19 -6
  1213. package/src/serve/firebase-module-swap.ts +98 -15
  1214. package/src/serve/gemini-proxy.ts +2 -2
  1215. package/src/serve/hosted/runtime.ts +10 -2
  1216. package/src/serve/namespace.ts +41 -29
  1217. package/src/serve/repro/compare.ts +9 -1
  1218. package/src/serve/rules-fixture-check.ts +34 -9
  1219. package/src/serve/rules.ts +104 -20
  1220. package/src/serve/sandbox-session.ts +11 -3
  1221. package/src/serve/server.ts +29 -2
  1222. package/src/serve/vite-ai-config.ts +19 -1
  1223. package/src/serve/vite-functions-development.ts +3 -3
  1224. package/src/serve/vite-generation-bridge.ts +2 -2
  1225. package/src/serve/vite-generation-functions.ts +5 -5
  1226. package/src/serve/vite-generation-middleware.ts +38 -2
  1227. package/src/serve/vite-module-swap.ts +8 -0
  1228. package/src/serve/vite-page-runtime.ts +6 -0
  1229. package/src/serve/vite-rules-source.ts +2 -5
  1230. package/src/serve/vite-sandbox-generation.ts +5 -5
  1231. package/src/serve/worker/__tests__/auth-credential-sign-in.test.ts +343 -0
  1232. package/src/serve/worker/__tests__/auth-m2-parity.test.ts +45 -1
  1233. package/src/serve/worker/__tests__/staged-sign-in-results.test.ts +139 -0
  1234. package/src/serve/worker/client/auth.ts +97 -21
  1235. package/src/serve/worker/client/clock.ts +10 -12
  1236. package/src/serve/worker/client/firestore-reads.ts +70 -21
  1237. package/src/serve/worker/client/firestore-refs.ts +4 -14
  1238. package/src/serve/worker/client/rtdb-connection-lifecycle.ts +5 -0
  1239. package/src/serve/worker/client/rtdb-snapshots.ts +24 -2
  1240. package/src/serve/worker/client/rtdb-value-validation.ts +198 -0
  1241. package/src/serve/worker/client/rtdb-writes.ts +7 -0
  1242. package/src/serve/worker/client/snapshots.ts +15 -6
  1243. package/src/serve/worker/client/websocket-connection.ts +39 -3
  1244. package/src/serve/worker/host/auth-credential-sign-in.ts +97 -0
  1245. package/src/serve/worker/host/auth-reauthentication.ts +3 -3
  1246. package/src/serve/worker/host/rules.ts +53 -34
  1247. package/src/serve/worker/host/staged-sign-in-results.ts +53 -0
  1248. package/src/serve/worker/host/storage.ts +26 -11
  1249. package/src/serve/worker/host/subscriptions.ts +7 -4
  1250. package/src/serve/worker/host-auth.ts +33 -15
  1251. package/src/serve/worker/inbound-validation/operation-arguments.ts +27 -14
  1252. package/src/serve/worker/operation-persistence.ts +1 -0
  1253. package/src/serve/worker/protocol.ts +7 -1
  1254. package/src/serve/worker/rtdb-value-equality.ts +3 -1
  1255. package/src/serve/worker/serve-init.ts +3 -9
  1256. package/src/serve/worker-build-lock.ts +207 -0
  1257. package/src/serve/worker-bundle-cache.ts +90 -0
  1258. package/src/verify/cases.ts +6 -3
  1259. package/src/verify/index.ts +16 -4
  1260. package/dist/functions-rtdb/child.d.ts.map +0 -1
  1261. package/dist/functions-rtdb/child.js +0 -386
  1262. package/dist/functions-rtdb/child.js.map +0 -1
  1263. package/dist/functions-rtdb/delivery.d.ts.map +0 -1
  1264. package/dist/functions-rtdb/delivery.js.map +0 -1
  1265. package/dist/functions-rtdb/development-runtime.d.ts.map +0 -1
  1266. package/dist/functions-rtdb/development-runtime.js.map +0 -1
  1267. package/dist/functions-rtdb/discovery.d.ts.map +0 -1
  1268. package/dist/functions-rtdb/discovery.js.map +0 -1
  1269. package/dist/functions-rtdb/event.d.ts.map +0 -1
  1270. package/dist/functions-rtdb/event.js.map +0 -1
  1271. package/dist/functions-rtdb/events.d.ts.map +0 -1
  1272. package/dist/functions-rtdb/events.js.map +0 -1
  1273. package/dist/functions-rtdb/execution-log.d.ts.map +0 -1
  1274. package/dist/functions-rtdb/execution-log.js.map +0 -1
  1275. package/dist/functions-rtdb/execution.d.ts.map +0 -1
  1276. package/dist/functions-rtdb/execution.js.map +0 -1
  1277. package/dist/functions-rtdb/in-memory-delivery.d.ts.map +0 -1
  1278. package/dist/functions-rtdb/in-memory-delivery.js.map +0 -1
  1279. package/dist/functions-rtdb/module-loader.d.ts.map +0 -1
  1280. package/dist/functions-rtdb/module-loader.js.map +0 -1
  1281. package/dist/functions-rtdb/project.d.ts +0 -7
  1282. package/dist/functions-rtdb/project.d.ts.map +0 -1
  1283. package/dist/functions-rtdb/project.js.map +0 -1
  1284. package/dist/functions-rtdb/projection.d.ts.map +0 -1
  1285. package/dist/functions-rtdb/projection.js.map +0 -1
  1286. package/dist/functions-rtdb/reference-pattern.d.ts.map +0 -1
  1287. package/dist/functions-rtdb/reference-pattern.js.map +0 -1
  1288. package/dist/functions-rtdb/remote-delivery.d.ts.map +0 -1
  1289. package/dist/functions-rtdb/remote-delivery.js.map +0 -1
  1290. package/dist/serve/gemini-error-redaction.d.ts +0 -6
  1291. package/dist/serve/gemini-error-redaction.d.ts.map +0 -1
  1292. package/dist/serve/gemini-error-redaction.js +0 -61
  1293. package/dist/serve/gemini-error-redaction.js.map +0 -1
  1294. package/dist/serve/site-ui/_astro/app.C--T2qDK.js +0 -151
  1295. package/dist/serve/site-ui/_astro/app.DqyhRyrU.js +0 -1
  1296. package/dist/serve/site-ui/_astro/sandbox-controls.Bv6lfpIe.js +0 -1725
  1297. package/dist/serve/site-ui/_astro/writes.Bg0YEEA7.js +0 -1
  1298. package/src/functions-rtdb/child.ts +0 -512
  1299. package/src/serve/gemini-error-redaction.ts +0 -60
  1300. /package/dist/{functions-rtdb → functions}/events.d.ts +0 -0
  1301. /package/dist/{functions-rtdb → functions}/events.js +0 -0
  1302. /package/dist/{functions-rtdb → functions}/execution-log.d.ts +0 -0
  1303. /package/dist/{functions-rtdb → functions}/execution-log.js +0 -0
  1304. /package/dist/{functions-rtdb → functions}/module-loader.d.ts +0 -0
  1305. /package/dist/{functions-rtdb → functions}/module-loader.js +0 -0
  1306. /package/dist/{functions-rtdb → functions/rtdb}/delivery.d.ts +0 -0
  1307. /package/dist/{functions-rtdb → functions/rtdb}/delivery.js +0 -0
  1308. /package/dist/{functions-rtdb → functions/rtdb}/event.d.ts +0 -0
  1309. /package/dist/{functions-rtdb → functions/rtdb}/event.js +0 -0
  1310. /package/dist/{functions-rtdb → functions/rtdb}/execution.d.ts +0 -0
  1311. /package/dist/{functions-rtdb → functions/rtdb}/execution.js +0 -0
  1312. /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.d.ts +0 -0
  1313. /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.js +0 -0
  1314. /package/dist/{functions-rtdb → functions/rtdb}/projection.d.ts +0 -0
  1315. /package/dist/{functions-rtdb → functions/rtdb}/projection.js +0 -0
  1316. /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.d.ts +0 -0
  1317. /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.js +0 -0
  1318. /package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.js +0 -0
  1319. /package/src/{functions-rtdb → functions}/events.ts +0 -0
  1320. /package/src/{functions-rtdb → functions}/execution-log.ts +0 -0
  1321. /package/src/{functions-rtdb → functions}/module-loader.ts +0 -0
  1322. /package/src/{functions-rtdb → functions/rtdb}/delivery.ts +0 -0
  1323. /package/src/{functions-rtdb → functions/rtdb}/event.ts +0 -0
  1324. /package/src/{functions-rtdb → functions/rtdb}/execution.ts +0 -0
  1325. /package/src/{functions-rtdb → functions/rtdb}/in-memory-delivery.ts +0 -0
  1326. /package/src/{functions-rtdb → functions/rtdb}/projection.ts +0 -0
  1327. /package/src/{functions-rtdb → functions/rtdb}/reference-pattern.ts +0 -0
@@ -6,9 +6,28 @@ export type Availability = 'available' | 'unavailable' | 'deferred' | 'out-of-sc
6
6
  export type Fidelity = 'conforms' | 'diverged' | 'bug' | 'unsupported' | 'unverified' | 'not-applicable';
7
7
  export type Assurance = 'eligible' | 'qualified' | 'ineligible' | 'not-applicable';
8
8
  export interface BrowserFeatureSupport { feature: string; surface: DeveloperSurface; importPaths: readonly string[]; evidenceSlug: string; availability: Availability; fidelity: Fidelity; assurance: Assurance; summary: string; caveats: readonly string[]; }
9
- const CAVEAT_TEXT: readonly string[] = ["Attaches a callback invoked when all active snapshot listeners synchronize.","FirebaseFirestore Swift specification; unverified locally.","When a target device is offline FCM stores the message and delivers it on reconnect, up to its time-to-live (`android.ttl`, APNs expiration, webpush `headers.TTL`; the legacy default is 2419200 seconds / four weeks). A collapse key (`android.collapseKey`, `collapseKey`) marks a message as collapsible so a newer collapsible message replaces an older still-undelivered one, and only the last is delivered on reconnect; a message whose TTL elapses before reconnect is dropped rather than delivered. Stated from FCM message-lifecycle documentation; no committed observation replays store-and-forward, collapse, or TTL expiry yet.","Upstream documentation (FCM message lifecycle: TTL, collapse keys, store-and-forward); no observation yet. Candidate probe: send several collapsible messages to a token whose web client is offline, bring it online within TTL, and assert only the last collapsible message is delivered; separately, let a short-TTL message expire before reconnect and assert it is dropped.","Public type export is not mirrored.","`sandbox.setUser` (the sandbox-only test driver) BYPASSES the gate entirely — it is a raw identity force with no prod analog (same bypass it already has for provider enforcement / `signInProvider` tracking), so no registered `beforeAuthStateChanged` callback runs and none can block it.","`unit:sandbox-before-auth-state-changed.test.ts` (\"sandbox.setUser test driver bypasses the gate\")","Served-worker path (SharedWorker-backed auth in `@pyric/cli`): the worker owns the shared user pool and commits transitions on its own side of the port, so a page-local `beforeAuthStateChanged` registration can't actually gate a worker-driven sign-in. Rather than silently accept a callback that could never run, registering THROWS immediately (`auth/operation-not-supported-in-this-environment`) — same defensive pattern as `signInWithCredential` over the worker.","`packages/cli/src/serve/worker/client.ts` (`beforeAuthStateChanged` throws `makeUnsupported`)","Inert configuration tokens, accepted so the idiomatic `initializeAuth(app, { persistence: indexedDBLocalPersistence })` and `setPersistence(auth, browserCookiePersistence)` compile, run, and behave identically. The `.type` discriminant matches upstream exactly (`NONE` / `SESSION` / `LOCAL` / `LOCAL` / `COOKIE`) because consumer code branches on it. `browserPopupRedirectResolver` is accepted and ignored — the sandbox has its own first-class pluggable equivalent (`sandbox.setAuthFlowResolver`). `prodErrorMap` is accepted and DELIBERATELY not honored: installing it upstream strips error messages, and doing that in a sandbox whose purpose is to tell a developer what went wrong would be actively hostile.","In an in-memory sandbox the persistence CHOICE has no observable consequence, so accepting the token and recording the mode is the honest behavior — the same inert-token pattern `pyric/firestore` uses for its cache-factory tokens. `unit:types.test.ts` + `unit:sandbox-email-link.test.ts` cover the exports. Oracle caveat recorded on auth#172: the `persistenceTypes` block of `auth-mechanical-surface-constants` reports `NONE` for every token including `browserLocalPersistence` — a Node-build stub artifact, not the browser contract, so the `.type` values here follow the documented `Persistence.type` union instead.","Deletes every file `getFiles` would list across its pages, up to `maxResults`, ten at a time, and leaves the others. Without `force` the first failed delete rejects the call; with `force` every file is tried and the call rejects with the array of errors","`bucket-listing.test.ts` pins `force` as `@google-cloud/storage` 7.21 `Bucket.deleteFiles` defines it: the first error without it, the array of errors with it. `bucket-files.test.ts` deletes a prefix on the in-process arm and on a SharedWorker host, and leaves other prefixes and buckets. The app scenario `admin-storage-delete-prefix` deletes a prefix from a firebase-admin backend under `pyric sandbox --hosted` and finds the other objects still there.","Lists the files whose names start with `prefix`, in name order, as `[files, nextQuery, apiResponse]`. `delimiter` rolls names up into `apiResponse.prefixes`. `maxResults` or `autoPaginate: false` gives one page and the next page's query, or `null` on the last page; reading every page gives the call's own query in that position. `apiResponse` has no `items`, and the files carry no `metadata` until `getMetadata`","`bucket-listing.test.ts` pins prefix, delimiter, page, and result-tuple semantics as `@google-cloud/storage` 7.21 `Bucket.getFiles` and `@google-cloud/paginator` 5 `run_` define them. `bucket-files.test.ts` runs the same queries on the in-process arm and on a SharedWorker host. The app scenario `admin-storage-delete-prefix` calls `getFiles({ prefix })` from a firebase-admin backend under `pyric sandbox --hosted`. The remote arms read names with the host's `storage.listAll`, one folder at a time.","Clears offline client persistence cache when no active listeners exist.","cloud_firestore_platform_interface specification; unverified locally.","com.google.firebase.firestore specification; unverified locally.","No-op on sandbox-target handles (the sandbox IS the local emulator)","Phase 3","A production target is intentionally absent; production code continues to use `connectDatabaseEmulator` from the unchanged `firebase/database` package","Exported by `firebase/storage`; reroutes a `FirebaseStorage` handle to a local emulator","not implemented in `pyric/storage` — the sandbox IS the local-target alternative; emulator parity is out of scope per `index.ts`","Aggregates count documents server-side without paying read cost per doc in prod; sandbox computes locally (no cost model)","divergence: cost behavior differs, observable shape identical. Oracle-locked: `packages/conformance/observations/firestore/firestore-count-aggregate-shape.json` — `getCountFromServer().data()` returns `{ count: <number> }` (single key, no other fields). Empty query returns `count: 0` (not `null`/`undefined`); seeded 3 docs returns `count: 3`; filtered query honors the `where` constraint (`count: 2`).","Production: an app id the project does not own rejects with `app-check/unknown-error` and the message `App not registered: <appId>.` Sandbox: it has no list of the project's registered apps, so it mints a token for any non-empty app id; an empty app id rejects with `app-check/invalid-argument`.","capture `app-check-admin-create-token-unknown-app`; the sandbox side is pinned in the admin suite.","An app initialized with only a cert credential finds its project in the service account's `project_id` (or `projectId`), so `createToken` mints a token whose `aud` names `projects/<project_id>` and `verifyToken` accepts it. The `projectId` app option wins over the credential, and the credential wins over `GOOGLE_CLOUD_PROJECT` and `GCLOUD_PROJECT`. The project id is not copied into `app.options`.","Upstream-documented only: firebase-admin 13.6.0 `lib/utils/index.js` (`getExplicitProjectId`) and `lib/app/credential-internal.js` (`ServiceAccount`, `copyAttr`). No capture; the project is resolved locally in the Admin SDK.","Returns a distinct Database handle for each database URL; production isolates the data and rules of each URL's database.","FirebaseDatabase Swift specification. The test asserts the handle carries its URL; bridge operations carry no instance field. Swift test: `packages/swift-client/Tests/PyricDatabaseTests/RtdbConformanceTests.swift` assertion set `rtdb-swift#instance-url`.","Production permits a different configuration after deletion; Pyric retains the runtime backend lock and rejects the reinitialization","oracle: `app-registry-delete-reinitialize-different-config` (firebase 12.13.0) + replay pins `app/multiple-configs-not-supported`","Served worker mode rejects page-local custom AnswerEngine objects; a model retained from a deleted app rejects, while an equal-config sibling model remains usable through its own app-scoped worker port","`packages/cli/test/e2e/app-deletion.pw.ts` observes AI code `unsupported` for a custom engine, then exercises retained and sibling models through canonical served imports after deleting one app; `packages/pyric/src/ai/sandbox-plane.ts` guards every model operation. A credentialed production AI lifecycle capture is still needed","Sandbox: no-op on missing path (does NOT throw)","divergence: sandbox is no-op via `persistence.ts`'s `delete`. Prod's `deleteObject` on a missing path throws `storage/object-not-found`. Oracle-locked: `packages/conformance/observations/storage/storage-delete-missing-throws.json` (`code: 'storage/object-not-found'`, `name: 'FirebaseError'` against blockingfun, fb-js-sdk 12.13.0). Both sides pinned in `oracle-conformance.test.ts`; documented in `download.ts`.","A registration token is stable within a session (row messaging#2 pins that repeated `getToken` calls on one service-worker registration return the same token) but is not permanent across the app lifecycle: the SDK rotates it on events such as app reinstall, SDK upgrade, a restored backup, or a notification-permission change, and Google may retire a token server-side. The modular web SDK has no token-refresh callback, so an app observes a new token only by calling `getToken` again; a rotated-away old token eventually stops delivering and the send plane reports the dead token (the UNREGISTERED path pinned by messaging#3). This lifecycle rotation is deliberately outside the within-session stability observation. Stated from FCM token-management documentation; no committed observation replays rotation across lifecycle events yet.","Upstream documentation (FCM token-management guidance); the committed `messaging-web-token-stability` observation covers only within-session stability, not lifecycle rotation. Candidate probe (long-horizon): force a service-worker unregister/re-register or an app-instance reset, re-mint via `getToken`, and record whether the token changed and whether the prior token then reports UNREGISTERED on send.","Toggles client network connectivity to simulate offline operation.","Toggles client network connectivity to simulate offline and online operation.","duration.abs(duration): the absolute value of a Duration.","duration.time(hours, minutes, seconds, nanos): a Duration value.","duration.value(magnitude, unit): a Duration value. A timestamp plus a duration is a timestamp, which makes the freshness idiom `request.time < resource.timeCreated + duration.value(1, 'h')` work.","Custom scopes / params / language code","sandbox ignores; prod forwards","The admin SDK retries transient send-transport failures — connection errors and HTTP 5xx / `SERVER_UNAVAILABLE` / `INTERNAL` responses — with backoff before surfacing the error to the caller, so a caller sees a resolved send or a terminal error rather than every intermediate failure. `enableLegacyHttpTransport` switches `sendEach` / `sendEachForMulticast` from HTTP/2 to HTTP/1.1, changing multiplexing and the retry/transport path. Stated from the admin SDK and google-auth transport documentation; no committed observation replays the retry count or backoff schedule yet.","Upstream documentation (firebase-admin 13.10.0 send transport + google-auth retry defaults); no observation yet. Candidate probe: point the send transport at a fault-injecting stub that returns 503 then 200 and record the retry count and backoff intervals before the resolved send.","`enableLogging(logger?, persistent?)` — accepted no-op: the sandbox has no modular-SDK-style logger to wire a level/sink into (it uses host-level `console` logging directly, matching `pyric/firestore`'s `setLogLevel`). Accepted so init code that calls it compiles + runs","`unit:modular/fruit-aliases.test.ts`","CEL types the top-level `allow` condition as bool: a non-boolean result is an evaluation error that denies the rule and lets the walk continue to the next rule, rather than a JavaScript truthiness coercion","BORN UNVERIFIED, 2026-09-08: the local evaluator follows CEL's boolean typing of the allow boundary and the pinned Firestore capture `oracle:rules-firestore-strict-boolean-control-flow`, which records production denying three direct non-boolean conditions under `cloud.firestore` (registry row #188). No Storage capture pins the same position under `firebase.storage` yet. Corpus scenario `strict-boolean-allow-and-ternary` is the capture that would verify this row; `unit:storage/sandbox/rules-evaluator.test.ts` pins the local behavior in the meantime.","CEL types a ternary CONDITION as bool: a non-boolean condition produces an evaluation error that propagates like any other rules error, so `|| true` and a negated `&& false` both absorb it","BORN UNVERIFIED, 2026-09-08: the local evaluator follows CEL's boolean typing of the ternary condition and the pinned Firestore capture `oracle:rules-firestore-strict-boolean-control-flow`, whose three tautological error discriminators still DENY under `cloud.firestore` (registry row #188). No Storage capture pins the same position under `firebase.storage` yet. Corpus scenario `strict-boolean-allow-and-ternary` consumes the error through `|| true` and `!(… && false)` and is the capture that would verify this row; `unit:storage/sandbox/rules-evaluator.test.ts` pins the local behavior in the meantime.","The hosted Rules Test API reports function-not-found, so acceptance and evaluation are verified by authenticated Web SDK writes against temporarily deployed production rules with exact release restoration.","Deprecated upstream as a security retraction, not a cosmetic one: the shipped @firebase/auth declaration states it \"returns an empty list when Email Enumeration Protection is enabled, irrespective of the number of authentication methods available\", and that \"migrating off of this method is recommended as a security best-practice\". Enumeration protection is on by default, so against a modern project the production function always returns []. A mirror that reproduced the pre-deprecation behavior would be MORE capable than prod and would silently mislead agent code that branches on the result; a mirror that reproduced the post-deprecation behavior would be a no-op. Same criterion applied to Imagen in firebase/ai — an API whose production counterpart is retiring is out of scope, because mirroring it freezes dead behavior.","Not implemented; disposition `auth.email-enumeration` owns the reviewed availability and rationale.","disposition:auth.email-enumeration; the `auth-fetchsigninmethodsforemail-deprecated` capture is retained but inconclusive because the oracle project's Email/Password provider is disabled.","Removing `firebaseStorageDownloadTokens` revokes the download URL: a `GET` of it answers 403, and the next `getDownloadURL` mints a new token whose URL answers 200","Production observation `admin-storage-metadata-download-url` records `revocation`: `tokenRemoved: true`, `revokedUrlStatus: 403`, `getDownloadURLAfterRevoke.mintsNewToken: true`, `newUrlStatus: 200`. On the Node host the hosted replay matches all four. In process and on a SharedWorker host there is no HTTP origin, so a download URL is a `data:<contentType>;base64,...` URI that carries the bytes; removing the token and minting another match, but a `data:` URI cannot be revoked and still resolves, which the pyric-admin conformance suite pins beside the production status.","Mocked Storage-to-Firestore lookup evaluation: get/exists return and missing-field errors, repeated and same-resolved-path calls, get+exists composition, and lazy `||`/`&&`/ternary branches with hosted function-call diagnostics","DOCUMENTED MOCK-ORACLE DIVERGENCE, 2026-07-21: `oracle:rules-storage-firestore-lookup-budget` matches the local evaluator on 13 of 14 cases and hosted diagnostics prove lazy branches omit lookup calls. The one mismatch is intentional and pinned on both sides: the Rules Test API ALLOWs three distinct mocked exists calls, while the evaluator DENYs the third distinct path to match the separately captured real-resource production contract in row #131. This row remains diverged because its mocked observation is not verdict-identical; it supplies no budget credit.","Discrepancy: firestore.exists() — same standalone limitation as firestore.get(); resolved only with an injected FirestoreLookup, otherwise denies-with-reason.","Discrepancy: firestore.get() is in the official Storage rules language, but the standalone evaluator only resolves it when the enforcement layer injects a FirestoreLookup; the pure/test evaluator denies-with-reason (cross-document lookups are out of the standalone subset).","Returns a distinct handle per named database for the specified FirebaseApp; production isolates the documents and rules of each named database.","FirebaseFirestore Swift specification. The test asserts the handle carries its database ID; bridge operations carry no database field. Swift test: `packages/swift-client/Tests/PyricFirestoreTests/ConformanceCoreTests.swift` assertion set `firestore-swift#3`.","Returns a distinct handle per named database for the default FirebaseApp; production isolates the documents and rules of each named database.","FirebaseFirestore Swift specification. The test asserts the handle carries its database ID; bridge operations carry no database field. Swift test: `packages/swift-client/Tests/PyricFirestoreTests/ConformanceCoreTests.swift` assertion set `firestore-swift#4`.","`forceLongPolling()` — accepted no-op: transport selection is not applicable to the in-process/worker sandbox (it never opens a real socket). Accepted so init code that calls it compiles + runs","`forceWebSockets()` — accepted no-op: transport selection is not applicable to the in-process/worker sandbox (see `forceLongPolling`)","The aggregated response carries the final chunk `finishReason` and `usageMetadata`","`unit:streaming.test.ts` test `ai#stream-aggregate-final-meta` (aggregation semantics derived from the framing capture)","Under a remote register activation, `getAI(app)` in a server process fails with `failed-precondition` and a message that names the client services that do reach the Node host: `firebase/ai` has no path to the host, and no in-process sandbox stands in for it. Production AI pass-through (`PYRIC_AI=production`) loads the real `firebase/ai` and is unaffected.","App scenario `test/apps/client-sdk-under-register` calls it under `node --import @pyric/cli/register` against a hosted Vite dev server and asserts the refusal; on main (942cb175) it returned a handle on a private in-process sandbox. `mapping.test.ts` pins that the subpath keeps its mirror under a remote activation, and `node-origin.test.ts` that a mirror resolved from such an app refuses.","Under `vite dev`, `getAI(app)` in a server-rendered module fails with `failed-precondition` in the default sandbox AI mode, naming the client services that reach the host: `firebase/ai` has no path to the dev server's host from server code. In production AI mode the real `firebase/ai` loads and the network guard permits Firebase AI Logic. A SharedWorker dev server refuses it the same way.","App scenario `test/apps/vite-ssr-client-sdk` calls it in SSR on a hosted dev server and asserts the refusal; a second dev server in production AI mode lets the real SDK reach only `firebasevertexai.googleapis.com`, which a stand-in beneath the guard refuses. On main (ba2c0bf0a) it was the real SDK. `vite-module-swap.test.ts` pins the routing.","Without sandbox package swapping, canonical `firebase/auth` imports remain Firebase and never enter this mirror","Direct mirror rejection is locked by `unit:package-resolution.test.ts`; an unswapped production-resolution observation is still needed","Under a remote register activation on the Node host, `firebase/auth` in a server process signs in to the host: the session belongs to that process, the user is visible to `firebase-admin`, and its identity applies to the process's RTDB, Firestore and Storage calls. The session lasts as long as the process. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts a user the process created that firebase-admin finds, and rules that allow that user's own path and deny another's. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/auth` in a server-rendered module signs in to the host. The session belongs to the dev server process: every SSR request, both of Vite's SSR loaders and a module reloaded after an edit see the same `currentUser`, and its identity applies to the SSR RTDB, Firestore and Storage calls. Browser sessions are separate. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` signs in through `ssrLoadModule`, then finds the same user through the environment runner, and checks that the rules allow that user's paths and deny another's. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path.","An in-module production target is intentionally absent; direct calls with a real `FirebaseApp` reject with package-resolution guidance","`unit:modular.test.ts`; production remains the responsibility of the unchanged `firebase/database` package","Under a remote register activation on the Node host, `firebase/database` in a server process reads and writes the host's data under its rules as the process's signed-in user: a write the rules deny for that user fails with `PERMISSION_DENIED`, `.info/connected` follows the process's connection, and an `onDisconnect` write runs when that connection ends. From its first RTDB call on an instance the process stays up until `goOffline()` on that instance or `deleteApp()`, as `@firebase/database` keeps a Node process up. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts a write and a read, a denied write to another user's path, `.info/connected`, an `onDisconnect` that ran after the process exited, and that a process stays up after a write until `goOffline()`. `node-realm.test.ts` pins when the process is held. CDD assertion `rtdb-modular#RS1` pins the sandbox side: rules evaluate per signed-in session, and a registry bound to the refusal opens no database handle. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/database` in a server-rendered module reads and writes the host's data under its rules as the SSR session's user: a write the rules deny for that user fails with `PERMISSION_DENIED`. `ssrLoadModule`, the environment runner and every `ssr.noExternal` setting share one app and one session. Closing the dev server lets the process go, so a process that created the server through Vite's API ends on its own, though RTDB would otherwise hold it until `goOffline()`. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` writes and reads the SSR user's own path, is denied another user's, reads the writes back with `firebase-admin` in SSR and in a process on the host, repeats it with `ssr.noExternal` `['firebase']` and `true`, refuses on a SharedWorker dev server, and creates a dev server through Vite's API that ends on its own after SSR used RTDB. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path. CDD assertion `rtdb-modular#RS2` pins the sandbox side. `node-realm.test.ts` pins the release when the in-process host ends.","On a hosted dev server, `firebase-admin` in a server-rendered module resolves to `pyric-admin` bound to the dev server's host, as a `firebase-admin` process on the host is: a bare `initializeApp()` connects to it, reads bypass the rules, and the writes of browsers and SSR sessions are visible. On a SharedWorker dev server its first call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`, without dialing.","App scenario `test/apps/vite-ssr-client-sdk` reads a path the rules let only the SSR user read, and a browser's write, with `firebase-admin` in SSR through both loaders and with each externalization setting, and gets the refusal on a SharedWorker dev server. On main (ba2c0bf0a) `firebase-admin` in SSR was the real SDK. `ambient-init.test.ts` pins that a bare `initializeApp()` binds the in-process activation's sandbox when PYRIC_SANDBOX is unset, and that the variable wins when set. CDD assertion `rtdb-modular#RS3` pins the sandbox side.","A Firestore write (`setDoc`, `updateDoc`, `deleteDoc`, a batch `commit`) or read (`getDoc`, `getDocs`) the web hosted client's socket had taken when it dropped fails once with `unavailable` and the message \"The hosted sandbox connection was lost. Requests already sent may have completed; check state before retrying.\" It is not sent again. In production the Firestore Web SDK keeps a write in its mutation queue and sends it again on the next write stream until the backend acknowledges it, and answers a `getDoc` from its local cache, with `fromCache`, or fails it with `unavailable` when the document is not cached.","Production behavior read from `@firebase/firestore` 4.14.1, as recorded in ADR-0019 (\"Reads and writes are treated alike, unlike production\"). `packages/cli/test/serve/worker/hosted-reconnect-hold.test.ts` drops a real loopback socket with `setDoc`, `getDoc` and `batchCommit` in flight and asserts each fails once with that message and reaches the host once. The Realtime Database follows its SDK here instead (row `rtdb-modular#HD1`, #1088).","Query-proof scope remains conservative. Equality and finite scalar in filters can pin candidate fields; array-contains proves the corresponding membership fact, not the whole array. Helpers and positive OR branches reduce to sufficient, candidate-independent residuals. Every finite combination (up to 30) must pass auth, query limits, and any lookup whose path is pinned by the query. Unpinned fields, candidate identity, dynamic document-dependent collections, unbounded range guarantees, and unsupported syntax remain deny-only gaps. Queries are never authorized by filtering stored rows. A collection-group query is authorized only by a top-level `list` or `read` rule at `match /{path=**}/<collectionId>/{id}` or `match /{document=**}` whose condition reads no path binding; any other shape, including a match nested in `match /{document=**}`, denies the query. This expanded local support has unit evidence and upstream documented semantics, but no new hosted observation.","Local query support: `unit:firestore/query-proof-application.test.ts` covers finite membership, guardian array membership, pinned lookup paths, auth and limit controls, and adversarial array/lookup cases. Upstream semantics: firebase.google.com/docs/firestore/security/rules-query and firebase.google.com/docs/firestore/query-data/queries. Local diagnostic contract (#583): `unit:firestore/query-proof-diagnostics.test.ts` pins dynamic membership rejection, fallback attribution, constraint/residual distinctions, modular listener context, captured lifecycle errors, and immutable operation-summary proof metadata; this adds no production observation. `unit:rules/simulator/query-proof.test.ts` (function-inlining provable cases; full-accounting rejections for mixed equality + `in`/`get`/`hasOnly`/range/`is` shapes in inline and helper form; fail-closed classifier probes: bracket-access `resource['data']`, `exists()` keyed by `resource.data` through path-literal segments, slice access, `resource.id`, and an unrecognized node shape), `unit:firestore/query-proof-enforcement.test.ts` (seeded end-to-end denials of the demonstrated attacks: forbidden-field absence check in member and bracket form, banned-owner `exists()` lookup, slice conjunct, each returning zero documents). Collection-group scope: `unit:firestore/collection-group-rules.test.ts` authorizes `getDocs(collectionGroup(db, 'items'))` under `match /{path=**}/items/{id}`, proves a data-gated rule from the query's equality, and denies under a rule for another collection id, a rule that reads the recursive binding, and concrete collection rules; `unit:firestore/sandbox/collection-group-rule-proof.test.ts` pins the projection. Upstream semantics: firebase.google.com/docs/firestore/security/rules-query#secure_and_query_documents_based_on_collection_groups. No hosted collection-group query is captured; the production matcher verdicts for the same rule shape, from the Rules Test API, live in `oracle:rules-firestore-hierarchical-match-cascade`.","Exported by `firebase/storage`; returns a token-signed HTTPS URL that fetches the blob","Production observation `storage-upload-bytes-roundtrip` records `urlIsHttps: true` and a byte-identical fetch. The URL form depends on where the sandbox runs. On the Node host, `getDownloadURL` returns `http://<host>/__pyric/storage/v0/b/<bucket>/o/<path>?alt=media&token=<token>`: production's `/v0/b/<bucket>/o/<path>` path and `alt=media` query, under the host's own origin. The token is kept in the object's `downloadTokens` metadata, later calls return the same URL, it does not expire, and removing it from the metadata revokes the URL. A `GET` on the URL needs no header and serves `Range`. The hosted replay of the observation calls `getDownloadURL` and `fetch` through the web client against the host and its byte route, and matches `downloadOk`, `bodyLen`, and `bytesMatch`. The web byte route fixture pins token persistence and revocation, and hosted smoke test 8 streams and seeks an `<audio>` element by the URL in Chromium. In process and in a SharedWorker there is no HTTP origin to serve from, so `getDownloadURL` returns a `data:<contentType>;base64,...` URI that carries the object's bytes. The oracle replay proves its byte-identical fetch and asserts the `data:` prefix, and the client↔host integration proves SharedWorker mode returns the same form. The divergence is URL identity. The hosted URL is `http` on the local host's origin, under `/__pyric/storage`, where production's is `https` on Google Cloud Storage's host, so it is fetchable only where that host is reachable. The `data:` form has no token, no revocation, and no stable short string. Production observation `admin-storage-metadata-download-url` records the token itself: the Firebase metadata endpoint reports it as `downloadTokens`, firebase-admin sees it as the `firebaseStorageDownloadTokens` custom key, removing it makes the URL answer 403, and the URL answers `Range` with 206.","Returns `https://firebasestorage.googleapis.com/v0/b/<bucket>/o/<encoded path>?alt=media&token=<token>`, whose token is the file's `firebaseStorageDownloadTokens` custom metadata. The Firebase metadata endpoint, which client SDKs read, reports the same token as `downloadTokens` and leaves it out of `metadata`","Production observation `admin-storage-metadata-download-url` records `https://firebasestorage.googleapis.com/v0/b/<bucket>/o/<encoded path>?alt=media&token=<token>`, the token equal to `firebaseStorageDownloadTokens`, and the Firebase metadata endpoint reporting it as `downloadTokens` outside `metadata`. On the Node host the hosted replay matches the path after the `/__pyric/storage` prefix, `alt=media`, the query keys, the token, and the client view's `downloadTokens`; the origin is the host's own `http` origin. In process and on a SharedWorker host there is no HTTP origin, so the URL is a `data:<contentType>;base64,...` URI that carries the bytes; the pyric-admin conformance suite pins it beside the production form. It diverges because only the Node host serves bytes over HTTP.","The download URL answers a `GET` with no credentials with the object's bytes and content type, and a `Range` request with 206 and `Content-Range`","Production observation `admin-storage-metadata-download-url` records `unauthenticatedGet` (200, `audio/wav`, `bytesMatch: true`) and `rangeGet` (206, `bytes 2-5/64`, `bytesMatch: true`). On the Node host the hosted replay matches both. In process and on a SharedWorker host there is no HTTP origin, so a download URL is a `data:<contentType>;base64,...` URI that carries the bytes; its `GET` matches, but it answers a `Range` request with 200 and every byte, which the pyric-admin conformance suite pins beside the production answer.","In the sandbox, `getFirestore(app, databaseId)` ignores the database id and returns the app's `(default)` handle, so documents written under one id are read under every other id.","`packages/pyric/test/firestore/named-database.test.ts` asserts two database ids return the `(default)` handle and that a document written under one id reads back under another.","The served `firebase/firestore` entry ignores the database id: the worker path returns the app's one handle and the in-page fallback delegates to the sandbox `getFirestore(app)`. The worker protocol carries no database id.","`packages/cli/test/serve/worker/composite-filters-served-entry.test.ts` imports the served entry over a worker host, asserts `getFirestore(app, 'reports')` returns the app's handle, and reads the `(default)` documents through it.","`pyric-admin` `getFirestore` takes no database id; a second argument is ignored and the handle reads and writes `(default)`. The Admin SDK's `getFirestore(app, databaseId)` selects the named database.","`packages/pyric-admin/test/firestore/named-database.test.ts` writes through `getFirestore(app, 'reports')` and reads the document through `getFirestore(app)` and `getFirestore(app, 'archive')`.","Under a remote register activation on the Node host, `firebase/firestore` in a server process reads and writes the host's documents under its rules as the process's signed-in user. An open listener keeps the process up; a finished write releases it at once. A CommonJS `require('firebase/firestore')` resolves the same client. An app whose options differ from the host's gets each call rejected with `app/multiple-configs-not-supported`, and nothing throws past the call. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts a write the page and firebase-admin read, a CommonJS require, an app with other options rejected per call, and that a listener holds the process while a finished write does not. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/firestore` in a server-rendered module reads and writes the host's documents under its rules as the SSR session's user: a write the rules deny for that user fails with `permission-denied`. `ssrLoadModule`, the environment runner and every `ssr.noExternal` setting share one app and one session. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` writes and reads the SSR user's own document, is denied another user's, reads the writes back with `firebase-admin` in SSR and in a process on the host, with each externalization setting, and refuses on a SharedWorker dev server. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path.","On a hosted dev server, `firebase-admin/firestore` in a server-rendered module reads and writes the dev server host's documents as admin, past the rules, as a `firebase-admin` process on the host does. On a SharedWorker dev server its first call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`.","App scenario `test/apps/vite-ssr-client-sdk` reads a document the rules let only the SSR user read with `firebase-admin` in SSR through both loaders and with each externalization setting. On main (ba2c0bf0a) `firebase-admin` in SSR was the real SDK. `ambient-init.test.ts` pins the ambient binding.","A `models/`-prefixed name is accepted without double prefixing","`unit:instances.test.ts` test `ai#model-name-prefixed` (no capture; normalization claim)","`sendMessage` appends the user turn and the model turn; `getHistory()` returns the ordered `Content[]` with alternating roles","`unit:chat-session.test.ts` test `ai#chat-history-threads` (no capture; history threading claim)","Blocked prompts and blocked candidates are excluded from `getHistory()`","`unit:chat-session.test.ts` test `ai#chat-history-excludes-blocked` (upstream JSDoc contract; exercised with a scripted blocked envelope)","Imagen is deprecated upstream; all Imagen models shut down as early as June 2026 (upstream 2.11.0 deprecation). Mirroring an API whose production counterpart is retiring would freeze dead behavior.","Provides a distinct FirebaseFirestore handle per FirebaseApp and database ID; production isolates the documents and rules of each named database.","com.google.firebase.firestore specification. The test asserts a distinct handle and databaseId per instance; bridge operations carry no database field. Test: `packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt` assertion set `firestore-kotlin#2`.","Returns a distinct FirebaseDatabase handle for each database URL; production isolates the data and rules of each URL's database.","com.google.firebase:firebase-database specification. The test asserts a distinct handle and URL per instance; bridge operations carry no instance field. Test: `packages/kt-client/src/test/kotlin/dev/pyric/database/RtdbConformanceTest.kt` assertion set `rtdb-kotlin#instance-url`.","When the exchange is refused (an unregistered debug token), both reject with a `FirebaseError` with code `appCheck/fetch-status-error` and `customData.httpStatus` 403.","capture `app-check-client-invalid-debug-token` (`getToken`, `getLimitedUseToken`).","Live API is deferred, not out of scope — it is a bidirectional websocket protocol the sandbox can model with a scripted session engine, the same seam pattern the REST plane already uses; the work has not happened yet.","`FullMetadata.md5Hash` populated on uploads","divergence: sandbox does NOT compute `md5Hash`. Oracle-locked: `packages/conformance/observations/storage/storage-upload-then-getmetadata.json` confirms prod sets `md5Hash` (`hasMd5Hash: true` after a vanilla `uploadBytes`). Both sides pinned in `oracle-conformance.test.ts`. Aligning the sandbox is a one-spot fix in `upload.ts`'s `buildStoredMetadata`.","`FullMetadata.ref` lazy population (prod populates lazily)","not modeled in `pyric/storage` — `metadata.ts` explicitly omits `ref` from `FullMetadata`","A Storage operation (`getMetadata`, `deleteObject`, `list`, or an upload step) the web hosted client's socket had taken when it dropped fails once with `unavailable` and the message \"The hosted sandbox connection was lost. Requests already sent may have completed; check state before retrying.\" It is not sent again. In production the Storage Web SDK retries a request that fails on the network with exponential backoff, for up to 2 minutes for an operation and 10 minutes for an upload, and then fails it with `storage/retry-limit-exceeded`.","Production behavior read from `@firebase/storage` 0.14.3 `dist/index.esm.js`: `DEFAULT_MAX_OPERATION_RETRY_TIME` (2 minutes), `DEFAULT_MAX_UPLOAD_RETRY_TIME` (10 minutes), and `retryLimitExceeded()` in the request retry loop. `packages/cli/test/serve/worker/hosted-reconnect-hold.test.ts` drops a real loopback socket with `storage.getMetadata` and `storage.deleteObject` in flight and asserts each fails once with that message and reaches the host once.","MFA / phone / reCAPTCHA is deferred, not out of scope — reCAPTCHA/SMS are external infrastructure Pyric can mock with the OAuth resolver pattern, and TOTP is pure algorithm work.","Retrieves a named query from a previously loaded Firestore bundle.","`getStorage(app, bucketUrl?)` accepts Firebase's bucket argument; the sandbox remains bound to its configured single bucket","Package resolution owns production selection. The sandbox accepts the canonical argument but does not model production multi-bucket routing; `unit:service.test.ts` pins the configured `pyric-default` bucket.","Under a remote register activation on the Node host, `firebase/storage` in a server process uploads and reads the host's objects under its rules, over the host's byte route. An upload issued before the process's connection has attached waits for the attachment, keeps its place in the call order, and never sends its bytes as frames to a host that takes them only over the route; it fails as a held call does if the connection is not restored within 10 seconds. A finished upload does not keep the process up. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts an upload issued as the process's first call that firebase-admin downloads, its HTTP download URL, and that a finished upload does not hold the process. `storage-byte-route-settled.test.ts` pins the wait, the call order and the deadline. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/storage` in a server-rendered module uploads and reads the host's objects under its rules as the SSR session's user, over the host's byte route: an upload to another user's path fails with `storage/unauthorized`, and a download URL names the host's byte route. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` uploads to the SSR user's own path, reads its download URL, is denied another user's path, and downloads the object with `firebase-admin` in a process on the host. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path.","The Node-stream variant is deferred — not part of the browser-shaped v1 scope yet, but not genuinely un-modelable.","Exported by `firebase/storage` (Node entry only); returns a Node `Readable`","No `pyric/storage` implementation or behavioral probe exists; availability is classified by the owning surface contract.","Server-side templates are deferred, not out of scope — hosting template state is exactly the kind of server infrastructure the sandbox exists to model; the template store has not been built yet.","Template-served Imagen models retire with the rest of Imagen (deprecated upstream, June 2026 shutdown); the template transport does not outlive the model family it serves.","A registered debug token exchanges for `{ token, ttl: \"3600s\" }`; an unregistered one fails 403 `PERMISSION_DENIED` with message `App attestation failed.`","capture `app-check-exchange-debug-token-wire`.","A single user or app can hold several registration tokens at once — one per browser, profile, or device. A token-targeted send reaches exactly one token; a topic, condition, or multicast send fans out independently to every subscribed token, with no server-side de-duplication across a user’s devices, so each device receives its own copy. Stated from the FCM targeting model; no committed observation replays cross-device fan-out yet.","Upstream documentation (FCM targeting model); no observation yet. Candidate probe: mint two distinct tokens, subscribe both to one topic, send once, and assert each token receives the message independently.","FCM treats a registration token that has gone unused for an extended period (Google documents roughly 270 days of app-instance inactivity) as stale and drops it from delivery targeting, independent of any explicit `deleteToken`. The expiry clock is Google server-side inactivity accounting, and the recommended mitigation is periodic token refresh. Stated from FCM best-practices documentation; the sandbox has no server-side inactivity clock to model.","Upstream documentation (FCM registration-token best practices); no observation. This time-based server-side behavior is out of sandbox scope (see the row disposition); the explicit-deletion path to a dead token is already tracked by messaging#3.","`goOffline(db)` drains that client's onDisconnect queue once, but does not make the in-memory data plane unreachable; ordinary writes, listeners, and `get()` remain available","`unit:database/on-disconnect.test.ts` + `unit:modular/fruit-aliases.test.ts`","`goOnline(db)` reconnects the logical lifecycle without resurrecting drained operations; it is otherwise a no-op because the in-memory data plane never became unreachable","**Divergence:** production interleaves concurrent `increment` writes from independent clients and preserves both deltas; the synchronous in-process backend applies each call before returning its promise, so a `Promise.all` call site is observably serialized even though its terminal value also reaches 5","Oracle `rtdb-modular-concurrent-transforms` uses two independent clients and captures terminal 5 after concurrent +2/+3 increments; `unit:modular/transaction-contention-cdd.test.ts` pins the sandbox's synchronous first-write visibility and matching terminal value without claiming that terminal equality proves contention semantics.","Served by the client: `.info` is `{ connected, serverTimeOffset: 0 }`, `.info/serverTimeOffset` is 0, and any other path under `.info` is null.","Verified by packages/flutter-client/test/rtdb_conformance_test.dart.","Served locally: `.info` is `{ connected, serverTimeOffset }`, `serverTimeOffset` is 0, and any other path under `.info` is null.","com.google.firebase:firebase-database specification. Test: `packages/kt-client/src/test/kotlin/dev/pyric/database/RtdbConformanceTest.kt` assertion set `rtdb-kotlin#info-root-offset`.","Served by the client: `.info` is { connected, serverTimeOffset }, and `serverTimeOffset` is 0.","FirebaseDatabase Swift specification and ADR-0019 (amendment of 2026-10-16). The test asserts both values, null for another `.info` key, and that none reaches the worker. Swift test: `packages/swift-client/Tests/PyricDatabaseTests/RtdbConformanceTests.swift` assertion set `rtdb-swift#info-root-offset`.","Production permits a differently configured named app; Pyric rejects it because one runtime currently owns exactly one sandbox backend","oracle: `app-registry-initializeapp-named-different-config` (firebase 12.13.0) + replay pins `app/multiple-configs-not-supported`; `packages/cli/test/e2e/app-multi-app.pw.ts` proves the same lock is enforced by the authoritative SharedWorker across same-origin tabs, not only by one page registry","Delegates to sandbox `getFirestore(app)` and returns the same handle. Accepts the `settings` argument (so the explicit-init pattern doesn't crash at import) but no-ops the cache/network settings — persistence is always on","`unit:firestore/tier1-cache-init-align.test.ts`","Server-app (SSR) initialization: a FirebaseServerApp carries per-request auth/heartbeat state with no decided sandbox mirror pattern yet. Deferred, not out of scope — tracked as an unsupported registry row (registry/app.ts app#15).","Not implemented; disposition `app.server-app` owns the reviewed availability and rationale","disposition:app.server-app","Provides a distinct platform handle per FirebaseApp and database ID; production isolates the documents and rules of each named database.","cloud_firestore_platform_interface specification. The test asserts the handle carries its database ID; bridge operations carry no database field. Container test: `packages/flutter-client/test/conformance_test.dart` assertion set `firestore-flutter#2`.","Returns a distinct Realtime Database handle for each database URL; production isolates the data and rules of each URL's database.","Verified by packages/flutter-client/test/rtdb_conformance_test.dart, which asserts the handle carries its URL; bridge operations carry no instance field.","Paginated listing is deferred — listAll covers the v1 scope; pagination needs a stable pageToken shape, which is unbuilt design work rather than a sandbox limitation.","Exported by `firebase/storage`; accepts `{ maxResults, pageToken }`, returns a `ListResult` with `nextPageToken` set when more pages remain","No paginated `list` implementation or behavioral probe exists; availability is classified by the owning surface contract. `ListResult.nextPageToken` remains optional for forward-compatible consumer code.","Production and the local Storage evaluator accept List.concat(list); a Set, string or other argument is \"Unsupported operation error\" and a Set, Map or string receiver is \"Function not found error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept hasAny() on a List with a List argument and on a Set with a List or Set argument; a Set argument to a List receiver is \"Unsupported operation error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept hasOnly() on a List with a List argument and on a Set with a List or Set argument; a Set argument to a List receiver is \"Unsupported operation error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept List.join(separator), which converts each element as string() does; a non-string separator, a missing separator, or a List or Map element is an error. Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept List.removeAll(list), which drops every element equal to one in the argument; a Set or other argument is \"Unsupported operation error\" and a Set or Map receiver is \"Function not found error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept List.toSet(), which returns the distinct elements as a Set; a Set or Map receiver is \"Function not found error\". Replayed by the list cases of the Storage upload-boundary corpus.","Loads serialized Firestore bundle data into the local cache.","Production and the local Storage evaluator accept request.resource.metadata.get(key, default); replayed by the Storage upload-boundary corpus.","Production and the local Storage evaluator accept request.resource.metadata.keys(); replayed by the Storage upload-boundary corpus.","math.abs(number): the absolute value; an int stays an int and a float stays a float.","math.ceil(number): the ceiling, as a float.","math.floor(number): the floor, as a float.","Listed by the rules reference; production has no math.isInfinite() and evaluates a call as \"Function not found error\".","math.isNaN(number): whether the value is NaN.","math.pow(base, exponent): base raised to exponent, as a float.","math.round(number): rounded half up, as an int.","math.sqrt(number): the square root, as a float.","Config token accepted, inert — each returns a small tagged object so identity/usage doesn't crash. Persistence is the sandbox default; there is no cache tier left to configure","Under a remote register activation, `getMessaging(app)` in a server process fails with `failed-precondition` and a message that names the client services that do reach the Node host: `firebase/messaging` has no path to the host, and no in-process sandbox stands in for it.","Under `vite dev`, `getMessaging(app)` in a server-rendered module fails with `failed-precondition`, naming the client services that reach the host: `firebase/messaging` has no path to the dev server's host from server code, and the real SDK does not load.","App scenario `test/apps/vite-ssr-client-sdk` calls it in SSR on a hosted dev server and asserts the refusal. On main (ba2c0bf0a) it was the real SDK. `vite-module-swap.test.ts` pins the routing.","When several window clients (browser tabs) of one origin share a single service-worker registration, a foreground delivery reaches every visible tab through `onMessage`, and when no tab is visible the one shared service worker receives the message once through `onBackgroundMessage` (the worker is shared across tabs, not instantiated per tab). A notification click focuses a single existing client rather than opening a duplicate. Stated from the FCM web SDK and the Service Worker client model; no committed observation replays the multi-tab fan-out yet.","Upstream documentation (`@firebase/messaging` 0.12.26 + W3C Service Worker `Clients` model); no observation yet. Candidate probe: open two tabs on one registration and deliver with one tab visible, then with both hidden — assert `onMessage` fires once per visible tab and `onBackgroundMessage` fires exactly once on the shared worker.","**Divergence (pending fix):** clean `goOffline`, app deletion, playground `pagehide`, and best-effort MessagePort close drain queued operations, but unannounced total renderer/process loss is not guaranteed by the in-memory sandbox","Oracle `rtdb-modular-ondisconnect-abrupt-exit` proves Firebase executes an acknowledged registration after forced writer termination. The two-port worker integration exercises `goOffline`, served-app deletion, and non-persisted `pagehide`; browser MessagePort close delivery cannot prove total-process loss without durable host-owned leases.","Production, debug mode: listeners and observers registered before the first `getToken` are never called, not by the first token, a forced refresh, or limited-use tokens. Sandbox: they are called once each time the cached token changes (the first token and every forced refresh), never for limited-use tokens, and not after unsubscribing, which is the upstream-documented behavior for an attestation provider.","capture `app-check-client-on-token-changed` (every `listenerCalls*` count is 0). The sandbox side and the attested-provider behavior are pinned in the suite; the attested-provider path is upstream-documented, not captured.","A handler that throws or returns a rejected Promise is reported by the managed runtime; with retry disabled, the Eventarc request can still be acknowledged with HTTP 200.","oracle: `functions-rtdb-onvaluecreated-failed-execution.json`; Pyric observes the rejected handler and marker, but has no Eventarc HTTP request seam with which to replay the captured 200 acknowledgement.","Index validation against `firestore.indexes.json` — sandbox uses `LocalEnvironment`'s lint pass; prod has its own server-side validation","divergence: sandbox can mis-pass a query that prod would reject at the server with `failed-precondition` if no index exists","**Divergence:** `DatabaseReference` and `Query` equality includes database target, path, and canonical query parameters like Firebase, but `toJSON()` serializes the local `sandbox://rtdb/...` identity instead of Firebase's HTTPS database URL.","Oracle `rtdb-modular-reference-shape-url` captures conforming equality plus HTTPS JSON serialization; `unit:modular/oracle-conformance-reference-writes.test.ts` pins both the production HTTPS shape and the sandbox's `sandbox://` boundary.","Both reCAPTCHA providers construct from a site key and are accepted by `initializeAppCheck`.","Upstream-documented only (firebase 12.13.0 typings and the App Check web guide). The oracle web app has no reCAPTCHA registration, so no capture exists; the sandbox never loads reCAPTCHA.","Cold production clients may invoke the update fn first with speculative `null` and then with the current seeded value; the always-warm in-process sandbox invokes it once with the current value","Oracle `rtdb-modular-runtransaction-current-value-arg` captures two seeded-path production invocations (`null`, then current); `unit:modular/oracle-conformance-transactions.test.ts` pins the sandbox's single current-value invocation. The separate warm-client observation matches the sandbox but does not erase the cold-client contract.","Production throws `storage/invalid-url` for a URL on the Node host's `/__pyric/storage/v0/` route, as for any host it does not serve from. The sandbox reads the percent-decoded object path from `<origin>/__pyric/storage/v0/b/<bucket>/o/<path>` on any origin, as production does from its own download URL","Production observation `client-storage-ref-urls` (firebase 12.13.0) records `pyricHostUrl` (`storage/invalid-url`). The Node host's `getDownloadURL` issues this form, so an app that keeps a download URL and later calls `deleteObject(ref(storage, url))` needs `ref()` to read it. The storage oracle suite replays it against the engine's `ref()`, and `storage-ref-urls.test.ts` against the served page client's `ref()`: both pin production's code beside the sandbox's reference, whose `fullPath` and `name` equal those production gives for `firebaseDownloadUrl`. The web byte route fixture in `hosted-sqlite.test.ts` keeps a download URL from the Node host and deletes the object by `ref(storage, url)`, and hosted smoke test 9 does the same from a Chromium page against the built CLI's Node host. Production never issues this URL, so no production app depends on the error.","Production gives a reference on the URL's bucket, including a bucket other than the app's default. The sandbox serves one bucket, so the reference is on that bucket, at the URL's path","Production observation `client-storage-ref-urls` (firebase 12.13.0) records `gsOtherBucket` and `firebaseDownloadUrlOtherBucket` (`bucket: 'other-bucket'`) and `gsDefaultBucket` (`bucket: 'b'`, the configured bucket). The sandbox serves one bucket, as `getStorage(app, bucketUrl?)` does (storage#11): an object an app wrote through another bucket's handle is in that one bucket, so a URL naming another bucket reads it there. The storage oracle suite replays it against the engine's `ref()`, and `storage-ref-urls.test.ts` against the served page client's `ref()`: both pin production's `other-bucket` beside the sandbox's bucket and the URL's `fullPath`.","Production reads a string without `://`, such as a `data:` URI, as an object path. The sandbox throws `storage/invalid-url` for a `data:` URI","Production observation `client-storage-ref-urls` (firebase 12.13.0) records `dataUri` (`fullPath: 'data:audio/wav;base64,UklGRg=='`, `name: 'wav;base64,UklGRg=='`). In process and on a SharedWorker host, `getDownloadURL` returns a `data:` URI (storage#51), and no object exists at that literal path, so reading it as a path would make `deleteObject(ref(storage, url))` resolve and delete nothing. The storage oracle suite replays it against the engine's `ref()`, and `storage-ref-urls.test.ts` against the served page client's `ref()`: both pin production's path beside the sandbox's `storage/invalid-url`, and the storage oracle suite shows a reference to a `data:` download URL throws while the object stays.","**Divergence:** `refFromURL(db, url)` matches Firebase's path parsing, query ignoring, FTP-to-database normalization, and fragment rejection, but the single-database sandbox does not validate the URL host/namespace against the handle; Firebase rejects a mismatched host while the sandbox uses its path.","Oracle `rtdb-modular-reference-shape-url` captures accepted FTP/query URLs and rejected fragments, malformed URLs, and host mismatches; `unit:modular/oracle-conformance-reference-writes.test.ts` pins the conforming validations plus both sides of the host divergence.","request.resource.id is in the official language, but production's Rules Test API does not populate it: request.resource is built from the supplied payload alone, so `.id` is an absent property and reading it errors → DENY. The simulator matches — its handler builds request.resource as `{ data }` only (simulator/handler.ts), so the evaluator's absent-key error yields production's verdict. The same now holds for the existing document: `resource` carries `data` ONLY, no synthesized `id`/`__name__` (RULES-B12, firestore-rules#183).","request.resource.name is the incoming object's FULL path within the bucket (GCS object-name convention, e.g. `uploads/pic.png`), the same form as resource.name. A real upload or metadata update builds it; a delete has no request.resource, so reading it there is an evaluation error that denies.","resource.bucket is the bucket the object resides in, sourced from the persisted record. Production returns it as a literal on the resource map; an absent bucket denies.","Production Storage Object field; accepted by production Storage rules and callable from 2+modules.","Production types resource.generation as an int; exact comparison succeeds and an absent field errors and denies.","Production types resource.metageneration as an int; captured together with generation on the existing-object binding.","resource.name is the object's FULL path within the bucket (GCS object-name convention, e.g. `uploads/pic.png`), sourced from the persisted record's fullPath — NOT the client SDK's last-path-segment name. Production returns it as a literal on the resource map; an absent name is an evaluation error that denies.","resource.timeCreated is a timestamp (ISO-8601 in the persisted record; the evaluator reads it as a Timestamp value that compares with request.time). Production rejects an int in a timestamp comparison; an absent timeCreated denies.","resource.updated is the object's last-update timestamp. The field is `updated` — the Storage rules language has NO `resource.timeUpdated` (live-probed: `timeUpdated` reads as an absent property). Renamed from the earlier mis-identified `storage.binding.resource.timeUpdated`.","Accepted no-op. In production this reaches OUTSIDE Firebase entirely — it tells the identity provider (in practice Apple) to revoke an OAuth access token, which is a call landing on Apple's servers. There is no external IdP behind a sandbox sign-in, so there is no token out there to revoke and nothing this call could truthfully do. It resolves (so the account-deletion flow Apple requires an app to ship runs end to end against the sandbox) and changes no sandbox state (because claiming otherwise would be a lie).","`unit:types.test.ts` — the export resolves. Deliberately not oracle-probed: a successful probe would revoke a real token at a real IdP, which is a side effect on someone else's system that a conformance run has no business causing.","Discrepancy: `import { fn } from 'module'` under `rules_version = '2+modules'` is a pyric resolver extension (rules/modules/resolver.ts), not stock Firebase rules — production Firestore only knows rules_version '1'/'2' and has no import statement.","Catches optimistic locking conflicts and re-executes handler up to maxAttempts.","**Divergence:** two ordinary concurrent `runTransaction` calls are serialized by the in-process backend, so their update functions are not retried with Firebase's captured contention counts. A synchronous re-entrant conflicting write does trigger a deterministic retry.","Oracle `rtdb-modular-concurrent-transforms` captures invocation counts [2, 3]; `unit:modular/transaction-contention-cdd.test.ts` pins the sandbox's [1, 1] ordinary-concurrency boundary and separately covers its deterministic re-entrant retry seam.","A cold production client can call the update fn with speculative `null` before the current seeded value; the always-warm sandbox calls it once with the current value","Oracle `rtdb-modular-runtransaction-current-value-arg` captures the cold two-call sequence and `rtdb-modular-runtransaction-warm-client-speculation` captures the matching warm one-call case; `unit:modular/oracle-conformance-transactions.test.ts` pins both sides.","Concurrent contention — if another client writes between the read and write, the update fn is retried with the new current value (typically up to 25 retries by default)","Oracle `rtdb-modular-concurrent-transforms` captures callback counts [2, 3] across two clients; the synchronous in-process backend serializes the same ordinary calls with [1, 1], pinned by `unit:modular/transaction-contention-cdd.test.ts`.","`Schema.enumString` serializes the enum values with type `string` and format `enum`","`unit:helpers-schema.test.ts` test `ai#schema-string-enum` (upstream toJSON request shape; GoogleAI accepts only enum and date-time formats)","Runtime type-based method dispatch on untyped parameters, get() results, let bindings, and multi-type ternaries is behaviorally verified in production by firestore-rules#182 (rules-firestore-functions-verbs-and-recursive.json); single-expression acceptance micro-probing remains unprobeable.","FCM enforces project-level send quotas and per-target rate limits (per-device and per-topic message rates) accounted on Google servers over rolling windows; exceeding them yields quota / rate-limit rejections. The admin error taxonomy names these as `MessagingClientErrorCode.MESSAGE_RATE_EXCEEDED`, `DEVICE_MESSAGE_RATE_EXCEEDED`, and `TOPICS_MESSAGE_RATE_EXCEEDED` (wire `QUOTA_EXCEEDED` / `RESOURCE_EXHAUSTED`, HTTP 429). Stated from FCM quota documentation; the sandbox has no global quota ledger to model.","Upstream documentation (FCM quotas and `MessagingClientErrorCode` rate-limit members, firebase-admin 13.10.0); no observation. This behavior is out of sandbox scope (see the row disposition).","Exactly one user turn is recorded per `sendMessageStream` call; the mirror implements the 2.13.0 fixed semantics, not the installed 2.12.0 duplicate-user-turn bug","`unit:chat-session.test.ts` test `ai#chat-stream-single-user-turn` (no capture; divergence pinned by ruling, see notes)","Prod rejects a continue URL whose domain is not on the project's authorized-domains list. The sandbox has NO domain allowlist and does not invent one: it accepts any parseable continue URL. A continue URL that would be rejected in production is accepted here.","The sandbox has no project config to hold an authorized-domains list, so there is nothing to check against; inventing an allowlist would mean inventing a policy the user never set. The probe attempted the server arm (`auth-sendsigninlinktoemail-settings-validation`, `unauthorizedDomain`) but the oracle project has email-link sign-in disabled, so it answered `auth/operation-not-allowed` rather than `auth/unauthorized-continue-uri` — the divergence is declared from the documented contract, not from a capture we do not have.","Production and the local Storage evaluator accept hasAll() on the List returned by custom-metadata keys() and on a Set; replayed by the Storage upload-boundary and stdlib-sets corpus.","Accepted no-op. The sandbox has no modular-SDK-style logger to wire a level into. It uses host-level `console` logging directly, gated by `pyric sandbox`'s own flags, not this call","Actually changes where the auth state is persisted","divergence: sandbox is a no-op. Prod respects the marker.","Rules evaluate the `database` path variable as `(default)` for every request, whatever database id the handle was created with. Production binds the named database's id.","`packages/pyric/test/firestore/named-database.test.ts` writes through a handle created for `reports`: a rule requiring `database == '(default)'` allows the write and a rule requiring `database == 'reports'` denies it.","Auto-generates a uid for fresh sign-ins (sandbox format: `anonymous-{N}`)","`unit:sandbox-anonymous.test.ts` — prod uids are 28-char base64-ish; sandbox uses a readable counter for debuggability","Anonymous users persist across page reload via configured `Persistence` (prod only — sandbox has no persistence layer)","divergence: sandbox memory only; within one tab the user persists, across reload they don't","Opens a popup window in prod","divergence: sandbox skips the popup; mock pre-stage replaces the popup result","Cancels with `auth/popup-closed-by-user` when the user dismisses the popup (prod)","not modeled — would require the host to expose a \"cancel\" affordance on the mock","Throws `auth/invalid-custom-token` for a malformed token and for the empty string. The sandbox accepts a token in the two shapes it can honestly read: a JSON (optionally base64url) `{uid, claims}` payload — exactly what `admin.auth().createCustomToken` signs, so the pyric-admin mint and this redeem compose — or a real three-part JWT whose payload segment carries `uid`/`sub`. The SIGNATURE IS NOT VERIFIED: the sandbox has no service-account key. The identity is created if it does not exist, and the credential carries `providerId: null` (custom-token sign-in is not a federated provider).","ORACLE-BACKED on the reject path: `auth-signinwithcustomtoken-invalid` captured `auth/invalid-custom-token` for both a malformed token and the empty string, replayed in `unit:oracle-conformance.test.ts`. Diverged on the ACCEPT path, declared rather than hidden: prod verifies an RS256 signature against the project's service-account key and the sandbox has no key, so it reads the token's claims WITHOUT verifying them. A forged token that prod would reject is accepted here. The happy path cannot be oracle-probed from a Web SDK client at all (it needs an Admin-SDK-signed JWT).","An EMPTY password throws `auth/missing-password` (message \"A non-empty password must be provided\"), fired before the user-DB lookup so it can't be used to enumerate seeded emails. Upstream maps the `MISSING_PASSWORD` server error (`core/errors.ts:92,282,563`). ⚠ best-known semantics — message text not yet captured against a live project (STOP-flagged for an oracle pass; the `.code` is the load-bearing part).","`unit:sandbox-cluster-b9-b12.test.ts` (locks AUTH-B11)","An Auth operation (a sign-in, a profile update, a token refresh) the web hosted client's socket had taken when it dropped fails once with `unavailable` and the message \"The hosted sandbox connection was lost. Requests already sent may have completed; check state before retrying.\" It is not sent again. In production the Auth Web SDK fails a request whose network call fails with `auth/network-request-failed` and does not retry it.","Production behavior read from `@firebase/auth` 1.13.1 `dist/esm`: a failed `fetch` is reported through `_fail(auth, \"network-request-failed\")`, and the request is not retried. `packages/cli/test/serve/worker/hosted-reconnect-hold.test.ts` drops a real loopback socket with `auth.signInEmail` in flight and asserts it fails once with that message and reaches the host once.","Clears the active session's persistence in prod; sandbox has no persistence","divergence: same memory-only constraint as the anonymous persistence row","The removed stateful simulator returned a generate-before-simulate error when no IR had been generated","The stateless `simulateRtdbRules(compiled, input)` API requires a compiled rules tree and has no generate-before-simulate lifecycle.","Cross-path `root.child(…).val()` reads return `null` for paths NOT present in `mockData` — divergence from real prod rules where the engine reads the live database","divergence: the simulator uses ONLY what's in `mockData`. Real rules engine reads from the live RTDB. Documented in `validated.ts` (\"simulation uses empty mockData, so cross-path rule lookups … will evaluate as false\")","Emits an event when all active listeners have caught up to the same state.","Notifies when all active snapshot listeners are in sync with server state.","Deferred with the rest of the Live API family — the browser audio helper rides the Live session seam once that lands.","length is a String property in the official language (`ref.val().length`, read as a member, not called). The validator types it as a property of a string or stored value and refuses `length()` with production's text \"Type error: Function call on target that is not a function.\" (observation rtdb-rules-type-check).","toUpperCase() is a String method in the official language, and the validator's string method table (rules/rtdb/grammar/types.ts) accepts it with no arguments, as production's deploy validation does (observation rtdb-rules-type-check).","Changes the stored email (via the same path as `sandbox.updateUser`, rejecting `auth/email-already-in-use` / `auth/invalid-email`) and mutates the held `user` in place, so the next sign-in resolves against the new email. A session older than five minutes is refused with `auth/requires-recent-login`. Leniency vs prod: the sandbox is not routed through `verifyBeforeUpdateEmail`; with email-enumeration protection on, production refuses `updateEmail` with `auth/operation-not-allowed` (`Please verify the new email before changing email.`)","`unit:fruit-aliases.test.ts`: stored email changes; re-sign-in works with the new email, fails with the old. Recent-login gate: `unit:requires-recent-login.test.ts`. Oracle capture `auth-requires-recent-login` recorded `auth/operation-not-allowed` for updateEmail on the oracle project, which has email-enumeration protection on.","`updateMetadata` with `undefined` field values preserves the prior value (does NOT clear it)","divergence: prod accepts `null` to explicitly clear a field. Sandbox doesn't model `null`-clear (per `metadata.ts` doc comment). Documented; not probe-locked.","Phone number mutation is deferred alongside the rest of the phone-auth family — buildable via a mocked SMS/verification-code resolver, the same shape as the OAuth resolver.","Exported by `firebase/storage`; returns an `UploadTask` with `pause()` / `resume()` / `cancel()`","`unit:resumable-upload.test.ts` confirms `uploadBytesResumable(ref, data)` returns an `UploadTask` supporting `pause()`, `resume()`, and `cancel()` over synthetic microtask steps.","`task.on('state_changed', next, error, complete)` fires `next` with `{bytesTransferred, totalBytes, state}` snapshots","`unit:resumable-upload.test.ts` confirms synthetic progress snapshots are emitted during task execution without requiring network transfer.","`task.pause()` flips `state` to `'paused'`; `task.resume()` continues","`unit:resumable-upload.test.ts` confirms calling `task.pause()` and `task.resume()` transitions through `'paused'` and `'running'` states deterministically.","`task.cancel()` rejects the upload with `storage/canceled`","`unit:resumable-upload.test.ts` confirms cancellation rejects with `storage/canceled`. A commit already sent cannot be recalled, so a cancel that races it rolls it back, then rejects and tells observers. Production never stores a canceled upload, so its rules never see the rollback: the commit takes a token bound to the client, the generation it stored, and the object it replaced, and the host, without the rules, puts that object back or deletes the new one in one generation-checked write, keeping any later write (#1157, #1159). `storage-upload-rollback.test.ts` pins the token's binding, the restore, and a cancel under rules that deny every delete; `storage-ops.test.ts` pins a commit settling after the cancel and one held while paused. The web byte route fixture in `hosted-sqlite.test.ts` and `test/apps/client-sdk-under-register` cancel under `node --import @pyric/cli/register` and read no object, or the earlier one after an overwrite; on main (8e1ee9cb4) the object stayed (#1137). A failed rollback rejects with its own code. The in-page task does the same (#1161), and `storage-cancel-parity.test.ts` compares the two.","Sandbox: `format='base64url'` (or any unknown format) rejected with `storage/invalid-format` naming the bad format. Prod: `base64url` is ACCEPTED (upload succeeds); a genuinely-unrecognized format throws `storage/unknown`","divergence, both halves oracle-locked by `packages/conformance/observations/storage/storage-uploadstring-unknown-format.json`: prod accepts `base64url` (`base64urlOk: true`) and throws `storage/unknown` for an unrecognized format — not `storage/invalid-format`. The v1 sandbox ships only `raw`/`base64`/`data_url` (matches `StringFormat`) and throws `storage/invalid-format` for anything else (ST-B3 replaced the old mis-parse-as-data_url behavior). Both sides pinned in `oracle-conformance.test.ts`; sandbox code path documented in `upload.ts`'s `decodeString`. Implementing base64url decoding is still one line in `decodeString`.","Accepted no-op — the sandbox has no device locale to read, so there is no language to set; accepted so init code that calls it compiles + runs","`unit:fruit-aliases.test.ts` — resolves/returns without error","`user.metadata.creationTime` / `lastSignInTime`","client `User.metadata` not exposed (AUTH-GAP); the admin record carries `createdAt`/`lastLoginAt` (ISO)","`user.reload()` / `user.delete()` / `user.toJSON()` / `user.refreshToken` / `user.tenantId`","not modeled by the sandbox; retained as an explicit unsupported behavior row rather than synthesized (AUTH-GAP)","Options that are not a non-null object throw `app-check/invalid-argument` with `VerifyAppCheckTokenOptions must be a non-null object.`, and a token that is not a string throws `App check token must be a non-null string.`; both throw synchronously. Then, with no project id configured, `app-check/invalid-credential`. A token with a character outside base64url in any segment fails with the decoding message. Before the signature, the token content is checked in this order: a header `alg` other than RS256 rejects with `The provided App Check token has incorrect algorithm. Expected \"RS256\" but got \"<alg>\".`; an `aud` without `projects/<projectId>` of the verifying app rejects with `app-check/invalid-argument` and `The provided App Check token has incorrect \"aud\" (audience) claim. Expected \"projects/<projectId>\" but got \"<aud>\". Make sure the App Check token comes from the same Firebase project as the service account used to authenticate this SDK.`; an `iss` not starting with `https://firebaseappcheck.googleapis.com/` rejects with `The provided App Check token has incorrect \"iss\" (issuer) claim.`; a `sub` that is not a string rejects with `The provided App Check token has no \"sub\" (subject) claim.`, and an empty one with `The provided App Check token has an empty string \"sub\" (subject) claim.` Then a token with no `kid` is checked against every key. A `kid` that names a key other than the sandbox's marks a token from Firebase: in sandbox AI mode it rejects with Pyric's message (row `verify-token-firebase-token`), and in production AI mode it goes to firebase-admin (row `verify-token-firebase-token-production-ai-mode`). After the signature, a non-numeric or future `nbf` and a non-numeric `exp` reject as an invalid signature; an absent `nbf` or `exp` does not apply.","Upstream-documented only: firebase-admin 13.10.0 `lib/app-check/token-verifier.js` (`verifyToken`, `verifyContent`, `ensureProjectId`, `mapJwtErrorToAppCheckError`), `lib/utils/jwt.js` (`getKeyCallback`, `PublicKeySignatureVerifier.verify`), jws 4 `verify-stream.js` (`JWS_REGEX`), and jsonwebtoken 9 `verify.js` (`nbf`, `exp`). No capture; verification runs locally in the Admin SDK, so a capture would need no production change.","Production verifies the App Check tokens Firebase issues. Sandbox: in sandbox AI mode, or in a process not started with `@pyric/cli/register` in production AI mode, a token whose `kid` names a key other than the sandbox's rejects with `app-check/invalid-argument` and Pyric's message, which says the token was not minted by the Pyric sandbox and to start the server in production AI mode (`PYRIC_AI_MODE=production`). The project check comes first, as in production.","capture `app-check-admin-verify-token` (production verifies a token from its debug exchange); the sandbox side is pinned in the admin suite.","A token whose `kid` names a key other than the sandbox's goes to firebase-admin's own `verifyToken`, for an app scoped to the project the mirror resolves. It resolves with production's `{ appId, token }` shape, the decoded token carrying `app_id`, and firebase-admin's errors (signature, audience, issuer, expiry) pass through with their codes and messages. Sandbox tokens, tokens with no `kid`, and malformed tokens keep the sandbox path.","capture `app-check-admin-verify-token` for the result shape; the verification itself is firebase-admin 13.10.0 `lib/app-check/token-verifier.js`, run unchanged.","Production records consumption on Firebase's servers, once per project: the first consume resolves with `alreadyConsumed: false` and a second with `alreadyConsumed: true`. Sandbox: firebase-admin verifies the token without `consume`, and the mirror records it in the process, in the set it keeps for sandbox tokens, with the same `false` then `true` results.","capture `app-check-admin-verify-consume`; the sandbox side is pinned in the admin suite and the production AI mode app scenario.","Resolves when all locally initiated writes have been committed by the server.","Awaits backend acknowledgment of all pending local writes."];
10
- const INTERNED_SUPPORTS: readonly (Omit<BrowserFeatureSupport, 'caveats'> & { caveats: readonly number[] })[] = [{"feature":"AbstractUserDataWriter","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AbstractUserDataWriter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"actAs","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"actAs is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ActionCodeInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ActionCodeInfo is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ActionCodeOperation","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ActionCodeOperation is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ActionCodeSettings","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ActionCodeSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ActionCodeURL","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ActionCodeURL is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"add","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"add is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"add","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"add is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addAuthStateListener","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addAuthStateListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addDoc","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addDoc is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addIdTokenListener","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addIdTokenListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AdditionalUserInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AdditionalUserInfo is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"additionalUserInfo","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"additionalUserInfo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"additionalUserInfo","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"additionalUserInfo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"additionalUserInfo","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"additionalUserInfo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AddPrefixToKeys","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AddPrefixToKeys is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"addQuerySnapshotListener","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addQuerySnapshotListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addQuerySnapshotListenerMetadata","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addQuerySnapshotListenerMetadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addQuerySnapshotListenerOptions","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addQuerySnapshotListenerOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addSnapshotListener","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addSnapshotListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addSnapshotListenerMetadata","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addSnapshotListenerMetadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addSnapshotListenerOptions","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addSnapshotListenerOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"addSnapshotsInSyncListener","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"addSnapshotsInSyncListener is available, has unverified fidelity, and is qualified for assurance.","caveats":[0,1]},{"feature":"addValueEventListener","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"addValueEventListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"affectedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"affectedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"aggregate","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"aggregate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"aggregate","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"aggregate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AggregateField","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AggregateField is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"aggregateFieldEqual","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"aggregateFieldEqual is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AggregateFieldType","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AggregateFieldType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AggregateQuerySnapshot","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AggregateQuerySnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"aggregateQuerySnapshotEqual","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"aggregateQuerySnapshotEqual is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AggregateSpec","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AggregateSpec is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AggregateSpecData","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AggregateSpecData is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AggregateType","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AggregateType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AI","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AI is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AIError","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AIError is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AIErrorCode","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AIErrorCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AIModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AIModel is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AIOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AIOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"allow","surface":"firestore-rules","importPaths":["pyric/rules"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"allow is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"and","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"and is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AndroidConfig","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"AndroidConfig is available, has unverified fidelity, and is qualified for assurance.","caveats":[2,3]},{"feature":"AndroidFcmOptions","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AndroidFcmOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AndroidNotification","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AndroidNotification is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AnyOfSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AnyOfSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ApnsConfig","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ApnsConfig is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ApnsFcmOptions","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ApnsFcmOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ApnsPayload","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ApnsPayload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"app","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"app is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"app","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"app is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"app","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"app is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AppCheck","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AppCheck is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AppCheckOptions","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AppCheckOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AppCheckToken","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AppCheckToken is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AppCheckTokenListener","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AppCheckTokenListener is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"AppCheckTokenResult","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AppCheckTokenResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ApplicationVerifier","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ApplicationVerifier is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"applyActionCode","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"applyActionCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Aps","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Aps is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ApsAlert","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ApsAlert is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arithmetic","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arithmetic is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayContains","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayContains is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayContainsAny","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayContainsAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayRemove","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayRemove","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayRemove","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayRemove","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ArraySchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ArraySchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"arrayUnion","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayUnion is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayUnion","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayUnion is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayUnion","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayUnion is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"arrayUnion","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"arrayUnion is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"atoms","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"atoms is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AudioConversationController","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"AudioConversationController is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"AudioTranscriptionConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"AudioTranscriptionConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"Auth","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Auth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"auth","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"auth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"auth","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"auth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"auth.provider","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"auth.provider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"auth.token","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"auth.token is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"auth.token.custom-claim","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"auth.token.custom-claim is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"auth.uid","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"auth.uid is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authApp","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authApp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AuthCredential is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"authCredentialProvider","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authCredentialProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authDataResult","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authDataResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthError","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"AuthError is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"authError","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authError is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authErrorCode","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authErrorCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthErrorCodes","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AuthErrorCodes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthErrorMap","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AuthErrorMap is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"authFirestoreCoupling","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authFirestoreCoupling is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthLens","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"AuthLens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authLens","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authLens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authLensChanges","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authLensChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authLensFlow","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authLensFlow is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authLensStream","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authLensStream is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"AuthProvider is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"authResult","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"AuthSettings","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"AuthSettings is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"authStateChanges","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authStateChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authStateChanges","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authStateChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authStateFlow","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authStateFlow is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authStatePublisher","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authStatePublisher is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authStateStream","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authStateStream is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authTokenResultClaims","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authTokenResultClaims is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authTokenResultExpiration","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authTokenResultExpiration is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"authTokenResultToken","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"authTokenResultToken is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"average","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"average is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Backend","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Backend is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"BackendType","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"BackendType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"BaseMessage","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"BaseMessage is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"BaseParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"BaseParams is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"batch","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batch","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batch","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batch","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batchCommit","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batchCommit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batchDeleteDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batchDeleteDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batchSetData","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batchSetData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batchSetDataMerge","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batchSetDataMerge is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batchSetDataMergeFields","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batchSetDataMergeFields is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"batchUpdateData","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"batchUpdateData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"beforeAuthStateChanged","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"beforeAuthStateChanged is available, has diverged fidelity, and is qualified for assurance.","caveats":[5,6,7,8]},{"feature":"Blob","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Blob is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Blob","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Blob is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"BlockReason","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"BlockReason is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"bool","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bool is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"BooleanSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"BooleanSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"bridgeOps","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bridgeOps is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"browserCookiePersistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"browserCookiePersistence is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"browserLocalPersistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"browserLocalPersistence is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"browserPopupRedirectResolver","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"browserPopupRedirectResolver is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"browserSessionPersistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"browserSessionPersistence is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"Bucket.deleteFiles","surface":"storage-admin","importPaths":["pyric-admin/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"Bucket.deleteFiles is available, has unverified fidelity, and is qualified for assurance.","caveats":[11,12]},{"feature":"Bucket.getFiles","surface":"storage-admin","importPaths":["pyric-admin/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"Bucket.getFiles is available, has unverified fidelity, and is qualified for assurance.","caveats":[13,14]},{"feature":"Bytes","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Bytes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"bytes.size","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bytes.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"bytes.toBase64","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bytes.toBase64 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"bytes.toBase64","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bytes.toBase64 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"bytes.toHexString","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bytes.toHexString is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"bytes.toHexString","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"bytes.toHexString is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CACHE_SIZE_UNLIMITED","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"CACHE_SIZE_UNLIMITED is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.bool","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.bool is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.bool","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"cast.bool is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"cast.float","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.float is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.float","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.float is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.int","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.int is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.int","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.int is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.path","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.path","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.string","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.string is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"cast.string","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"cast.string is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"changedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"changedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ChatSession","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ChatSession is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ChatSessionBase","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ChatSessionBase is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"checkActionCode","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"checkActionCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"child","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"child is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"child","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"child is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"child","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"child is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"child","surface":"rtdb-rules","importPaths":["pyric/database"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"child is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"child","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"child is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"childByAutoId","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"childByAutoId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"children","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"children is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"children","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"children is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"children","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"children is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"childSnapshot","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"childSnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ChildUpdateFields","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ChildUpdateFields is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ChromeAdapter","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ChromeAdapter is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"Citation","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Citation is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"CitationMetadata","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CitationMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"claims","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"claims is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"clearIndexedDbPersistence","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"clearIndexedDbPersistence is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"clearInstancesForTest","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"clearInstancesForTest is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"clearPersistence","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"clearPersistence is available, has unverified fidelity, and is qualified for assurance.","caveats":[15,16]},{"feature":"clearPersistence","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"clearPersistence is available, has unverified fidelity, and is qualified for assurance.","caveats":[15,17]},{"feature":"clearPersistence","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"clearPersistence is available, has unverified fidelity, and is qualified for assurance.","caveats":[15,1]},{"feature":"CodeExecutionResult","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CodeExecutionResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"CodeExecutionResultPart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CodeExecutionResultPart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"CodeExecutionTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CodeExecutionTool is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"collection","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collection","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collection","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collection","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collectionGroup","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collectionGroup is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collectionGroup","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collectionGroup is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collectionGroup","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collectionGroup is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collectionGroup","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collectionGroup is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"collectionID","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"collectionID is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CollectionReference","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"CollectionReference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"commit","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"commit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"commit","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"commit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"comparison","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"comparison is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"compileRtdbRules","surface":"rtdb","importPaths":["pyric/rules/internal/rtdb"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"compileRtdbRules is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CompleteFn","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"CompleteFn is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"compose","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"compose is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"concat","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"concat is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ConditionMessage","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ConditionMessage is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Config","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"Config is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ConfirmationResult","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ConfirmationResult is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"confirmPasswordReset","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"confirmPasswordReset is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"connectAuthEmulator","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"connectAuthEmulator is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"connectDatabaseEmulator","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"connectDatabaseEmulator is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[18,19,20]},{"feature":"connectFirestoreEmulator","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"connectFirestoreEmulator is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"connectStorageEmulator","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"connectStorageEmulator is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[21,22]},{"feature":"constructorAccess","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"constructorAccess is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Content","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Content is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ContextWindowCompressionConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ContextWindowCompressionConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"count","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"count is available, has diverged fidelity, and is qualified for assurance.","caveats":[23,24]},{"feature":"count","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"count is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"count","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"count is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"count","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"count is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"countTokens","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"countTokens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CountTokensRequest","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CountTokensRequest is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"CountTokensResponse","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CountTokensResponse is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"createToken","surface":"app-check-admin","importPaths":["pyric-admin/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"createToken is available, has diverged fidelity, and is qualified for assurance.","caveats":[25,26,27,28]},{"feature":"createUserWithEmailAndPassword","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"createUserWithEmailAndPassword","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"createUserWithEmailAndPassword","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"createUserWithEmailAndPassword","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"credential","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"credential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"credential","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"credential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"credentialsProvider","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"credentialsProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CriticalSound","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"CriticalSound is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"crossServiceIam","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"crossServiceIam is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"crossTypeOperators","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"crossTypeOperators is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"currentAuthLens","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"currentAuthLens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"currentAuthLens","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"currentAuthLens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"currentUser","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"currentUser is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"currentUser","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"currentUser is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"currentUser","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"currentUser is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"customClaims","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"customClaims is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"customClaims","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"customClaims is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CustomErrorData","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CustomErrorData is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"CustomParameters","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"CustomParameters is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"CustomProvider","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"CustomProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"CustomProviderOptions","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"CustomProviderOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"data","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"data is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"data","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"data is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"data","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"data is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"data","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"data is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"dataAsDecodable","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"dataAsDecodable is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Database","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Database is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"database","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"database is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DatabaseEvent","surface":"functions-rtdb","importPaths":[],"evidenceSlug":"functions-rtdb-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"DatabaseEvent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DatabaseReference","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"DatabaseReference is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"databaseUrl","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"databaseUrl is available, has diverged fidelity, and is qualified for assurance.","caveats":[29,30]},{"feature":"DataMessagePayload","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"DataMessagePayload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DataSnapshot","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"DataSnapshot is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"dataWithServerTimestampBehavior","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"dataWithServerTimestampBehavior is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Date","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Date is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"debug","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"debug is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"debugErrorMap","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"debugErrorMap is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"delegateFor","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"delegateFor is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"delete","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"delete is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"delete","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"delete is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"delete","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"delete is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteAllPersistentCacheIndexes","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteAllPersistentCacheIndexes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteApp","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"deleteApp is available, has diverged fidelity, and is qualified for assurance.","caveats":[31,32,33,34]},{"feature":"deleteDoc","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteDoc is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteField","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteField is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteField","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteField is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteField","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteField is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteField","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteField is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteObject","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"deleteObject is available, has diverged fidelity, and is qualified for assurance.","caveats":[35,36]},{"feature":"deleteToken","surface":"messaging","importPaths":["pyric/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"deleteToken is available, has unverified fidelity, and is qualified for assurance.","caveats":[37,38]},{"feature":"deleteUser","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteUser is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"deleteUser","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"deleteUser is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"denyByDefault","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"denyByDefault is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Dependencies","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"Dependencies is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"diff","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"diff is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"diff","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"diff is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"difference","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"difference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"difference","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"difference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"disableNetwork","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"disableNetwork is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"disableNetwork","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"disableNetwork is available, has unverified fidelity, and is qualified for assurance.","caveats":[39,16]},{"feature":"disableNetwork","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"disableNetwork is available, has unverified fidelity, and is qualified for assurance.","caveats":[39,17]},{"feature":"disableNetwork","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"disableNetwork is available, has unverified fidelity, and is qualified for assurance.","caveats":[40,1]},{"feature":"disablePersistentCacheIndexAutoCreation","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"disablePersistentCacheIndexAutoCreation is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"displayName","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"displayName is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"displayName","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"displayName is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"displayName","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"displayName is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"dispose","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"dispose is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"doc","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"doc is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"doc","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"doc is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"docChanges","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"docChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"docs","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"docs is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"document","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"document is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"document","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"document is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentAutoId","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentAutoId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DocumentChange","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"DocumentChange is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"documentChange","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentChange is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentChanges","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentChanges","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentChangesIncludeMetadata","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentChangesIncludeMetadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DocumentChangeType","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"DocumentChangeType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"DocumentData","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"DocumentData is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"documentId","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentID","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentID is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentIDPropertyWrapper","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentIDPropertyWrapper is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentPath","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentPath is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DocumentReference","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"DocumentReference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DocumentReference","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"DocumentReference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DocumentReference","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"DocumentReference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documents","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documents is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documents","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documents is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"DocumentSnapshot","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"DocumentSnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentSnapshotFromJSON","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentSnapshotFromJSON is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"documentSnapshotsSequence","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"documentSnapshotsSequence is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration","surface":"firestore-rules","importPaths":["pyric/rules"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Duration","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Duration is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.abs","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.abs is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.abs","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.abs is available, has conforms fidelity, and is eligible for assurance.","caveats":[41]},{"feature":"duration.nanos","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.nanos is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.nanos","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.nanos is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.seconds","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.seconds is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.seconds","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.seconds is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.time","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.time is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.time","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.time is available, has conforms fidelity, and is eligible for assurance.","caveats":[42]},{"feature":"duration.value","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.value is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"duration.value","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"duration.value is available, has conforms fidelity, and is eligible for assurance.","caveats":[43]},{"feature":"email","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"email is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"email","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"email is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"email","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"email is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"EmailAuthCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"EmailAuthCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"EmailAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"EmailAuthProvider is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[44,45]},{"feature":"emailVerified","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"emailVerified is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"EmulatorConfig","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"EmulatorConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"EmulatorMockTokenOptions","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"EmulatorMockTokenOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"EmulatorMockTokenOptions","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"EmulatorMockTokenOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"EmulatorMockTokenOptions","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"EmulatorMockTokenOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"enableIndexedDbPersistence","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"enableIndexedDbPersistence is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"enableLegacyHttpTransport","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"enableLegacyHttpTransport is available, has unverified fidelity, and is qualified for assurance.","caveats":[46,47]},{"feature":"enableLogging","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"enableLogging is available, has diverged fidelity, and is qualified for assurance.","caveats":[48,49]},{"feature":"enableMultiTabIndexedDbPersistence","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"enableMultiTabIndexedDbPersistence is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"enableNetwork","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"enableNetwork is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"enableNetwork","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"enableNetwork is available, has unverified fidelity, and is qualified for assurance.","caveats":[39,16]},{"feature":"enableNetwork","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"enableNetwork is available, has unverified fidelity, and is qualified for assurance.","caveats":[39,17]},{"feature":"enableNetwork","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"enableNetwork is available, has unverified fidelity, and is qualified for assurance.","caveats":[40,1]},{"feature":"enablePersistentCacheIndexAutoCreation","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"enablePersistentCacheIndexAutoCreation is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAt","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAtDocument","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAtDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endAtDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endAtDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endBefore","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endBefore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endBefore","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endBefore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endBefore","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endBefore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endBefore","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endBefore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endBefore","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endBefore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"endBeforeDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"endBeforeDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"EnhancedGenerateContentResponse","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"EnhancedGenerateContentResponse is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ensureFirestoreConfigured","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ensureFirestoreConfigured is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"equalTo","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"equalTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"equalTo","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"equalTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"equalTo","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"equalTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ErrorCode","surface":"messaging","importPaths":[],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ErrorCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ErrorDetails","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ErrorDetails is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ErrorFn","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ErrorFn is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"evaluateStorageRules","surface":"storage-rules","importPaths":["pyric/storage"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"evaluateStorageRules is available, has unverified fidelity, and is qualified for assurance.","caveats":[50,51,52,53]},{"feature":"EventType","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"EventType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ExecutableCode","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ExecutableCode is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ExecutableCodePart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ExecutableCodePart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"executeWrite","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"executeWrite is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"exists","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"existsAfter","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"existsAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[54]},{"feature":"ExperimentalLongPollingOptions","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ExperimentalLongPollingOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"experimentalSetDeliveryMetricsExportedToBigQueryEnabled","surface":"messaging","importPaths":["pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"experimentalSetDeliveryMetricsExportedToBigQueryEnabled is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FacebookAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FacebookAuthProvider is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FactorId","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FactorId is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FcmOptions","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FcmOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FcmOptions","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FcmOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"fetchSignInMethodsForEmail","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"out-of-scope","fidelity":"not-applicable","assurance":"not-applicable","summary":"fetchSignInMethodsForEmail is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[55,56,57]},{"feature":"FieldPath","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FieldPath is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"fieldPath","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"fieldPath is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FieldValue","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FieldValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"File.getMetadata","surface":"storage-admin","importPaths":["pyric-admin/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"File.getMetadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"File.setMetadata","surface":"storage-admin","importPaths":["pyric-admin/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"File.setMetadata is available, has diverged fidelity, and is qualified for assurance.","caveats":[58,59]},{"feature":"FileData","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FileData is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FileDataPart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FileDataPart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"filter","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"filter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FinishReason","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FinishReason is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirebaseApp","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirebaseApp is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirebaseAppSettings","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirebaseAppSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirebaseAuthException","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FirebaseAuthException is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"firebaseAuthException","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"firebaseAuthException is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FirebaseError","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FirebaseError is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"firebaseJsonDatabase","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"firebaseJsonDatabase is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FirebaseMessagingError","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FirebaseMessagingError is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FirebaseOptions","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirebaseOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirebaseServerApp","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirebaseServerApp is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"FirebaseServerAppSettings","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirebaseServerAppSettings is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"FirebaseStorage","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirebaseStorage is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"firestore","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"firestore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Firestore","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Firestore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"firestore","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"firestore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"firestore.exists","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"firestore.exists is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[60,61,62]},{"feature":"firestore.get","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"firestore.get is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[60,61,63]},{"feature":"firestoreApp","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"firestoreApp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"firestoreAppDatabase","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"firestoreAppDatabase is available, has diverged fidelity, and is qualified for assurance.","caveats":[64,65]},{"feature":"firestoreDatabase","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"firestoreDatabase is available, has diverged fidelity, and is qualified for assurance.","caveats":[66,67]},{"feature":"FirestoreDataConverter","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirestoreDataConverter is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirestoreError","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"FirestoreError is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FirestoreErrorCode","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirestoreErrorCode is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirestoreLocalCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirestoreLocalCache is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FirestoreSettings","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FirestoreSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"float","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"float is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"forceLongPolling","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"forceLongPolling is available, has diverged fidelity, and is qualified for assurance.","caveats":[68,49]},{"feature":"forceWebSockets","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"forceWebSockets is available, has diverged fidelity, and is qualified for assurance.","caveats":[69,49]},{"feature":"FullMetadata","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FullMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"function","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"function is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"function","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"function is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FunctionCall","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionCall is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"functionCall","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"functionCall is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FunctionCallingConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionCallingConfig is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FunctionCallingMode","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionCallingMode is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FunctionCallPart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionCallPart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"functionCalls","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"functionCalls is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"FunctionDeclaration","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionDeclaration is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FunctionDeclarationsTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionDeclarationsTool is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FunctionResponse","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionResponse is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"FunctionResponsePart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"FunctionResponsePart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"generateContent","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"generateContent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GenerateContentCandidate","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerateContentCandidate is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GenerateContentRequest","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerateContentRequest is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GenerateContentResponse","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerateContentResponse is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GenerateContentResult","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerateContentResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"generateContentStream","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"generateContentStream is available, has diverged fidelity, and is qualified for assurance.","caveats":[70,71]},{"feature":"GenerateContentStreamResult","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerateContentStreamResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GenerationConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerationConfig is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GenerativeContentBlob","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerativeContentBlob is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GenerativeModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GenerativeModel is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GeoPoint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"GeoPoint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GeoPoint","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"GeoPoint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GeoPoint","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"GeoPoint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"geoPoint","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"geoPoint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"get","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getAdditionalUserInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getAdditionalUserInfo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getAfter","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[54]},{"feature":"getAggregateFromServer","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getAggregateFromServer is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getAI","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getAI is available, has diverged fidelity, and is qualified for assurance.","caveats":[72,73,74,75]},{"feature":"getAI","surface":"app","importPaths":[],"evidenceSlug":"app-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"getAI is available, has unverified fidelity, and is qualified for assurance.","caveats":[33,34]},{"feature":"getApp","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getApp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getApps","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getApps is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getAuth","surface":"app","importPaths":[],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getAuth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getAuth","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getAuth is available, has diverged fidelity, and is qualified for assurance.","caveats":[76,77,78,79,80,81]},{"feature":"getBlob","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getBlob is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getBytes","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getBytes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getCountFromServer","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getCountFromServer is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getCredential","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getData","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getData","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDatabase","surface":"app","importPaths":[],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDatabase is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDatabase","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"getDatabase is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[82,83,84,85,86,87,88,89]},{"feature":"getDatabaseWithUrl","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDatabaseWithUrl is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDoc","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getDoc is available, has diverged fidelity, and is qualified for assurance.","caveats":[90,91]},{"feature":"getDocFromCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDocFromCache is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDocFromServer","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDocFromServer is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDocs","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getDocs is available, has diverged fidelity, and is qualified for assurance.","caveats":[92,93]},{"feature":"getDocsFromCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDocsFromCache is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDocsFromServer","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDocsFromServer is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDocuments","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getDocuments is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getDownloadURL","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getDownloadURL is available, has diverged fidelity, and is qualified for assurance.","caveats":[94,95]},{"feature":"getDownloadURL","surface":"storage-admin","importPaths":["pyric-admin/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getDownloadURL is available, has diverged fidelity, and is qualified for assurance.","caveats":[96,97,58,59,98,99]},{"feature":"getEffectiveLens","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getEffectiveLens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getFirestore","surface":"app","importPaths":[],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getFirestore is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getFirestore","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getFirestore is available, has diverged fidelity, and is qualified for assurance.","caveats":[100,101,102,103,104,105,106,107,108,109,110,111]},{"feature":"getGenerativeModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getGenerativeModel is available, has diverged fidelity, and is qualified for assurance.","caveats":[112,113]},{"feature":"getHistory","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getHistory is available, has diverged fidelity, and is qualified for assurance.","caveats":[114,115,116,117]},{"feature":"getIdToken","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"getIdToken is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"getIdToken","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getIdToken is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getIdToken","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getIdToken is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getIdToken","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getIdToken is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getIdTokenResult","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"getIdTokenResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"getIdTokenResult","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getIdTokenResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getIdTokenResult","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getIdTokenResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getIdTokenResult","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getIdTokenResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getImagenModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"out-of-scope","fidelity":"not-applicable","assurance":"not-applicable","summary":"getImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[118]},{"feature":"getInstance","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getInstance is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getInstance","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getInstance is available, has diverged fidelity, and is qualified for assurance.","caveats":[119,120]},{"feature":"getInstance","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getInstance is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getInstanceUrl","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getInstanceUrl is available, has diverged fidelity, and is qualified for assurance.","caveats":[121,122]},{"feature":"getLimitedUseToken","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"getLimitedUseToken is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[123,124]},{"feature":"getLiveGenerativeModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"getLiveGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[125]},{"feature":"getMessaging","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getMessaging is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getMessaging","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getMessaging is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getMetadata","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"getMetadata is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[126,127,128,129,130,131]},{"feature":"getMultiFactorResolver","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"getMultiFactorResolver is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132]},{"feature":"getPersistentCacheIndexManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getPersistentCacheIndexManager is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getPriority","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getQuery","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"getQuery is available, has unverified fidelity, and is qualified for assurance.","caveats":[133,1]},{"feature":"getRedirectResult","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getRedirectResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getReference","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getReference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getStorage","surface":"app","importPaths":[],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getStorage is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getStorage","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"getStorage is available, has diverged fidelity, and is qualified for assurance.","caveats":[134,135,136,137,138,139]},{"feature":"getStorageSandbox","surface":"storage","importPaths":[],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getStorageSandbox is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"getStream","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"getStream is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[140,141,142]},{"feature":"getTemplateGenerativeModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"getTemplateGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[143]},{"feature":"getTemplateImagenModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"out-of-scope","fidelity":"not-applicable","assurance":"not-applicable","summary":"getTemplateImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[144]},{"feature":"getToken","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"getToken is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[123,124,145,146]},{"feature":"getToken","surface":"messaging","importPaths":["pyric/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"getToken is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[147,148,37,38,149,150]},{"feature":"GetTokenOptions","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GetTokenOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"getTokenResult","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"getTokenResult is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GithubAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GithubAuthProvider is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"goOffline","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"goOffline is available, has diverged fidelity, and is qualified for assurance.","caveats":[151,152]},{"feature":"goOffline","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"goOffline is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"goOffline","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"goOffline is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"goOffline","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"goOffline is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GoogleAIBackend","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GoogleAIBackend is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GoogleAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"GoogleAuthProvider is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[44,45]},{"feature":"GoogleAuthProvider","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"GoogleAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GoogleAuthProvider","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"GoogleAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GoogleAuthProvider","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"GoogleAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GoogleMaps","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GoogleMaps is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GoogleMapsGroundingChunk","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GoogleMapsGroundingChunk is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GoogleMapsTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GoogleMapsTool is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GoogleSearch","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GoogleSearch is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GoogleSearchTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GoogleSearchTool is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"goOnline","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"goOnline is available, has diverged fidelity, and is qualified for assurance.","caveats":[153,152]},{"feature":"goOnline","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"goOnline is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"goOnline","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"goOnline is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"goOnline","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"goOnline is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"GroundingChunk","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GroundingChunk is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GroundingMetadata","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GroundingMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"GroundingSupport","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"GroundingSupport is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"HarmBlockMethod","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"HarmBlockMethod is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"HarmBlockThreshold","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"HarmBlockThreshold is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"HarmCategory","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"HarmCategory is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"HarmProbability","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"HarmProbability is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"HarmSeverity","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"HarmSeverity is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"hasAll","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hasAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hasAll","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hasAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hasAny","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hasAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.crc32","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.crc32 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.crc32","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.crc32 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.crc32c","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.crc32c is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.crc32c","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.crc32c is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.md5","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.md5 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.md5","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.md5 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.sha256","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.sha256 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hashing.sha256","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hashing.sha256 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hasOnly","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hasOnly is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"hasPendingWrites","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"hasPendingWrites is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"HybridParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"HybridParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"idTokenChanges","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"idTokenChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"idTokenChanges","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"idTokenChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"idTokenFlow","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"idTokenFlow is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"idTokenPublisher","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"idTokenPublisher is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"idTokenRefresh","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"idTokenRefresh is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"IdTokenResult","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"IdTokenResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"idTokenStream","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"idTokenStream is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ImageConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImageConfig is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ImageConfigAspectRatio","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImageConfigAspectRatio is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ImageConfigImageSize","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImageConfigImageSize is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ImagenAspectRatio","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenAspectRatio is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ImagenGCSImage","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenGCSImage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ImagenGenerationConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenGenerationConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ImagenGenerationResponse","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenGenerationResponse is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ImagenImageFormat","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"out-of-scope","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenImageFormat is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[118,4]},{"feature":"ImagenInlineImage","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenInlineImage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ImagenModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"out-of-scope","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[118,4]},{"feature":"ImagenModelParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenModelParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ImagenPersonFilterLevel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenPersonFilterLevel is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ImagenSafetyFilterLevel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenSafetyFilterLevel is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ImagenSafetySettings","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ImagenSafetySettings is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"in","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"in is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"increment","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"increment is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"increment","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"increment is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"increment","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"increment is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"increment","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"increment is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"increment","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"increment is available, has diverged fidelity, and is qualified for assurance.","caveats":[154,155]},{"feature":"Index","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Index is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"IndexConfiguration","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"IndexConfiguration is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"indexedDBLocalPersistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"indexedDBLocalPersistence is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"IndexField","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"IndexField is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"indexOn","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"indexOn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"InferenceMode","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"InferenceMode is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"InferenceSource","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"InferenceSource is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"infoConnected","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"infoConnected is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"infoConnected","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"infoConnected is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"infoConnected","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"infoConnected is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"infoRoot","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"infoRoot is available, has diverged fidelity, and is qualified for assurance.","caveats":[156,157]},{"feature":"infoRoot","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"infoRoot is available, has diverged fidelity, and is qualified for assurance.","caveats":[158,159]},{"feature":"infoRoot","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"infoRoot is available, has diverged fidelity, and is qualified for assurance.","caveats":[160,161]},{"feature":"initializeApp","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"initializeApp is available, has diverged fidelity, and is qualified for assurance.","caveats":[162,163,31,32]},{"feature":"initializeAppCheck","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"initializeAppCheck is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"initializeAppCheck","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"initializeAppCheck is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"initializeAuth","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"initializeAuth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"initializeFirestore","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"initializeFirestore is available, has diverged fidelity, and is qualified for assurance.","caveats":[164,165]},{"feature":"initializeRecaptchaConfig","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"initializeRecaptchaConfig is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132]},{"feature":"initializeServerApp","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"initializeServerApp is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[166,167,168]},{"feature":"InlineDataPart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"InlineDataPart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"inlineDataParts","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"inlineDataParts is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"inMemoryPersistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"inMemoryPersistence is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"instance","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"instance is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"instance","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"instance is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"instance","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"instance is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"instanceFor","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"instanceFor is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"instanceFor","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"instanceFor is available, has diverged fidelity, and is qualified for assurance.","caveats":[169,170]},{"feature":"instanceFor","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"instanceFor is available, has diverged fidelity, and is qualified for assurance.","caveats":[171,172]},{"feature":"int","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"int is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"IntegerSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"IntegerSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"InternalUserDetails","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"InternalUserDetails is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"intersection","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"intersection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"intersection","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"intersection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isAnonymous","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isAnonymous is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isAnonymous","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isAnonymous is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isAnonymous","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isAnonymous is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isEmailVerified","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isEmailVerified is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isEmailVerified","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isEmailVerified is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isEmpty","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isEmpty is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isFromCache","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isFromCache is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isNull","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isNull is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isSignInWithEmailLink","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isSignInWithEmailLink is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"isSupported","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"isSupported is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"IteratedDataSnapshot","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"IteratedDataSnapshot is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"key","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"key is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"key","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"key is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"key","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"key is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"keys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"keys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Language","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Language is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"LanguageModelCreateCoreOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelCreateCoreOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelCreateOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelCreateOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelExpected","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelExpected is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelMessage","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelMessage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelMessageContent","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelMessageContent is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelMessageContentValue","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelMessageContentValue is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelMessageRole","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelMessageRole is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelMessageType","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelMessageType is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LanguageModelPromptOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LanguageModelPromptOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LatLng","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"LatLng is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"latlng","surface":"firestore-rules","importPaths":["pyric/rules"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"latlng is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"latlng.distance","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"latlng.distance is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"latlng.distance","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"latlng.distance is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"latlng.latitude","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"latlng.latitude is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"latlng.latitude","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"latlng.latitude is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"latlng.longitude","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"latlng.longitude is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"latlng.longitude","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"latlng.longitude is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"latlng.value","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"latlng.value is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"latlng.value","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"latlng.value is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"let","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"let is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"let","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"let is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"lexicalScope","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"lexicalScope is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"LightSettings","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"LightSettings is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limit","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limit","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limit","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitTo","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToFirst","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToFirst is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToFirst","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToFirst is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToFirst","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToFirst is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"limitToLast","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"linkWithCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"linkWithCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"linkWithPhoneNumber","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"linkWithPhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132]},{"feature":"linkWithPopup","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"linkWithPopup is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"linkWithRedirect","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"linkWithRedirect is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"List","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"List is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"list is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[173,174,175]},{"feature":"list.concat","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.concat is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.concat","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.concat is available, has conforms fidelity, and is eligible for assurance.","caveats":[176]},{"feature":"list.hasAll","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.hasAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.hasAny","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.hasAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.hasAny","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.hasAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[177]},{"feature":"list.hasOnly","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.hasOnly is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.hasOnly","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.hasOnly is available, has conforms fidelity, and is eligible for assurance.","caveats":[178]},{"feature":"list.join","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.join is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.join","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.join is available, has conforms fidelity, and is eligible for assurance.","caveats":[179]},{"feature":"list.removeAll","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.removeAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.removeAll","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.removeAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[180]},{"feature":"list.size","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.toSet","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.toSet is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"list.toSet","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"list.toSet is available, has conforms fidelity, and is eligible for assurance.","caveats":[181]},{"feature":"listAll","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"listAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"listenCancel","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"listenCancel is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ListenOptions","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ListenOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ListenSource","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ListenSource is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ListOptions","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ListOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ListResult","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ListResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"LiveGenerationConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveGenerationConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LiveGenerativeModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[125,4]},{"feature":"LiveModelParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveModelParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LiveResponseType","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveResponseType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"LiveServerContent","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveServerContent is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LiveServerGoingAwayNotice","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveServerGoingAwayNotice is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LiveServerToolCall","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveServerToolCall is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LiveServerToolCallCancellation","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveServerToolCallCancellation is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"LiveSession","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveSession is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[125,4]},{"feature":"LiveSessionResumptionUpdate","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"LiveSessionResumptionUpdate is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"loadBundle","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"loadBundle is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"loadBundle","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"loadBundle is available, has unverified fidelity, and is qualified for assurance.","caveats":[182,1]},{"feature":"LoadBundleTask","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"LoadBundleTask is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"LoadBundleTaskProgress","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"LoadBundleTaskProgress is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"LogLevel","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"LogLevel is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"lower","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"lower is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"lower","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"lower is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.diff","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.diff is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.diff","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.diff is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Map.get","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Map.get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.get","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.get","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.get is available, has conforms fidelity, and is eligible for assurance.","caveats":[183]},{"feature":"map.hasAll","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.hasAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.hasAny","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"map.hasAny is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"map.hasOnly","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"map.hasOnly is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"map.keys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.keys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.keys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.keys is available, has conforms fidelity, and is eligible for assurance.","caveats":[184]},{"feature":"map.size","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Map.values","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Map.values is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.values","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.values is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"map.values","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"map.values is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.addedKeys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.addedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.addedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.addedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.affectedKeys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.affectedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.affectedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.affectedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.changedKeys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.changedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.changedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.changedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.removedKeys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.removedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.removedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.removedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.unchangedKeys","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.unchangedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapdiff.unchangedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapdiff.unchangedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"mapMembership","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"mapMembership is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"matches","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"matches is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"matches","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"matches is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"matches","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"matches is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.abs","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.abs is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.abs","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.abs is available, has conforms fidelity, and is eligible for assurance.","caveats":[185]},{"feature":"math.ceil","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.ceil is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.ceil","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.ceil is available, has conforms fidelity, and is eligible for assurance.","caveats":[186]},{"feature":"math.floor","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.floor is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.floor","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.floor is available, has conforms fidelity, and is eligible for assurance.","caveats":[187]},{"feature":"math.isInfinite","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.isInfinite is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.isInfinite","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"math.isInfinite is available, has diverged fidelity, and is ineligible for assurance.","caveats":[188]},{"feature":"math.isNaN","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.isNaN is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.isNaN","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.isNaN is available, has conforms fidelity, and is eligible for assurance.","caveats":[189]},{"feature":"math.pow","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.pow is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.pow","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.pow is available, has conforms fidelity, and is eligible for assurance.","caveats":[190]},{"feature":"math.round","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.round is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.round","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.round is available, has conforms fidelity, and is eligible for assurance.","caveats":[191]},{"feature":"math.sqrt","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.sqrt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"math.sqrt","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"math.sqrt is available, has conforms fidelity, and is eligible for assurance.","caveats":[192]},{"feature":"MemoryCacheSettings","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"MemoryCacheSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"memoryEagerGarbageCollector","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"memoryEagerGarbageCollector is available, has diverged fidelity, and is qualified for assurance.","caveats":[193,165]},{"feature":"MemoryEagerGarbageCollector","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"MemoryEagerGarbageCollector is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"MemoryGarbageCollector","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"MemoryGarbageCollector is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"memoryLocalCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"memoryLocalCache is available, has diverged fidelity, and is qualified for assurance.","caveats":[193,165]},{"feature":"MemoryLocalCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"MemoryLocalCache is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"memoryLruGarbageCollector","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"memoryLruGarbageCollector is available, has diverged fidelity, and is qualified for assurance.","caveats":[193,165]},{"feature":"MemoryLruGarbageCollector","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"MemoryLruGarbageCollector is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"merge","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"merge is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"merge","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"merge is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Message","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Message is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"MessagePayload","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"MessagePayload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Messaging","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"Messaging is available, has diverged fidelity, and is qualified for assurance.","caveats":[194,73,195,196]},{"feature":"Messaging","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Messaging is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"messaging","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"messaging is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"MessagingClientErrorCode","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"MessagingClientErrorCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"MessagingOptions","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"MessagingOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"MessagingPayload","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"MessagingPayload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"MessagingTopicManagementResponse","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"MessagingTopicManagementResponse is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"metadata","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"metadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"metadata","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"metadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"metadata","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"metadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"missingFieldAccess","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"missingFieldAccess is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Modality","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Modality is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ModalityTokenCount","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ModalityTokenCount is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ModelParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ModelParams is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"multiFactor","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"multiFactor is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132]},{"feature":"multiFactor","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"multiFactor is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"MultiFactorAssertion","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"MultiFactorAssertion is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"MultiFactorError","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"MultiFactorError is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"MultiFactorInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"MultiFactorInfo is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"MultiFactorResolver","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"MultiFactorResolver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"MultiFactorSession","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"MultiFactorSession is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"MultiFactorUser","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"MultiFactorUser is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"namedQuery","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"namedQuery is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"NestedUpdateFields","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"NestedUpdateFields is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"newData","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"newData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"newData-in-read","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"newData-in-read is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"NextFn","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"NextFn is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"NextFn","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"NextFn is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"NextOrObserver","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"NextOrObserver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"Notification","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Notification is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"NotificationMessagePayload","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"NotificationMessagePayload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"NotificationPayload","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"NotificationPayload is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"now","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"now is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"NumberSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"NumberSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"OAuthCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"OAuthCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"OAuthCredentialOptions","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"OAuthCredentialOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"OAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"OAuthProvider is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"OAuthProvider","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"OAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"OAuthProvider","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"OAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"OAuthProvider","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"OAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ObjectSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ObjectSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ObjectSchemaRequest","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ObjectSchemaRequest is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"observeChildAdded","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"observeChildAdded is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"observeChildChanged","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"observeChildChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"observeChildRemoved","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"observeChildRemoved is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Observer","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Observer is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"observeValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"observeValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"off","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"off is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onAuthStateChanged","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onAuthStateChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onAuthStateChanged","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onAuthStateChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onBackgroundMessage","surface":"messaging","importPaths":["pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"onBackgroundMessage is available, has unverified fidelity, and is qualified for assurance.","caveats":[197,198]},{"feature":"onChildAdded","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildAdded is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildAdded","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildAdded is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildAdded","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildAdded is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildChanged","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildChanged","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildChanged","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildMoved","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildMoved is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildRemoved","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildRemoved is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildRemoved","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildRemoved is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onChildRemoved","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onChildRemoved is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"OnDeviceParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"OnDeviceParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"OnDisconnect","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"OnDisconnect is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"onDisconnect","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"onDisconnect is available, has diverged fidelity, and is qualified for assurance.","caveats":[199,200]},{"feature":"onDisconnectCancel","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onDisconnectCancel is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onDisconnectCancel","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onDisconnectCancel is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onDisconnectCancel","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onDisconnectCancel is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onDisconnectSetRemove","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onDisconnectSetRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onDisconnectSetRemove","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onDisconnectSetRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onDisconnectSetRemove","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onDisconnectSetRemove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onIdTokenChanged","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onIdTokenChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onIdTokenChanged","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onIdTokenChanged is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onLog","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onLog is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onMessage","surface":"messaging","importPaths":["pyric/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"onMessage is available, has unverified fidelity, and is qualified for assurance.","caveats":[197,198,147,148]},{"feature":"onSnapshot","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onSnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onSnapshotResume","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onSnapshotResume is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onSnapshotsInSync","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onSnapshotsInSync is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onTokenChanged","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"onTokenChanged is available, has diverged fidelity, and is qualified for assurance.","caveats":[201,202]},{"feature":"onValue","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onValue","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"onValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"onValueCreated","surface":"functions-rtdb","importPaths":[],"evidenceSlug":"functions-rtdb-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"onValueCreated is available, has unverified fidelity, and is qualified for assurance.","caveats":[203,204]},{"feature":"OperationType","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"OperationType is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.add","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.add is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.add","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.add is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.add","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.add is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.and","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.and is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.and","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.and is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.and","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.and is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.div","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.div is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.div","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.div is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.div","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.div is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.dynamic-operand","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.dynamic-operand is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.eq","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.eq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.eq","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.eq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.gt","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.gt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.gt","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.gt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.gt","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.gt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.gte","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.gte is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.gte","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.gte is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.gte","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.gte is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.in","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.in is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.in","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.in is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.index","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.index is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.index","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.index is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.index","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.index is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.is","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.is is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.is","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.is is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.looseEq","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.looseEq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.looseNeq","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.looseNeq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.lt","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.lt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.lt","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.lt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.lt","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.lt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.lte","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.lte is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.lte","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.lte is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.lte","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.lte is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.member","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.member is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.member","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.member is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.member","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.member is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.member.auth-unknown-property","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.member.auth-unknown-property is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.member.snapshot-property","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"operator.member.snapshot-property is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"operator.mod","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.mod is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.mod","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.mod is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.mod","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.mod is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.mul","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.mul is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.mul","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.mul is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.mul","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.mul is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.neg","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.neg is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.neq","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.neq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.neq","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.neq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.not","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.not is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.not","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.not is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.not","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.not is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.or","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.or is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.or","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.or is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.or","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.or is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.slice","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.slice is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.slice","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.slice is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.snapshot-operand","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"operator.snapshot-operand is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"operator.strictEq","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.strictEq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.strictNeq","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.strictNeq is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.sub","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.sub is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.sub","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.sub is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.sub","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.sub is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.ternary","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.ternary is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.ternary","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.ternary is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.ternary","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.ternary is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.type-mismatch","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"operator.type-mismatch is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"operator.unary-minus","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.unary-minus is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"operator.unary-minus","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"operator.unary-minus is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"or","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"or is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderBy","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderBy is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderBy","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderBy is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderBy","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderBy is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderBy","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderBy is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByChild","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByChild","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByChild","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByDescending","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByDescending is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"OrderByDirection","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"OrderByDirection is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"orderByKey","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByKey","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByKey","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByPriority","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByValue","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByValue","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"orderByValue","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"orderByValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Outcome","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Outcome is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"parent","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"parent","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"parent","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"parent","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"parent","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"parseActionCodeURL","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parseActionCodeURL is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ParsedToken","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ParsedToken is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"parseLink","surface":"auth","importPaths":[],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parseLink is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"parseStorageRules","surface":"storage-rules","importPaths":["pyric/storage"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"parseStorageRules is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Part","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Part is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PartialObserver","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PartialObserver is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PartialWithFieldValue","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PartialWithFieldValue is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PasswordPolicy","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PasswordPolicy is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PasswordValidationStatus","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PasswordValidationStatus is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"path","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path.bind","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path.bind is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path.bind","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"path.bind is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"pathParameters","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"pathParameters is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path-variable","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path-variable is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path-variable","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path-variable is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"path-variable","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"path-variable is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"pathVariables","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"pathVariables is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Persistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Persistence is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PersistenceSettings","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistenceSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PersistentCacheIndexManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"PersistentCacheIndexManager is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"PersistentCacheSettings","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistentCacheSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"persistentLocalCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"persistentLocalCache is available, has diverged fidelity, and is qualified for assurance.","caveats":[193,165]},{"feature":"PersistentLocalCache","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistentLocalCache is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"persistentMultipleTabManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"persistentMultipleTabManager is available, has diverged fidelity, and is qualified for assurance.","caveats":[193,165]},{"feature":"PersistentMultipleTabManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistentMultipleTabManager is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"persistentSingleTabManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"persistentSingleTabManager is available, has diverged fidelity, and is qualified for assurance.","caveats":[193,165]},{"feature":"PersistentSingleTabManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistentSingleTabManager is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PersistentSingleTabManagerSettings","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistentSingleTabManagerSettings is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PersistentTabManager","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PersistentTabManager is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"PhoneAuthCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneAuthCredential is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132,4]},{"feature":"PhoneAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneAuthProvider is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132,4]},{"feature":"PhoneInfoOptions","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"PhoneMultiFactorAssertion","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneMultiFactorAssertion is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"PhoneMultiFactorEnrollInfoOptions","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneMultiFactorEnrollInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"PhoneMultiFactorGenerator","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneMultiFactorGenerator is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132,4]},{"feature":"PhoneMultiFactorInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneMultiFactorInfo is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"PhoneMultiFactorSignInInfoOptions","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneMultiFactorSignInInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"phoneNumber","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"phoneNumber is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"phoneNumber","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"phoneNumber is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"phoneNumber","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"phoneNumber is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"PhoneSingleFactorInfoOptions","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PhoneSingleFactorInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"photoURL","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"photoURL is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"photoUrl","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"photoUrl is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"photoURL","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"photoURL is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"policies","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"policies is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"PopupRedirectResolver","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PopupRedirectResolver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"POSSIBLE_ROLES","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"POSSIBLE_ROLES is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"PrebuiltVoiceConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"PrebuiltVoiceConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"Primitive","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Primitive is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"priority","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"priority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"priority","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"priority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"priority","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"priority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"prodErrorMap","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"prodErrorMap is available, has diverged fidelity, and is qualified for assurance.","caveats":[9,10]},{"feature":"PromptFeedback","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"PromptFeedback is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"providerData","surface":"auth","importPaths":[],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"providerData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"providerData","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"providerData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"providerData","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"providerData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"providerData","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"providerData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ProviderId","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ProviderId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"providerId","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"providerId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"providerId","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"providerId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"push","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"push is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"push","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"push is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"push","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"push is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"pushKey","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"pushKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"pushKeyOrdering","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"pushKeyOrdering is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"pushKeyOrdering","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"pushKeyOrdering is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"pushKeyOrdering","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"pushKeyOrdering is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Query","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Query is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"query is available, has diverged fidelity, and is qualified for assurance.","caveats":[205,206]},{"feature":"query","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"query is available, has diverged fidelity, and is qualified for assurance.","caveats":[207,208]},{"feature":"Query","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Query is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"query","surface":"rtdb-rules","importPaths":["pyric/database"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.endAt","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.endAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.equalTo","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.equalTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.limitToFirst","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.limitToFirst is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.limitToLast","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.limitToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.orderByChild","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.orderByChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.orderByKey","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.orderByKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.orderByPriority","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.orderByPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.orderByValue","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.orderByValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.startAt","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"query.startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"query.unknown-field","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"query.unknown-field is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"QueryCompositeFilterConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryCompositeFilterConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryConstraint","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"QueryConstraint is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"QueryConstraintType","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"QueryConstraintType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"QueryConstraintType","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"QueryConstraintType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"QueryDocumentSnapshot","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryDocumentSnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryDocumentSnapshot","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryDocumentSnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryEndAtConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryEndAtConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryEndingAtValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryEndingAtValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryEqual","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryEqual is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryEqualToValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryEqualToValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryFieldFilterConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryFieldFilterConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryFilterConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"QueryFilterConstraint is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"QueryLimitConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryLimitConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryLimitedToFirst","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryLimitedToFirst is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryLimitedToLast","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryLimitedToLast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryNonFilterConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"QueryNonFilterConstraint is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"QueryOrderByConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryOrderByConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryOrderedByChild","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryOrderedByChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryOrderedByKey","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryOrderedByKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryOrderedByValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryOrderedByValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QuerySnapshot","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QuerySnapshot is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"querySnapshotFromJSON","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"querySnapshotFromJSON is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"querySnapshotsSequence","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"querySnapshotsSequence is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"QueryStartAtConstraint","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"QueryStartAtConstraint is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"queryStartingAtValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"queryStartingAtValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ReactNativeAsyncStorage","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"ReactNativeAsyncStorage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"reauthenticateWithCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reauthenticateWithCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reauthenticateWithPhoneNumber","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"reauthenticateWithPhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132]},{"feature":"reauthenticateWithPopup","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reauthenticateWithPopup is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reauthenticateWithRedirect","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reauthenticateWithRedirect is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ReCaptchaEnterpriseProvider","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"ReCaptchaEnterpriseProvider is available, has unverified fidelity, and is qualified for assurance.","caveats":[209,210]},{"feature":"RecaptchaParameters","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"RecaptchaParameters is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"ReCaptchaV3Provider","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"ReCaptchaV3Provider is available, has unverified fidelity, and is qualified for assurance.","caveats":[209,210]},{"feature":"RecaptchaVerifier","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"RecaptchaVerifier is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132,4]},{"feature":"recursiveMatch","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"recursiveMatch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"recursiveWildcard","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"recursiveWildcard is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ref","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"ref is available, has diverged fidelity, and is qualified for assurance.","caveats":[211,212,207,208]},{"feature":"ref","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ref is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ref","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"ref is available, has diverged fidelity, and is qualified for assurance.","caveats":[213,214,215,216,217,218]},{"feature":"refEqual","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"refEqual is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reference","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reference","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reference","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"referenceWithPath","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"referenceWithPath is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"refFromURL","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"refFromURL is available, has diverged fidelity, and is qualified for assurance.","caveats":[219,220]},{"feature":"refPath","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"refPath is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"registerVersion","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"registerVersion is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"registerWith","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"registerWith is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reload","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reload","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reload","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reload","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reload is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"remove","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"remove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"remove","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"remove is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeAll","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeAuthStateListener","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeAuthStateListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeEventListener","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeEventListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeIdTokenListener","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeIdTokenListener is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeObserver","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeObserver is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeValue","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"removeValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"removeValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"replace","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"replace is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"replace","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"replace is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"replace","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"replace is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.auth","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.auth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.auth","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.auth is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.auth.token","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.auth.token is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.auth.token","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.auth.token is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.auth.uid","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.auth.uid is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.auth.uid","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.auth.uid is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.method","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.method is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.method","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.method is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.path","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.path","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.path is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.query","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.query is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.resource","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.resource","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.resource.contentType","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource.contentType is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.resource.data","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource.data is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.resource.id","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource.id is available, has conforms fidelity, and is eligible for assurance.","caveats":[221]},{"feature":"request.resource.metadata","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource.metadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.resource.name","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource.name is available, has conforms fidelity, and is eligible for assurance.","caveats":[222]},{"feature":"request.resource.size","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.resource.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.time","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.time is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"request.time","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"request.time is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"RequestOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"RequestOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"requiredFields","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"requiredFields is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"reset","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"reset is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.bucket","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.bucket is available, has conforms fidelity, and is eligible for assurance.","caveats":[223]},{"feature":"resource.cacheControl","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.cacheControl is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.contentDisposition","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.contentDisposition is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.contentEncoding","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.contentEncoding is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.contentLanguage","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.contentLanguage is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.contentType","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.contentType is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.crc32c","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.crc32c is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.data","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.data is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.etag","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.etag is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.generation","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.generation is available, has conforms fidelity, and is eligible for assurance.","caveats":[225]},{"feature":"resource.id","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.id is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.md5Hash","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"resource.md5Hash is available, has unverified fidelity, and is qualified for assurance.","caveats":[224]},{"feature":"resource.metadata","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.metadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.metageneration","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.metageneration is available, has conforms fidelity, and is eligible for assurance.","caveats":[226]},{"feature":"resource.__name__","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.__name__ is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.name","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.name is available, has conforms fidelity, and is eligible for assurance.","caveats":[227]},{"feature":"resource.size","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"resource.timeCreated","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.timeCreated is available, has conforms fidelity, and is eligible for assurance.","caveats":[228]},{"feature":"resource.updated","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"resource.updated is available, has conforms fidelity, and is eligible for assurance.","caveats":[229]},{"feature":"ResponseModality","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ResponseModality is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"restoreSession","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"restoreSession is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"re-subscribe","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"re-subscribe is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"RetrievalConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"RetrievalConfig is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"RetrievedContextAttribution","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"RetrievedContextAttribution is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"revokeAccessToken","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"revokeAccessToken is available, has diverged fidelity, and is qualified for assurance.","caveats":[230,231]},{"feature":"Role","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Role is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"root","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"root is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"root","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"root is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"root","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"root is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"root","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"root is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"root","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"root is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-create","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-create is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-create","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-create is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-delete","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-delete is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-delete","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-delete is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-get","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-get","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-get is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-list","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-list is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-list","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-list is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-read","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-read is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-read","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-read is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-update","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-update is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-update","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-update is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-write","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-write is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.allow-write","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.allow-write is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.function","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.function is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.function","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.function is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.import","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"rule-kind.import is available, has unverified fidelity, and is qualified for assurance.","caveats":[232]},{"feature":"rule-kind.indexOn","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.indexOn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.indexOn-non-string","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.indexOn-non-string is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.invalid-key","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.invalid-key is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.let","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.let is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.let","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.let is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.location-wildcard","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.location-wildcard is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.match","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.match is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.match","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.match is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.non-boolean-result","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.non-boolean-result is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.non-expression-value","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.non-expression-value is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.non-object-child","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.non-object-child is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.read","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.read is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.rules_version","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.rules_version is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.rules_version","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.rules_version is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.sibling-wildcards","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.sibling-wildcards is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.unknown-key","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"rule-kind.unknown-key is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"rule-kind.validate","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.validate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"rule-kind.write","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"rule-kind.write is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ruleset","surface":"rtdb","importPaths":["pyric/rules/internal/rtdb"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ruleset is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransaction","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransaction","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"runTransaction is available, has unverified fidelity, and is qualified for assurance.","caveats":[233,16]},{"feature":"runTransaction","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"runTransaction is available, has unverified fidelity, and is qualified for assurance.","caveats":[233,17]},{"feature":"runTransaction","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransaction","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"runTransaction is available, has diverged fidelity, and is qualified for assurance.","caveats":[211,212,234,235,236,237,238,239]},{"feature":"runTransaction","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransaction","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransactionAsync","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransactionAsync is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransactionBlock","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransactionBlock is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"runTransactionWithOptions","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"runTransactionWithOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SafetyRating","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SafetyRating is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SafetySetting","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SafetySetting is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SAMLAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"SAMLAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Schema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"Schema is available, has diverged fidelity, and is qualified for assurance.","caveats":[240,241]},{"feature":"SchemaInterface","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SchemaInterface is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SchemaParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SchemaParams is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SchemaRequest","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SchemaRequest is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SchemaShared","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SchemaShared is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SchemaType","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SchemaType is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"script","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"script is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SDK_VERSION","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"SDK_VERSION is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SearchEntrypoint","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SearchEntrypoint is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"Segment","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Segment is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"semantic.deny-by-default","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"semantic.deny-by-default is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"semantic.deny-by-default","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.deny-by-default is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.error-absorption-and","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.error-absorption-and is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.error-absorption-or","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.error-absorption-or is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.get-budget","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"semantic.get-budget is available, has unverified fidelity, and is qualified for assurance.","caveats":[]},{"feature":"semantic.hierarchical-match-cascade","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.hierarchical-match-cascade is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.method-argument-type","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"semantic.method-argument-type is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"semantic.method-wrong-receiver","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"semantic.method-wrong-receiver is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"semantic.parse-error","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"semantic.parse-error is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"semantic.read-cascade","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.read-cascade is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.read-umbrella","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.read-umbrella is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.recursive-wildcard","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.recursive-wildcard is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.recursive-wildcard","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.recursive-wildcard is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.regex-literal","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.regex-literal is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.rules-size-limit","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.rules-size-limit is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.type-dispatch","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"semantic.type-dispatch is available, has unverified fidelity, and is qualified for assurance.","caveats":[242]},{"feature":"semantic.validate-non-cascade","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.validate-non-cascade is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.write-cascade","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.write-cascade is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"semantic.write-umbrella","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"semantic.write-umbrella is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"send","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"send is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[243,244,46,47,2,3]},{"feature":"sendAuthChangesEvent","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"sendAuthChangesEvent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"sendEach","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"sendEach is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[243,244]},{"feature":"sendEachForMulticast","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"sendEachForMulticast is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"sendEmailVerification","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"sendEmailVerification is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"sendMessage","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"sendMessage is available, has diverged fidelity, and is qualified for assurance.","caveats":[114,115]},{"feature":"sendMessageStream","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"sendMessageStream is available, has diverged fidelity, and is qualified for assurance.","caveats":[245,246]},{"feature":"sendPasswordResetEmail","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"sendPasswordResetEmail is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SendResponse","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"SendResponse is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"sendSignInLinkToEmail","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"sendSignInLinkToEmail is available, has diverged fidelity, and is qualified for assurance.","caveats":[247,248]},{"feature":"serializeRtdbRules","surface":"rtdb","importPaths":["pyric/rules/internal/rtdb"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serializeRtdbRules is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverIncrement","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverIncrement is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverIncrement","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverIncrement is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverIncrement","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverIncrement is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimeOffset","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"serverTimeOffset is available, has diverged fidelity, and is qualified for assurance.","caveats":[156,157]},{"feature":"serverTimeOffset","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"serverTimeOffset is available, has diverged fidelity, and is qualified for assurance.","caveats":[158,159]},{"feature":"serverTimeOffset","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"serverTimeOffset is available, has diverged fidelity, and is qualified for assurance.","caveats":[160,161]},{"feature":"serverTimestamp","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestamp","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"serverTimestampPropertyWrapper","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"serverTimestampPropertyWrapper is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"sessionIsolation","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"sessionIsolation is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SessionResumptionConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"SessionResumptionConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"set","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.difference","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.difference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.difference","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.difference is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.hasAll","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.hasAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.hasAll","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.hasAll is available, has conforms fidelity, and is eligible for assurance.","caveats":[249]},{"feature":"set.hasAny","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.hasAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.hasAny","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.hasAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.hasOnly","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.hasOnly is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.hasOnly","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.hasOnly is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.intersection","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.intersection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.intersection","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.intersection is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.size","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.union","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.union is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"set.union","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"set.union is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setData","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setData","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setDataMerge","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setDataMerge is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setDataMergeFields","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setDataMergeFields is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setDoc","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"setDoc is available, has diverged fidelity, and is qualified for assurance.","caveats":[90,91]},{"feature":"setIndexConfiguration","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setIndexConfiguration is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setLanguageCode","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setLanguageCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setLogLevel","surface":"app","importPaths":["pyric/app"],"evidenceSlug":"app-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setLogLevel is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setLogLevel","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"setLogLevel is available, has diverged fidelity, and is qualified for assurance.","caveats":[250,165]},{"feature":"setNull","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setNull is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SetOptions","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SetOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"setPersistence","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"setPersistence is available, has diverged fidelity, and is qualified for assurance.","caveats":[251,252]},{"feature":"setPersistence","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setPersistence is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setPriority","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setPriority","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setPriority","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setPriority","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setRules","surface":"firestore","importPaths":[],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"setRules is available, has diverged fidelity, and is qualified for assurance.","caveats":[253,254]},{"feature":"setRules","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setRules is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setRules","surface":"storage","importPaths":[],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setRules is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SettableMetadata","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SettableMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"settings","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"settings is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"settings","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"settings is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"settings","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"settings is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setTokenAutoRefreshEnabled","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setTokenAutoRefreshEnabled is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setValue","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setValueAndPriority","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setValueAndPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setValueNil","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setValueNil is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setValueNull","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setValueNull is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setValueWithPriority","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setValueWithPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setWithPriority","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setWithPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"setWithPriority","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"setWithPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInAnonymously","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"signInAnonymously is available, has diverged fidelity, and is qualified for assurance.","caveats":[255,256,257,258]},{"feature":"signInAnonymously","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInAnonymously is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInAnonymously","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInAnonymously is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInAnonymously","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInAnonymously is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SignInMethod","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"SignInMethod is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"signInWithCredential is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[259,260,261,262]},{"feature":"signInWithCredential","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithCredential","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithCredential","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithCustomToken","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"signInWithCustomToken is available, has diverged fidelity, and is qualified for assurance.","caveats":[263,264]},{"feature":"signInWithEmailAndPassword","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"signInWithEmailAndPassword is available, has diverged fidelity, and is qualified for assurance.","caveats":[265,266,267,268]},{"feature":"signInWithEmailAndPassword","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithEmailAndPassword","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithEmailAndPassword","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithEmailLink","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithEmailLink is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signInWithPhoneNumber","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"signInWithPhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132]},{"feature":"signInWithPopup","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"signInWithPopup is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[259,260,261,262]},{"feature":"signInWithRedirect","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signInWithRedirect is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signOut","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"signOut is available, has diverged fidelity, and is qualified for assurance.","caveats":[269,270]},{"feature":"signOut","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signOut is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signOut","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signOut is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"signOut","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"signOut is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"simulateRtdbRules","surface":"rtdb","importPaths":["pyric/rules/internal/rtdb"],"evidenceSlug":"database-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"simulateRtdbRules is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[271,272,273,274]},{"feature":"SingleRequestOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SingleRequestOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"size","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SlidingWindow","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"SlidingWindow is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"snapshot.arity","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"snapshot.arity is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"snapshot.child","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.child is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.exists","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.exists is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.getPriority","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.getPriority is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.hasChild","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.hasChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.hasChildren","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.hasChildren is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.isBoolean","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.isBoolean is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.isNumber","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.isNumber is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.isString","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.isString is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.parent","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.parent is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshot.unknown","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"snapshot.unknown is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"snapshot.val","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshot.val is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotChild","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotChild","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotChild is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotDocumentID","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotDocumentID is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotEqual","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotEqual is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotKey","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotKey","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotKey","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotKey is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SnapshotListenOptions","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SnapshotListenOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"SnapshotMetadata","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"SnapshotMetadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotMetadata","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotMetadata is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SnapshotOptions","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"SnapshotOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"snapshots","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshots is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshots","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshots is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshots","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshots is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshots","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshots is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshots","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshots is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotsInSync","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"snapshotsInSync is available, has unverified fidelity, and is qualified for assurance.","caveats":[275,16]},{"feature":"snapshotsInSync","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"snapshotsInSync is available, has unverified fidelity, and is qualified for assurance.","caveats":[276,17]},{"feature":"snapshotState","surface":"rtdb","importPaths":[],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotState is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotValue","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotValue","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"snapshotValue","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"snapshotValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"SpeechConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"SpeechConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"startAfter","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAfter","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAfter","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAfter","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAfter","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAfter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAfterDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAfterDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAt","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAt is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAtDocument","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAtDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAtDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startAtDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"startAudioConversation","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"startAudioConversation is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[277]},{"feature":"StartAudioConversationOptions","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"StartAudioConversationOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"startChat","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"startChat is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"StartChatParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"StartChatParams is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"StartTemplateChatParams","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"StartTemplateChatParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"StorageError","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"StorageError is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"StorageErrorCode","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"StorageErrorCode is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"StorageObserver","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"StorageObserver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"StorageReference","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"StorageReference is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"String","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"String is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"String","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"String is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.beginsWith","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.beginsWith is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.contains","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.contains is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.endsWith","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.endsWith is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.length","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.length is available, has conforms fidelity, and is eligible for assurance.","caveats":[278]},{"feature":"string.length-call","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"string.length-call is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"string.lower","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.lower is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.lower","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.lower is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.matches","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.matches is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.matches","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.matches is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.matches","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.matches is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.replace","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.replace is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.replace","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.replace is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.replace","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.replace is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.size","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.size is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.split","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.split is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.split","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.split is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.toLowerCase","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.toLowerCase is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.toUpperCase","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.toUpperCase is available, has conforms fidelity, and is eligible for assurance.","caveats":[279]},{"feature":"string.toUtf8","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.toUtf8 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.toUtf8","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.toUtf8 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.trim","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.trim is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.trim","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.trim is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.unknown","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"string.unknown is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"string.upper","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.upper is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"string.upper","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"string.upper is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"stringEscapes","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"stringEscapes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"StringFormat","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"StringFormat is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"StringSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"StringSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"subscribeToTopic","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"subscribeToTopic is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"subscript","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"subscript is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"sum","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"sum is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"switchLens","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"switchLens is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"takeAuthMail","surface":"auth","importPaths":[],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"takeAuthMail is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TaskEvent","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TaskEvent is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"TaskState","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TaskState is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"TaskState","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TaskState is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"TemplateChatSession","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateChatSession is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"TemplateFunctionDeclaration","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateFunctionDeclaration is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"TemplateFunctionDeclarationsTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateFunctionDeclarationsTool is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"TemplateGenerativeModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[143,4]},{"feature":"TemplateImagenModel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"out-of-scope","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[144,4]},{"feature":"TemplateTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateTool is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"TemplateToolConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TemplateToolConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"tenant","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"tenant is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"tenant","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"tenant is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"tenantId","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"tenantId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"tenantId","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"tenantId is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"terminate","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"terminate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"terminate","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"terminate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"terminate","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"terminate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"terminate","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"terminate is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ternary","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ternary is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"ternary","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"ternary is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"text","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"text is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TextPart","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TextPart is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ThenableReference","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ThenableReference is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ThinkingConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ThinkingConfig is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ThinkingLevel","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ThinkingLevel is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"thoughtSummary","surface":"ai","importPaths":[],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"thoughtSummary is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Timestamp","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Timestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Timestamp","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Timestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Timestamp","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Timestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp","surface":"firestore-rules","importPaths":["pyric/rules"],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Timestamp","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Timestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.date","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.date is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.date","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.date is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.day","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.day is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.day","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.day is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.dayOfWeek","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.dayOfWeek is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.dayOfWeek","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.dayOfWeek is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.dayOfYear","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.dayOfYear is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.dayOfYear","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.dayOfYear is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.hours","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.hours is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.hours","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.hours is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.minutes","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.minutes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.minutes","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.minutes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.month","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.month is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.month","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.month is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.nanos","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.nanos is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.nanos","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.nanos is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.seconds","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.seconds is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.seconds","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.seconds is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.time","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.time is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.time","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.time is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.toMillis","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.toMillis is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.toMillis","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.toMillis is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.value","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.value is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.value","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.value is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.year","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.year is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"timestamp.year","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"timestamp.year is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TokenMessage","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"TokenMessage is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"toObject","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"toObject is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Tool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Tool is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"ToolConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"ToolConfig is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"TopicMessage","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"TopicMessage is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"toSet","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"toSet is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"toSet","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"toSet is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TotpMultiFactorAssertion","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TotpMultiFactorAssertion is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"TotpMultiFactorGenerator","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"TotpMultiFactorGenerator is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132,4]},{"feature":"TotpMultiFactorInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"TotpMultiFactorInfo is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"TotpSecret","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"TotpSecret is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[132,4]},{"feature":"toUtf8","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"toUtf8 is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Transaction","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"Transaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transaction","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transaction","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transaction","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transaction is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionAbort","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionAbort is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionAbort","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionAbort is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionAbort","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionAbort is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionDeleteDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionDeleteDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionGetDocument","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionGetDocument is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TransactionOptions","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TransactionOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"TransactionOptions","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TransactionOptions is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"transactionOptionsMaxAttempts","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionOptionsMaxAttempts is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TransactionResult","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TransactionResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"transactionSetData","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionSetData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionSetDataMerge","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionSetDataMerge is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionSetDataMergeFields","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionSetDataMergeFields is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"transactionUpdateData","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"transactionUpdateData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Transcription","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"Transcription is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"trim","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"trim is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TwitterAuthProvider","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"TwitterAuthProvider is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"TypedSchema","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"TypedSchema is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"uid","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"uid is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"uid","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"uid is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"uid","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"uid is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"unbound-path-variable","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"unbound-path-variable is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"unchangedKeys","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"unchangedKeys is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"union","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"union is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"union","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"union is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"UnionToIntersection","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UnionToIntersection is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"unknown-variable","surface":"rtdb-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"diverged","assurance":"ineligible","summary":"unknown-variable is available, has diverged fidelity, and is ineligible for assurance.","caveats":[]},{"feature":"unlink","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"unlink is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"Unsubscribe","surface":"app-check","importPaths":["pyric/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"Unsubscribe","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"Unsubscribe","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"Unsubscribe","surface":"messaging","importPaths":["pyric/messaging","pyric/messaging/sw"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"Unsubscribe","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"unsubscribeFromTopic","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"unsubscribeFromTopic is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"unsupportedBuiltins","surface":"firestore-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"unsupportedBuiltins is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"update","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"update is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"update","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"update is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"update","surface":"rtdb","importPaths":["pyric/database"],"evidenceSlug":"database-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"update is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"update","surface":"rtdb-flutter","importPaths":[],"evidenceSlug":"rtdb-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"update is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateChildren","surface":"rtdb-kotlin","importPaths":[],"evidenceSlug":"rtdb-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateChildren is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateChildValues","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateChildValues is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateCurrentUser","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateCurrentUser is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"UpdateData","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UpdateData is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"updateData","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateData is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateDoc","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateDoc is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateEmail","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"updateEmail is available, has diverged fidelity, and is qualified for assurance.","caveats":[280,281]},{"feature":"updateEmail","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateEmail is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateMetadata","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"updateMetadata is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[282,283,126,127,128,129]},{"feature":"updatePassword","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updatePassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updatePassword","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updatePassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updatePhoneNumber","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"deferred","fidelity":"not-applicable","assurance":"not-applicable","summary":"updatePhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[284]},{"feature":"updateProfile","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateProfile is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateProfile","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateProfile is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateProfile","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateProfile is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"updateProfile","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"updateProfile is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"uploadBytes","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"uploadBytes is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"uploadBytesResumable","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"uploadBytesResumable is available, has diverged fidelity, and is qualified for assurance.","caveats":[285,286,287,288,289,290,291,292,130,131]},{"feature":"UploadMetadata","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"UploadMetadata is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"UploadResult","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UploadResult is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"uploadString","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"uploadString is available, has diverged fidelity, and is qualified for assurance.","caveats":[293,294]},{"feature":"UploadTask","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UploadTask is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"UploadTaskSnapshot","surface":"storage","importPaths":["pyric/storage"],"evidenceSlug":"storage-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UploadTaskSnapshot is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"upper","surface":"storage-rules","importPaths":[],"evidenceSlug":"rules-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"upper is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"URLContext","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"URLContext is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"URLContextMetadata","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"URLContextMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"URLContextTool","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"URLContextTool is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"URLMetadata","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"URLMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"URLRetrievalStatus","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"URLRetrievalStatus is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"UsageMetadata","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UsageMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"useAuthEmulator","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"useAuthEmulator is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"useDeviceLanguage","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"useDeviceLanguage is available, has diverged fidelity, and is qualified for assurance.","caveats":[295,296]},{"feature":"useEmulator","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"useEmulator is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"useEmulator","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"useEmulator is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"User","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"unsupported","assurance":"ineligible","summary":"User is available, has unsupported fidelity, and is ineligible for assurance.","caveats":[297,298,299,300]},{"feature":"userChanges","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"userChanges is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"UserCredential","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UserCredential is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"UserCredential","surface":"auth-flutter","importPaths":[],"evidenceSlug":"auth-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"UserCredential is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"UserInfo","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"UserInfo is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"userInfo","surface":"auth-swift","importPaths":[],"evidenceSlug":"auth-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"userInfo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"UserMetadata","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"UserMetadata is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"UserProfile","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"UserProfile is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"userProfileChangeRequest","surface":"auth-kotlin","importPaths":[],"evidenceSlug":"auth-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"userProfileChangeRequest is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"validatePassword","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"validatePassword is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"valueStream","surface":"rtdb-swift","importPaths":[],"evidenceSlug":"rtdb-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"valueStream is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"vector","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"vector is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"vector","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"vector is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"VectorValue","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"VectorValue is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"verifyBeforeUpdateEmail","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"verifyBeforeUpdateEmail is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"verifyPasswordResetCode","surface":"auth","importPaths":["pyric/auth"],"evidenceSlug":"auth-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"verifyPasswordResetCode is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"verifyToken","surface":"app-check-admin","importPaths":["pyric-admin/app-check"],"evidenceSlug":"app-check-compat","availability":"available","fidelity":"diverged","assurance":"qualified","summary":"verifyToken is available, has diverged fidelity, and is qualified for assurance.","caveats":[301,302,303,304,305,306,307,308,27,28]},{"feature":"VertexAIBackend","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"VertexAIBackend is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"VideoMetadata","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"VideoMetadata is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"VoiceConfig","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"VoiceConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"waitForPendingWrites","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"waitForPendingWrites is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"waitForPendingWrites","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"waitForPendingWrites is available, has unverified fidelity, and is qualified for assurance.","caveats":[309,16]},{"feature":"waitForPendingWrites","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"waitForPendingWrites is available, has unverified fidelity, and is qualified for assurance.","caveats":[309,17]},{"feature":"waitForPendingWrites","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"unverified","assurance":"qualified","summary":"waitForPendingWrites is available, has unverified fidelity, and is qualified for assurance.","caveats":[310,1]},{"feature":"WebAttribution","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"unavailable","fidelity":"not-applicable","assurance":"not-applicable","summary":"WebAttribution is unavailable; behavior fidelity and assurance are not applicable until the surface exists.","caveats":[4]},{"feature":"WebGroundingChunk","surface":"ai","importPaths":["pyric/ai"],"evidenceSlug":"ai-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"WebGroundingChunk is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"WebpushConfig","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"WebpushConfig is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"WebpushFcmOptions","surface":"messaging-admin","importPaths":["pyric-admin/messaging"],"evidenceSlug":"messaging-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"WebpushFcmOptions is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"where","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"where is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"where","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"where is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"where","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"where is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereArrayContains","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereArrayContains is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereArrayContainsAny","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereArrayContainsAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereEqualTo","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereEqualTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldArrayContains","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldArrayContains is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldArrayContainsAny","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldArrayContainsAny is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldEqualTo","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldEqualTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldGreaterThan","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldGreaterThan is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldGreaterThanOrEqualTo","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldGreaterThanOrEqualTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldIn","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldIn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldLessThan","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldLessThan is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldLessThanOrEqualTo","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldLessThanOrEqualTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldNotEqualTo","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldNotEqualTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFieldNotIn","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFieldNotIn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereFilter","surface":"firestore-swift","importPaths":[],"evidenceSlug":"firestore-swift-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereFilter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"WhereFilterOp","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"WhereFilterOp is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"whereGreaterThan","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereGreaterThan is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereIn","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereIn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereIn","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereIn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereLessThan","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereLessThan is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereNotEqualTo","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereNotEqualTo is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereNotIn","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereNotIn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"whereNotIn","surface":"firestore-kotlin","importPaths":[],"evidenceSlug":"firestore-kotlin-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"whereNotIn is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"withConverter","surface":"firestore","importPaths":[],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"withConverter is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"WithFieldValue","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"not-applicable","assurance":"not-applicable","summary":"WithFieldValue is available, has no applicable behavior claim, and has no assurance classification.","caveats":[]},{"feature":"WriteBatch","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"WriteBatch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"writeBatch","surface":"firestore","importPaths":["pyric/firestore"],"evidenceSlug":"firestore-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"writeBatch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]},{"feature":"writeBatch","surface":"firestore-flutter","importPaths":[],"evidenceSlug":"firestore-flutter-compat","availability":"available","fidelity":"conforms","assurance":"eligible","summary":"writeBatch is available, has conforms fidelity, and is eligible for assurance.","caveats":[]}];
11
- export const CONFORMANCE_SUPPORTS: readonly BrowserFeatureSupport[] = INTERNED_SUPPORTS.map((support) => ({ ...support, caveats: support.caveats.map((index) => CAVEAT_TEXT[index]!) }));
9
+ const SURFACES: readonly DeveloperSurface[] = ["firestore","auth-kotlin","auth","firestore-flutter","firestore-kotlin","firestore-swift","storage-rules","auth-flutter","auth-swift","rtdb-kotlin","ai","firestore-rules","messaging-admin","app-check","rtdb-rules","rtdb","storage-admin","rtdb-flutter","rtdb-swift","storage","app-check-admin","functions-rtdb","app","messaging"];
10
+ const IMPORT_PATHS: readonly (readonly string[])[] = [["pyric/firestore"],[],["pyric/auth"],["pyric/ai"],["pyric/rules"],["pyric-admin/messaging"],["pyric/app-check"],["pyric-admin/storage"],["pyric/database"],["pyric/rules/internal/rtdb"],["pyric/storage"],["pyric-admin/app-check"],["pyric/app"],["pyric/messaging"],["pyric/messaging/sw"],["pyric/messaging","pyric/messaging/sw"]];
11
+ const EVIDENCE_SLUGS: readonly string[] = ["firestore-compat","auth-kotlin-compat","auth-compat","firestore-flutter-compat","firestore-kotlin-compat","firestore-swift-compat","rules-compat","auth-flutter-compat","auth-swift-compat","rtdb-kotlin-compat","ai-compat","messaging-compat","app-check-compat","database-compat","storage-compat","rtdb-flutter-compat","rtdb-swift-compat","functions-rtdb-compat","app-compat"];
12
+ const AVAILABILITY_VALUES: readonly Availability[] = ["available","unavailable","out-of-scope","deferred"];
13
+ const FIDELITY_VALUES: readonly Fidelity[] = ["conforms","not-applicable","unverified","bug","diverged","unsupported"];
14
+ const ASSURANCE_VALUES: readonly Assurance[] = ["eligible","not-applicable","qualified","ineligible"];
15
+ const CAVEAT_TEXT: readonly string[] = ["Attaches a callback invoked when all active snapshot listeners synchronize.","FirebaseFirestore Swift specification; unverified locally.","When a target device is offline FCM stores the message and delivers it on reconnect, up to its time-to-live (`android.ttl`, APNs expiration, webpush `headers.TTL`; the legacy default is 2419200 seconds / four weeks). A collapse key (`android.collapseKey`, `collapseKey`) marks a message as collapsible so a newer collapsible message replaces an older still-undelivered one, and only the last is delivered on reconnect; a message whose TTL elapses before reconnect is dropped rather than delivered. Stated from FCM message-lifecycle documentation; no committed observation replays store-and-forward, collapse, or TTL expiry yet.","Upstream documentation (FCM message lifecycle: TTL, collapse keys, store-and-forward); no observation yet. Candidate probe: send several collapsible messages to a token whose web client is offline, bring it online within TTL, and assert only the last collapsible message is delivered; separately, let a short-TTL message expire before reconnect and assert it is dropped.","Public type export is not mirrored.","Production: sum and average over a field holding NaN return NaN, and over Infinity return Infinity. Pyric skips the non-finite values (sum 3 and average 1.5; sum 1 and average 1). FL-28.","`oracle:firestore-aggregate-field-semantics` keys `nan` and `inf`.","`sandbox.setUser` (the sandbox-only test driver) BYPASSES the gate entirely — it is a raw identity force with no prod analog (same bypass it already has for provider enforcement / `signInProvider` tracking), so no registered `beforeAuthStateChanged` callback runs and none can block it.","`unit:sandbox-before-auth-state-changed.test.ts` (\"sandbox.setUser test driver bypasses the gate\")","Served-worker path (SharedWorker-backed auth in `@pyric/cli`): the worker owns the shared user pool and commits transitions on its own side of the port, so a page-local `beforeAuthStateChanged` registration can't actually gate a worker-driven sign-in. Rather than silently accept a callback that could never run, registering THROWS immediately (`auth/operation-not-supported-in-this-environment`) — same defensive pattern as `signInWithCredential` over the worker.","`packages/cli/src/serve/worker/client.ts` (`beforeAuthStateChanged` throws `makeUnsupported`)","Inert configuration tokens, accepted so the idiomatic `initializeAuth(app, { persistence: indexedDBLocalPersistence })` and `setPersistence(auth, browserCookiePersistence)` compile, run, and behave identically. The `.type` discriminant matches upstream exactly (`NONE` / `SESSION` / `LOCAL` / `LOCAL` / `COOKIE`) because consumer code branches on it. `browserPopupRedirectResolver` is accepted and ignored — the sandbox has its own first-class pluggable equivalent (`sandbox.setAuthFlowResolver`). `prodErrorMap` is accepted and DELIBERATELY not honored: installing it upstream strips error messages, and doing that in a sandbox whose purpose is to tell a developer what went wrong would be actively hostile.","In an in-memory sandbox the persistence CHOICE has no observable consequence, so accepting the token and recording the mode is the honest behavior — the same inert-token pattern `pyric/firestore` uses for its cache-factory tokens. `unit:types.test.ts` + `unit:sandbox-email-link.test.ts` cover the exports. Oracle caveat recorded on auth#172: the `persistenceTypes` block of `auth-mechanical-surface-constants` reports `NONE` for every token including `browserLocalPersistence` — a Node-build stub artifact, not the browser contract, so the `.type` values here follow the documented `Persistence.type` union instead.","Deletes every file `getFiles` would list across its pages, up to `maxResults`, ten at a time, and leaves the others. Without `force` the first failed delete rejects the call; with `force` every file is tried and the call rejects with the array of errors","`bucket-listing.test.ts` pins `force` as `@google-cloud/storage` 7.21 `Bucket.deleteFiles` defines it: the first error without it, the array of errors with it. `bucket-files.test.ts` deletes a prefix on the in-process arm and on a SharedWorker host, and leaves other prefixes and buckets. The app scenario `admin-storage-delete-prefix` deletes a prefix from a firebase-admin backend under `pyric sandbox --hosted` and finds the other objects still there.","Lists the files whose names start with `prefix`, in name order, as `[files, nextQuery, apiResponse]`. `delimiter` rolls names up into `apiResponse.prefixes`. `maxResults` or `autoPaginate: false` gives one page and the next page's query, or `null` on the last page; reading every page gives the call's own query in that position. `apiResponse` has no `items`, and the files carry no `metadata` until `getMetadata`","`bucket-listing.test.ts` pins prefix, delimiter, page, and result-tuple semantics as `@google-cloud/storage` 7.21 `Bucket.getFiles` and `@google-cloud/paginator` 5 `run_` define them. `bucket-files.test.ts` runs the same queries on the in-process arm and on a SharedWorker host. The app scenario `admin-storage-delete-prefix` calls `getFiles({ prefix })` from a firebase-admin backend under `pyric sandbox --hosted`. The remote arms read names with the host's `storage.listAll`, one folder at a time.","Integers are 64-bit: values above 2^53 keep every bit, overflow is an evaluation error except `MIN / -1`, which is `MIN`, unary minus negates a duration, and a timestamp or duration result past its range is an error (FS2-SIM-1, FS2-SIM-2, FS2-SIM-3, FS2-SIM-9)","`oracle:rules-firestore-int64-and-duration-range` (captured 2026-10-27, 22 cases) records production ALLOWING `neg duration equals duration.value(-1, 's')`, `int64 max is greater than max minus one`, `2^53 plus one differs from 2^53`, `string() of 2^53 plus one` and `min divided by minus one is min`, and DENYING `max plus one is positive`, `max timestamp plus 1 ms is later` and `duration past the protobuf bound is positive`. The simulator holds ints as JavaScript doubles and errors on a negated duration, so it disagrees on 12 cases: 3 under FS2-SIM-1, 7 under FS2-SIM-2 and 2 under FS2-SIM-3. `unit:rules/oracle-conformance.test.ts` pins both sides of each in `packages/conformance/firestore-rules-exceptions/`. The other 10 cases agree, including the 3 under FS2-SIM-9: a timestamp or duration past its range is production's `Timestamp is not valid` or `Duration is not valid` error (#1336), replayed by `unit:rules/simulator/time-range.test.ts`. Timestamp and duration range is no longer in this row's diverged scope. Comparison operators are not in scope: they compare correctly, and the wrong answers come from the integer values they are handed. Pending fix in the 2026-10-27 Firestore hunt's stream S4.","Integers are 64-bit: distinct values above 2^53 compare unequal, `int()` and `string()` keep every bit, and overflow is an evaluation error (ST-H1-4, sharing FS2-SIM-2 and FS2-SIM-3)","`oracle:rules-storage-h1-int64-precision` (captured 2026-10-27, 9 cases) records production DENYING `9007199254740993 == 9007199254740992` and `9223372036854775807 + 1 > 0`, and ALLOWING `9223372036854775807 > 9223372036854775806`, `9007199254740993 - 1 == 9007199254740992` and `string(9007199254740993) == '9007199254740993'`. The evaluator holds ints as JavaScript doubles, so it disagrees on 7 cases: 5 under FS2-SIM-2 and 2 under FS2-SIM-3, filed for Storage as ST-H1-4. `unit:storage/rules-oracle-conformance.test.ts` pins both sides of each in `packages/conformance/storage-rules-exceptions/`. The other 2 cases agree. Comparison operators are not in scope: the wrong answers come from the integer values. Pending fix.","Clears offline client persistence cache when no active listeners exist.","cloud_firestore_platform_interface specification; unverified locally.","com.google.firebase.firestore specification; unverified locally.","No-op on sandbox-target handles (the sandbox IS the local emulator)","Phase 3","A production target is intentionally absent; production code continues to use `connectDatabaseEmulator` from the unchanged `firebase/database` package","Exported by `firebase/storage`; reroutes a `FirebaseStorage` handle to a local emulator","not implemented in `pyric/storage` — the sandbox IS the local-target alternative; emulator parity is out of scope per `index.ts`","Aggregates count documents server-side without paying read cost per doc in prod; sandbox computes locally (no cost model)","divergence: cost behavior differs, observable shape identical. Oracle-locked: `packages/conformance/observations/firestore/firestore-count-aggregate-shape.json` — `getCountFromServer().data()` returns `{ count: <number> }` (single key, no other fields). Empty query returns `count: 0` (not `null`/`undefined`); seeded 3 docs returns `count: 3`; filtered query honors the `where` constraint (`count: 2`).","Production: when count() is paired with sum(y), count includes only the docs that have y (3 of 4). Pyric counts every doc in the query (4). FL-27.","`oracle:firestore-aggregate-field-semantics` key `countAndSumY`.","Production: an app id the project does not own rejects with `app-check/unknown-error` and the message `App not registered: <appId>.` Sandbox: it has no list of the project's registered apps, so it mints a token for any non-empty app id; an empty app id rejects with `app-check/invalid-argument`.","capture `app-check-admin-create-token-unknown-app`; the sandbox side is pinned in the admin suite.","An app initialized with only a cert credential finds its project in the service account's `project_id` (or `projectId`), so `createToken` mints a token whose `aud` names `projects/<project_id>` and `verifyToken` accepts it. The `projectId` app option wins over the credential, and the credential wins over `GOOGLE_CLOUD_PROJECT` and `GCLOUD_PROJECT`. The project id is not copied into `app.options`.","Upstream-documented only: firebase-admin 13.6.0 `lib/utils/index.js` (`getExplicitProjectId`) and `lib/app/credential-internal.js` (`ServiceAccount`, `copyAttr`). No capture; the project is resolved locally in the Admin SDK.","AC-1: pyric ignores jti, so two same-jti tokens differ and both first consumes say false; production returns one token and the second consume says true.","`oracle:app-check-admin-options-create-token` and `oracle:app-check-admin-options-same-jti-consume`.","AC-1c, AC-1d, AC-1e: production rejects jti without limitedUse, a non-boolean limitedUse and a non-string jti; pyric mints a token.","`oracle:app-check-admin-options-create-token`.","AC-1f: production limited-use tokens live 300 s; pyric gives them 3600 s.","AC-2: production throws for null, string or array options and a null ttlMillis; pyric mints a token.","AC-3: for a ttlMillis that is not a number, pyric gives the range message instead of production's duration message.","AC-4: production throws createToken input errors synchronously; pyric returns a rejected promise.","AC-5: for fractional ttlMillis pyric echoes the value and floors the lifetime; production rounds both.","With `FIREBASE_APPCHECK_DEBUG_TOKEN` neither `true` nor a string, the SDK calls the `CustomProvider` and returns its token as given, caching it until its `expireTimeMillis`. When the provider rejects, `getToken` and `getLimitedUseToken` reject with its error, an `onTokenChanged` error handler receives it. AI Logic then depends on the handle: by default it gets the placeholder token and refuses the request with a 403, and with `useLimitedUseAppCheckTokens: true` no request is sent and the call rejects with `AIError` code `error`, message `Error fetching from <url>: <provider message>`.","Upstream source only, `@firebase/app-check` 0.11.3 `dist/esm/index.esm.js`: `initializeDebugMode` (lines 638 to 657), `getToken$2` (the provider path from line 783, `makeDummyTokenResult` on error), `getLimitedUseToken$1` (lines 847 to 861, no placeholder), `CustomProvider.getToken` (lines 1374 to 1388), and the public `getToken` rethrowing `result.error`; `@firebase/ai` 2.12.0 `dist/esm/index.esm.js` `getHeaders` (line 1619) awaited inside `makeRequest`'s `try`, whose `catch` wraps the rejection (line 1717). A real-SDK Node run in the ai-app-check hunt (GATE-1) saw the provider called and its token, or the placeholder, sent to AI Logic. No committed capture.","Returns a distinct Database handle for each database URL; production isolates the data and rules of each URL's database.","FirebaseDatabase Swift specification. The test asserts the handle carries its URL; bridge operations carry no instance field. Swift test: `packages/swift-client/Tests/PyricDatabaseTests/RtdbConformanceTests.swift` assertion set `rtdb-swift#instance-url`.","Production permits a different configuration after deletion; Pyric retains the runtime backend lock and rejects the reinitialization","oracle: `app-registry-delete-reinitialize-different-config` (firebase 12.13.0) + replay pins `app/multiple-configs-not-supported`","Served worker mode rejects page-local custom AnswerEngine objects; a model retained from a deleted app rejects, while an equal-config sibling model remains usable through its own app-scoped worker port","`packages/cli/test/e2e/app-deletion.pw.ts` observes AI code `unsupported` for a custom engine, then exercises retained and sibling models through canonical served imports after deleting one app; `packages/pyric/src/ai/sandbox-plane.ts` guards every model operation. A credentialed production AI lifecycle capture is still needed","Sandbox: no-op on missing path (does NOT throw)","divergence: sandbox is no-op via `persistence.ts`'s `delete`. Prod's `deleteObject` on a missing path throws `storage/object-not-found`. Oracle-locked: `packages/conformance/observations/storage/storage-delete-missing-throws.json` (`code: 'storage/object-not-found'`, `name: 'FirebaseError'` against blockingfun, fb-js-sdk 12.13.0). Both sides pinned in `oracle-conformance.test.ts`; documented in `download.ts`.","A registration token is stable within a session (row messaging#2 pins that repeated `getToken` calls on one service-worker registration return the same token) but is not permanent across the app lifecycle: the SDK rotates it on events such as app reinstall, SDK upgrade, a restored backup, or a notification-permission change, and Google may retire a token server-side. The modular web SDK has no token-refresh callback, so an app observes a new token only by calling `getToken` again; a rotated-away old token eventually stops delivering and the send plane reports the dead token (the UNREGISTERED path pinned by messaging#3). This lifecycle rotation is deliberately outside the within-session stability observation. Stated from FCM token-management documentation; no committed observation replays rotation across lifecycle events yet.","Upstream documentation (FCM token-management guidance); the committed `messaging-web-token-stability` observation covers only within-session stability, not lifecycle rotation. Candidate probe (long-horizon): force a service-worker unregister/re-register or an app-instance reset, re-mint via `getToken`, and record whether the token changed and whether the prior token then reports UNREGISTERED on send.","Disabling network exposes local mutations with cache/pending-write metadata while holding write acknowledgement until network is re-enabled","Real Chromium: `firestore-browser-lifecycle.json`; replayed through the public modular API by `oracle-conformance.test.ts` and focused network coverage. Served planes: accepted no-ops, so an offline write commits at once (FP-9).","Production keeps a denied offline write pending with a local event, then rejects after reconnect; pyric rejects at once. FW-17.","`oracle:firestore-offline-denied-write`.","Toggles client network connectivity to simulate offline operation.","Toggles client network connectivity to simulate offline and online operation.","The language semantics the Firestore hunt found hold under `firebase.storage` too: `split()` drops capture-group text and trailing empty pieces, `trim()` keeps NBSP, ints are 64-bit with overflow errors and `MIN / -1 == MIN`, a timestamp past its range is an error, and unary minus negates a duration (ST-H1-13, sharing FS2-SIM-1, FS2-SIM-2, FS2-SIM-3, FS2-SIM-4, FS2-SIM-7, FS2-SIM-8 and FS2-SIM-9)","`oracle:rules-storage-xref-shared-language-semantics` (captured 2026-10-27, 12 cases) records production giving the Firestore-reported answer on all 12. Storage has its own copies of integer operators and unary minus, and shares `Timestamp.binaryOp`, so the evaluator disagrees on 4 cases: one each under FS2-SIM-1 and FS2-SIM-2, and two under FS2-SIM-3. `unit:storage/rules-oracle-conformance.test.ts` pins both sides of each in `packages/conformance/storage-rules-exceptions/`. The other 8 cases agree, including `timestamp-plus-duration-past-range-errors` under FS2-SIM-9, since the shared `Timestamp` wrapper errors past its range (#1336, replayed by `unit:rules/simulator/time-range.test.ts`), `(?i)` in `split()` and `replace()`, `duration.value()` past its range, and `trim-keeps-nbsp` under FS2-SIM-8: Storage's `trim()` now calls the shared `trimRulesString` (#1295), replayed by `unit:storage/sandbox/rules-string-methods.test.ts`. Storage's `split()` and `replace()` now call the shared `splitRe2` and `replaceRe2` (#1333), so `split-drops-capture-text` (FS2-SIM-4) and `split-drops-trailing-empty` (FS2-SIM-7) agree, and a pattern from request data gets pyric's size limit and the 1000-repeat cap; `unit:rules/simulator/split-and-replace.test.ts` checks both engines. `trim()` and `split()` are no longer in this row's diverged scope. Pending fix.","duration.abs(duration): the absolute value of a Duration.","duration.time(hours, minutes, seconds, nanos): a Duration value.","duration.value(magnitude, unit): a Duration value. A timestamp plus a duration is a timestamp, which makes the freshness idiom `request.time < resource.timeCreated + duration.value(1, 'h')` work.","Custom scopes / params / language code","sandbox ignores; prod forwards","Resolves before Firestore starts and rejects with `failed-precondition` after any operation has started the service","Real Chromium: `firestore-browser-lifecycle.json`; replayed through the public modular API by `oracle-conformance.test.ts` and focused lifecycle coverage. Served planes: an accepted no-op that resolves after first use (FP-9).","The admin SDK retries transient send-transport failures — connection errors and HTTP 5xx / `SERVER_UNAVAILABLE` / `INTERNAL` responses — with backoff before surfacing the error to the caller, so a caller sees a resolved send or a terminal error rather than every intermediate failure. `enableLegacyHttpTransport` switches `sendEach` / `sendEachForMulticast` from HTTP/2 to HTTP/1.1, changing multiplexing and the retry/transport path. Stated from the admin SDK and google-auth transport documentation; no committed observation replays the retry count or backoff schedule yet.","Upstream documentation (firebase-admin 13.10.0 send transport + google-auth retry defaults); no observation yet. Candidate probe: point the send transport at a fault-injecting stub that returns 503 then 200 and record the retry count and backoff intervals before the resolved send.","`enableLogging(logger?, persistent?)` — accepted no-op: the sandbox has no modular-SDK-style logger to wire a level/sink into (it uses host-level `console` logging directly, matching `pyric/firestore`'s `setLogLevel`). Accepted so init code that calls it compiles + runs","`unit:modular/fruit-aliases.test.ts`","An unknown method is an evaluation error value, so `'a'.foo() || true` and `!('a'.foo() == 1 && false)` allow (ST-H1-8)","`oracle:rules-storage-h1-unknown-method-absorption` (captured 2026-10-27, 4 cases) records production ALLOWING all four absorbed unknown-method cases. The evaluator throws an error `||` and `&&` cannot absorb, so it DENIES all four; `unit:storage/rules-oracle-conformance.test.ts` pins both sides of each in `packages/conformance/storage-rules-exceptions/` under ST-H1-8. Pending fix.","The hosted Rules Test API reports function-not-found, so acceptance and evaluation are verified by authenticated Web SDK writes against temporarily deployed production rules with exact release restoration.","Deprecated upstream as a security retraction, not a cosmetic one: the shipped @firebase/auth declaration states it \"returns an empty list when Email Enumeration Protection is enabled, irrespective of the number of authentication methods available\", and that \"migrating off of this method is recommended as a security best-practice\". Enumeration protection is on by default, so against a modern project the production function always returns []. A mirror that reproduced the pre-deprecation behavior would be MORE capable than prod and would silently mislead agent code that branches on the result; a mirror that reproduced the post-deprecation behavior would be a no-op. Same criterion applied to Imagen in firebase/ai — an API whose production counterpart is retiring is out of scope, because mirroring it freezes dead behavior.","Not implemented; disposition `auth.email-enumeration` owns the reviewed availability and rationale.","disposition:auth.email-enumeration; the `auth-fetchsigninmethodsforemail-deprecated` capture is retained but inconclusive because the oracle project's Email/Password provider is disabled.","Removing `firebaseStorageDownloadTokens` revokes the download URL: a `GET` of it answers 403, and the next `getDownloadURL` mints a new token whose URL answers 200","Production observation `admin-storage-metadata-download-url` records `revocation`: `tokenRemoved: true`, `revokedUrlStatus: 403`, `getDownloadURLAfterRevoke.mintsNewToken: true`, `newUrlStatus: 200`. On the Node host the hosted replay matches all four. In process and on a SharedWorker host there is no HTTP origin, so a download URL is a `data:<contentType>;base64,...` URI that carries the bytes; removing the token and minting another match, but a `data:` URI cannot be revoked and still resolves, which the pyric-admin conformance suite pins beside the production status.","Mocked Storage-to-Firestore lookup evaluation: get/exists return and missing-field errors, repeated and same-resolved-path calls, get+exists composition, and lazy `||`/`&&`/ternary branches with hosted function-call diagnostics","DOCUMENTED MOCK-ORACLE DIVERGENCE, 2026-07-21: `oracle:rules-storage-firestore-lookup-budget` matches the local evaluator on 13 of 14 cases and hosted diagnostics prove lazy branches omit lookup calls. The one mismatch is intentional and pinned on both sides: the Rules Test API ALLOWs three distinct mocked exists calls, while the evaluator DENYs the third distinct path to match the separately captured real-resource production contract in row #131. This row remains diverged because its mocked observation is not verdict-identical; it supplies no budget credit.","Discrepancy: firestore.exists() — same standalone limitation as firestore.get(); resolved only with an injected FirestoreLookup, otherwise denies-with-reason.","Discrepancy: firestore.get() is in the official Storage rules language, but the standalone evaluator only resolves it when the enforcement layer injects a FirestoreLookup; the pure/test evaluator denies-with-reason (cross-document lookups are out of the standalone subset).","Returns a distinct handle per named database for the specified FirebaseApp; production isolates the documents and rules of each named database.","FirebaseFirestore Swift specification. The test asserts the handle carries its database ID; bridge operations carry no database field. Swift test: `packages/swift-client/Tests/PyricFirestoreTests/ConformanceCoreTests.swift` assertion set `firestore-swift#3`.","Returns a distinct handle per named database for the default FirebaseApp; production isolates the documents and rules of each named database.","FirebaseFirestore Swift specification. The test asserts the handle carries its database ID; bridge operations carry no database field. Swift test: `packages/swift-client/Tests/PyricFirestoreTests/ConformanceCoreTests.swift` assertion set `firestore-swift#4`.","`forceLongPolling()` — accepted no-op: transport selection is not applicable to the in-process/worker sandbox (it never opens a real socket). Accepted so init code that calls it compiles + runs","`forceWebSockets()` — accepted no-op: transport selection is not applicable to the in-process/worker sandbox (see `forceLongPolling`)","AI-21: production answers contents with no role (200); pyric refuses it (400, Role '' is not supported).","`oracle:ai-request-edge-roleless-contents`.","AI-22: production refuses a string systemInstruction from startChat (400 INVALID_ARGUMENT); pyric answers.","`oracle:ai-request-edge-string-system-instruction`.","AI-23: production refuses the model gemini-pro (404 NOT_FOUND); pyric answers.","`oracle:ai-request-edge-model-gemini-pro`.","The aggregated response carries the final chunk `finishReason` and `usageMetadata`","`unit:streaming.test.ts` test `ai#stream-aggregate-final-meta` (aggregation semantics derived from the framing capture)","Production fails a query or multi-field aggregation that needs a missing composite index with `failed-precondition`. Pyric runs it by design; only the served dev chip signals it, and two-range, OR and aggregate shapes get no signal. FL-30.","`oracle:firestore-query-composite-index-required` (four shapes and two controls) and `oracle:firestore-aggregate-field-semantics` keys `multi` and `nullField`. Decided 2026-10-27: fix where production is clear; until then this row says they differ.","Under a remote register activation, `getAI(app)` in a server process fails with `failed-precondition` and a message that names the client services that do reach the Node host: `firebase/ai` has no path to the host, and no in-process sandbox stands in for it. Production AI pass-through (`PYRIC_AI=production`) loads the real `firebase/ai` and is unaffected.","App scenario `test/apps/client-sdk-under-register` calls it under `node --import @pyric/cli/register` against a hosted Vite dev server and asserts the refusal; on main (942cb175) it returned a handle on a private in-process sandbox. `mapping.test.ts` pins that the subpath keeps its mirror under a remote activation, and `node-origin.test.ts` that a mirror resolved from such an app refuses.","Under `vite dev`, `getAI(app)` in a server-rendered module fails with `failed-precondition` in the default sandbox AI mode, naming the client services that reach the host: `firebase/ai` has no path to the dev server's host from server code. In production AI mode the real `firebase/ai` loads and the network guard permits Firebase AI Logic. A SharedWorker dev server refuses it the same way.","App scenario `test/apps/vite-ssr-client-sdk` calls it in SSR on a hosted dev server and asserts the refusal; a second dev server in production AI mode lets the real SDK reach only `firebasevertexai.googleapis.com`, which a stand-in beneath the guard refuses. On main (ba2c0bf0a) it was the real SDK. `vite-module-swap.test.ts` pins the routing.","Without sandbox package swapping, canonical `firebase/auth` imports remain Firebase and never enter this mirror","Direct mirror rejection is locked by `unit:package-resolution.test.ts`; an unswapped production-resolution observation is still needed","Under a remote register activation on the Node host, `firebase/auth` in a server process signs in to the host: the session belongs to that process, the user is visible to `firebase-admin`, and its identity applies to the process's RTDB, Firestore and Storage calls. The session lasts as long as the process. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts a user the process created that firebase-admin finds, and rules that allow that user's own path and deny another's. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/auth` in a server-rendered module signs in to the host. The session belongs to the dev server process: every SSR request, both of Vite's SSR loaders and a module reloaded after an edit see the same `currentUser`, and its identity applies to the SSR RTDB, Firestore and Storage calls. Browser sessions are separate. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` signs in through `ssrLoadModule`, then finds the same user through the environment runner, and checks that the rules allow that user's paths and deny another's. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path.","An in-module production target is intentionally absent; direct calls with a real `FirebaseApp` reject with package-resolution guidance","`unit:modular.test.ts`; production remains the responsibility of the unchanged `firebase/database` package","Under a remote register activation on the Node host, `firebase/database` in a server process reads and writes the host's data under its rules as the process's signed-in user: a write the rules deny for that user fails with `PERMISSION_DENIED`, `.info/connected` follows the process's connection, and an `onDisconnect` write runs when that connection ends. From its first RTDB call on an instance the process stays up until `goOffline()` on that instance or `deleteApp()`, as `@firebase/database` keeps a Node process up. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts a write and a read, a denied write to another user's path, `.info/connected`, an `onDisconnect` that ran after the process exited, and that a process stays up after a write until `goOffline()`. `node-realm.test.ts` pins when the process is held. CDD assertion `rtdb-modular#RS1` pins the sandbox side: rules evaluate per signed-in session, and a registry bound to the refusal opens no database handle. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/database` in a server-rendered module reads and writes the host's data under its rules as the SSR session's user: a write the rules deny for that user fails with `PERMISSION_DENIED`. `ssrLoadModule`, the environment runner and every `ssr.noExternal` setting share one app and one session. Closing the dev server lets the process go, so a process that created the server through Vite's API ends on its own, though RTDB would otherwise hold it until `goOffline()`. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` writes and reads the SSR user's own path, is denied another user's, reads the writes back with `firebase-admin` in SSR and in a process on the host, repeats it with `ssr.noExternal` `['firebase']` and `true`, refuses on a SharedWorker dev server, and creates a dev server through Vite's API that ends on its own after SSR used RTDB. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path. CDD assertion `rtdb-modular#RS2` pins the sandbox side. `node-realm.test.ts` pins the release when the in-process host ends.","On a hosted dev server, `firebase-admin` in a server-rendered module resolves to `pyric-admin` bound to the dev server's host, as a `firebase-admin` process on the host is: a bare `initializeApp()` connects to it, reads bypass the rules, and the writes of browsers and SSR sessions are visible. On a SharedWorker dev server its first call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`, without dialing.","App scenario `test/apps/vite-ssr-client-sdk` reads a path the rules let only the SSR user read, and a browser's write, with `firebase-admin` in SSR through both loaders and with each externalization setting, and gets the refusal on a SharedWorker dev server. On main (ba2c0bf0a) `firebase-admin` in SSR was the real SDK. `ambient-init.test.ts` pins that a bare `initializeApp()` binds the in-process activation's sandbox when PYRIC_SANDBOX is unset, and that the variable wins when set. CDD assertion `rtdb-modular#RS3` pins the sandbox side.","A Firestore write (`setDoc`, `updateDoc`, `deleteDoc`, a batch `commit`) or read (`getDoc`, `getDocs`) the web hosted client's socket had taken when it dropped fails once with `unavailable` and the message \"The hosted sandbox connection was lost. Requests already sent may have completed; check state before retrying.\" It is not sent again. In production the Firestore Web SDK keeps a write in its mutation queue and sends it again on the next write stream until the backend acknowledges it, and answers a `getDoc` from its local cache, with `fromCache`, or fails it with `unavailable` when the document is not cached.","Production behavior read from `@firebase/firestore` 4.14.1, as recorded in ADR-0019 (\"Reads and writes are treated alike, unlike production\"). `packages/cli/test/serve/worker/hosted-reconnect-hold.test.ts` drops a real loopback socket with `setDoc`, `getDoc` and `batchCommit` in flight and asserts each fails once with that message and reaches the host once. The Realtime Database follows its SDK here instead (row `rtdb-modular#HD1`, #1088).","Production keeps NaN, Infinity, -Infinity and -0 on a server read, and `== NaN` matches only the NaN doc. The in-page sandbox agrees. On the SharedWorker and Node host planes they read back as null and 0. FP-1.","`oracle:firestore-non-finite-number-roundtrip`.","Explicit cache reads distinguish cold and warm state: cold document reads reject with `unavailable`, cold queries return empty, and server/default reads populate subsequent cache reads","Real Chromium: `firestore-browser-lifecycle.json` captures cold and warm document and query cache behavior; `oracle-conformance.test.ts` replays it through public APIs. Served planes: reads the store, so a cold read resolves (FP-9).","Query-proof scope remains conservative. Equality and finite scalar in filters can pin candidate fields; array-contains proves the corresponding membership fact, not the whole array. Helpers and positive OR branches reduce to sufficient, candidate-independent residuals. Every finite combination (up to 30) must pass auth, query limits, and any lookup whose path is pinned by the query. Unpinned fields, candidate identity, dynamic document-dependent collections, unbounded range guarantees, and unsupported syntax remain deny-only gaps. Queries are never authorized by filtering stored rows. A collection-group query is authorized only by a top-level `list` or `read` rule at `match /{path=**}/<collectionId>/{id}` or `match /{document=**}` whose condition reads no path binding; any other shape, including a match nested in `match /{document=**}`, denies the query. This expanded local support has unit evidence and upstream documented semantics, but no new hosted observation.","Local query support: `unit:firestore/query-proof-application.test.ts` covers finite membership, guardian array membership, pinned lookup paths, auth and limit controls, and adversarial array/lookup cases. Upstream semantics: firebase.google.com/docs/firestore/security/rules-query and firebase.google.com/docs/firestore/query-data/queries. Local diagnostic contract (#583): `unit:firestore/query-proof-diagnostics.test.ts` pins dynamic membership rejection, fallback attribution, constraint/residual distinctions, modular listener context, captured lifecycle errors, and immutable operation-summary proof metadata; this adds no production observation. `unit:rules/simulator/query-proof.test.ts` (function-inlining provable cases; full-accounting rejections for mixed equality + `in`/`get`/`hasOnly`/range/`is` shapes in inline and helper form; fail-closed classifier probes: bracket-access `resource['data']`, `exists()` keyed by `resource.data` through path-literal segments, slice access, `resource.id`, and an unrecognized node shape), `unit:firestore/query-proof-enforcement.test.ts` (seeded end-to-end denials of the demonstrated attacks: forbidden-field absence check in member and bracket form, banned-owner `exists()` lookup, slice conjunct, each returning zero documents). Collection-group scope: `unit:firestore/collection-group-rules.test.ts` authorizes `getDocs(collectionGroup(db, 'items'))` under `match /{path=**}/items/{id}`, proves a data-gated rule from the query's equality, and denies under a rule for another collection id, a rule that reads the recursive binding, and concrete collection rules; `unit:firestore/sandbox/collection-group-rule-proof.test.ts` pins the projection. Upstream semantics: firebase.google.com/docs/firestore/security/rules-query#secure_and_query_documents_based_on_collection_groups. No hosted collection-group query is captured; the production matcher verdicts for the same rule shape, from the Rules Test API, live in `oracle:rules-firestore-hierarchical-match-cascade`.","Exported by `firebase/storage`; returns a token-signed HTTPS URL that fetches the blob","Production observation `storage-upload-bytes-roundtrip` records `urlIsHttps: true` and a byte-identical fetch. The URL form depends on where the sandbox runs. On the Node host, `getDownloadURL` returns `http://<host>/__pyric/storage/v0/b/<bucket>/o/<path>?alt=media&token=<token>`: production's `/v0/b/<bucket>/o/<path>` path and `alt=media` query, under the host's own origin. The token is kept in the object's `downloadTokens` metadata, later calls return the same URL, it does not expire, and removing it from the metadata revokes the URL. A `GET` on the URL needs no header and serves `Range`. The hosted replay of the observation calls `getDownloadURL` and `fetch` through the web client against the host and its byte route, and matches `downloadOk`, `bodyLen`, and `bytesMatch`. The web byte route fixture pins token persistence and revocation, and hosted smoke test 8 streams and seeks an `<audio>` element by the URL in Chromium. In process and in a SharedWorker there is no HTTP origin to serve from, so `getDownloadURL` returns a `data:<contentType>;base64,...` URI that carries the object's bytes. The oracle replay proves its byte-identical fetch and asserts the `data:` prefix, and the client↔host integration proves SharedWorker mode returns the same form. The divergence is URL identity. The hosted URL is `http` on the local host's origin, under `/__pyric/storage`, where production's is `https` on Google Cloud Storage's host, so it is fetchable only where that host is reachable. The `data:` form has no token, no revocation, and no stable short string. Production observation `admin-storage-metadata-download-url` records the token itself: the Firebase metadata endpoint reports it as `downloadTokens`, firebase-admin sees it as the `firebaseStorageDownloadTokens` custom key, removing it makes the URL answer 403, and the URL answers `Range` with 206.","Returns `https://firebasestorage.googleapis.com/v0/b/<bucket>/o/<encoded path>?alt=media&token=<token>`, whose token is the file's `firebaseStorageDownloadTokens` custom metadata. The Firebase metadata endpoint, which client SDKs read, reports the same token as `downloadTokens` and leaves it out of `metadata`","Production observation `admin-storage-metadata-download-url` records `https://firebasestorage.googleapis.com/v0/b/<bucket>/o/<encoded path>?alt=media&token=<token>`, the token equal to `firebaseStorageDownloadTokens`, and the Firebase metadata endpoint reporting it as `downloadTokens` outside `metadata`. On the Node host the hosted replay matches the path after the `/__pyric/storage` prefix, `alt=media`, the query keys, the token, and the client view's `downloadTokens`; the origin is the host's own `http` origin. In process and on a SharedWorker host there is no HTTP origin, so the URL is a `data:<contentType>;base64,...` URI that carries the bytes; the pyric-admin conformance suite pins it beside the production form. It diverges because only the Node host serves bytes over HTTP.","The download URL answers a `GET` with no credentials with the object's bytes and content type, and a `Range` request with 206 and `Content-Range`","Production observation `admin-storage-metadata-download-url` records `unauthenticatedGet` (200, `audio/wav`, `bytesMatch: true`) and `rangeGet` (206, `bytes 2-5/64`, `bytesMatch: true`). On the Node host the hosted replay matches both. In process and on a SharedWorker host there is no HTTP origin, so a download URL is a `data:<contentType>;base64,...` URI that carries the bytes; its `GET` matches, but it answers a `Range` request with 200 and every byte, which the pyric-admin conformance suite pins beside the production answer.","In the sandbox, `getFirestore(app, databaseId)` ignores the database id and returns the app's `(default)` handle, so documents written under one id are read under every other id.","`packages/pyric/test/firestore/named-database.test.ts` asserts two database ids return the `(default)` handle and that a document written under one id reads back under another.","The served `firebase/firestore` entry ignores the database id: the worker path returns the app's one handle and the in-page fallback delegates to the sandbox `getFirestore(app)`. The worker protocol carries no database id.","`packages/cli/test/serve/worker/composite-filters-served-entry.test.ts` imports the served entry over a worker host, asserts `getFirestore(app, 'reports')` returns the app's handle, and reads the `(default)` documents through it.","`pyric-admin` `getFirestore` takes no database id; a second argument is ignored and the handle reads and writes `(default)`. The Admin SDK's `getFirestore(app, databaseId)` selects the named database.","`packages/pyric-admin/test/firestore/named-database.test.ts` writes through `getFirestore(app, 'reports')` and reads the document through `getFirestore(app)` and `getFirestore(app, 'archive')`.","Under a remote register activation on the Node host, `firebase/firestore` in a server process reads and writes the host's documents under its rules as the process's signed-in user. An open listener keeps the process up; a finished write releases it at once. A CommonJS `require('firebase/firestore')` resolves the same client. An app whose options differ from the host's gets each call rejected with `app/multiple-configs-not-supported`, and nothing throws past the call. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts a write the page and firebase-admin read, a CommonJS require, an app with other options rejected per call, and that a listener holds the process while a finished write does not. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/firestore` in a server-rendered module reads and writes the host's documents under its rules as the SSR session's user: a write the rules deny for that user fails with `permission-denied`. `ssrLoadModule`, the environment runner and every `ssr.noExternal` setting share one app and one session. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` writes and reads the SSR user's own document, is denied another user's, reads the writes back with `firebase-admin` in SSR and in a process on the host, with each externalization setting, and refuses on a SharedWorker dev server. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path.","On a hosted dev server, `firebase-admin/firestore` in a server-rendered module reads and writes the dev server host's documents as admin, past the rules, as a `firebase-admin` process on the host does. On a SharedWorker dev server its first call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`.","App scenario `test/apps/vite-ssr-client-sdk` reads a document the rules let only the SSR user read with `firebase-admin` in SSR through both loaders and with each externalization setting. On main (ba2c0bf0a) `firebase-admin` in SSR was the real SDK. `ambient-init.test.ts` pins the ambient binding.","A `models/`-prefixed name is accepted without double prefixing","`unit:instances.test.ts` test `ai#model-name-prefixed` (no capture; normalization claim)","`sendMessage` appends the user turn and the model turn; `getHistory()` returns the ordered `Content[]` with alternating roles","`unit:chat-session.test.ts` test `ai#chat-history-threads` (no capture; history threading claim)","Blocked prompts and blocked candidates are excluded from `getHistory()`","`unit:chat-session.test.ts` test `ai#chat-history-excludes-blocked` (upstream JSDoc contract; exercised with a scripted blocked envelope)","Imagen is deprecated upstream; all Imagen models shut down as early as June 2026 (upstream 2.11.0 deprecation). Mirroring an API whose production counterpart is retiring would freeze dead behavior.","Provides a distinct FirebaseFirestore handle per FirebaseApp and database ID; production isolates the documents and rules of each named database.","com.google.firebase.firestore specification. The test asserts a distinct handle and databaseId per instance; bridge operations carry no database field. Test: `packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt` assertion set `firestore-kotlin#2`.","Returns a distinct FirebaseDatabase handle for each database URL; production isolates the data and rules of each URL's database.","com.google.firebase:firebase-database specification. The test asserts a distinct handle and URL per instance; bridge operations carry no instance field. Test: `packages/kt-client/src/test/kotlin/dev/pyric/database/RtdbConformanceTest.kt` assertion set `rtdb-kotlin#instance-url`.","When the exchange is refused (an unregistered debug token), both reject with a `FirebaseError` with code `appCheck/fetch-status-error` and `customData.httpStatus` 403.","capture `app-check-client-invalid-debug-token` (`getToken`, `getLimitedUseToken`).","Live API is deferred, not out of scope — it is a bidirectional websocket protocol the sandbox can model with a scripted session engine, the same seam pattern the REST plane already uses; the work has not happened yet.","`FullMetadata.md5Hash` populated on uploads","divergence: sandbox does NOT compute `md5Hash`. Oracle-locked: `packages/conformance/observations/storage/storage-upload-then-getmetadata.json` confirms prod sets `md5Hash` (`hasMd5Hash: true` after a vanilla `uploadBytes`). Both sides pinned in `oracle-conformance.test.ts`. Aligning the sandbox is a one-spot fix in `upload.ts`'s `buildStoredMetadata`.","`FullMetadata.ref` lazy population (prod populates lazily)","not modeled in `pyric/storage` — `metadata.ts` explicitly omits `ref` from `FullMetadata`","A Storage operation (`getMetadata`, `deleteObject`, `list`, or an upload step) the web hosted client's socket had taken when it dropped fails once with `unavailable` and the message \"The hosted sandbox connection was lost. Requests already sent may have completed; check state before retrying.\" It is not sent again. In production the Storage Web SDK retries a request that fails on the network with exponential backoff, for up to 2 minutes for an operation and 10 minutes for an upload, and then fails it with `storage/retry-limit-exceeded`.","Production behavior read from `@firebase/storage` 0.14.3 `dist/index.esm.js`: `DEFAULT_MAX_OPERATION_RETRY_TIME` (2 minutes), `DEFAULT_MAX_UPLOAD_RETRY_TIME` (10 minutes), and `retryLimitExceeded()` in the request retry loop. `packages/cli/test/serve/worker/hosted-reconnect-hold.test.ts` drops a real loopback socket with `storage.getMetadata` and `storage.deleteObject` in flight and asserts each fails once with that message and reaches the host once.","MFA / phone / reCAPTCHA is deferred, not out of scope — reCAPTCHA/SMS are external infrastructure Pyric can mock with the OAuth resolver pattern, and TOTP is pure algorithm work.","Retrieves a named query from a previously loaded Firestore bundle.","`getStorage(app, bucketUrl?)` opens the bucket the URL names, with its own objects and the rules deployed to it; the app's default bucket is stored under the key `pyric-default`","Package resolution owns production selection. `unit:service.test.ts` pins a bucket URL other than the app's `storageBucket` opening its own bucket, and the default bucket's store key `pyric-default`; `unit:storage/per-bucket-rules.test.ts` pins each bucket's objects and rules apart. The in-page plane still reports the default bucket as `pyric-default` in metadata and references (#1519).","Under a remote register activation on the Node host, `firebase/storage` in a server process uploads and reads the host's objects under its rules, over the host's byte route. An upload issued before the process's connection has attached waits for the attachment, keeps its place in the call order, and never sends its bytes as frames to a host that takes them only over the route; it fails as a held call does if the connection is not restored within 10 seconds. A finished upload does not keep the process up. When the host is not the Node host, every call fails with `failed-precondition` and a message naming the Node host (`pyric sandbox --hosted` or `pyric({ hosted: true })`); when no host is found, with the discovery error `pyric-admin` gets. No call falls back to an in-process sandbox.","App scenario `test/apps/client-sdk-under-register` runs the client SDKs under `node --import @pyric/cli/register` against a hosted Vite dev server, reads back with `firebase-admin` and a page, and asserts an upload issued as the process's first call that firebase-admin downloads, its HTTP download URL, and that a finished upload does not hold the process. `storage-byte-route-settled.test.ts` pins the wait, the call order and the deadline. On main (942cb175) it failed: the calls ran against a private in-process sandbox, so an upload returned a `data:` URL and firebase-admin read nothing they wrote. `packages/cli/test/register/node-origin.test.ts` runs the served surfaces under a Node origin whose host is not the Node host, or cannot be found, and asserts every call fails, `useWorker` stays true, the served app entry's placeholder sandbox stays empty, and a `pyric/*` mirror resolved from the app refuses. `mapping.test.ts` pins the mapping per activation value..","On a hosted dev server, `firebase/storage` in a server-rendered module uploads and reads the host's objects under its rules as the SSR session's user, over the host's byte route: an upload to another user's path fails with `storage/unauthorized`, and a download URL names the host's byte route. On a SharedWorker dev server every call fails with `failed-precondition` and a message naming `pyric({ hosted: true })`. No call reaches production or an in-process sandbox.","App scenario `test/apps/vite-ssr-client-sdk` uploads to the SSR user's own path, reads its download URL, is denied another user's path, and downloads the object with `firebase-admin` in a process on the host. On main (ba2c0bf0a) the scenario failed: SSR sign-in rejected with `auth/network-request-failed` from the network guard, and the RTDB, Firestore and Storage writes did not settle, because the imports loaded the real SDK. `vite-module-swap.test.ts` pins the routing per specifier, AI mode and environment (Vite 5's `ssr` option, a runnable environment, a non-runnable one), `vite-ssr-activation.test.ts` the host, the restart hand-over and the SharedWorker refusal, and `vite-plugin-firestore.test.ts` runs Vite with `firebase` installed, so it takes the externalized path.","The Node-stream variant is deferred — not part of the browser-shaped v1 scope yet, but not genuinely un-modelable.","Exported by `firebase/storage` (Node entry only); returns a Node `Readable`","No `pyric/storage` implementation or behavioral probe exists; availability is classified by the owning surface contract.","Server-side templates are deferred, not out of scope — hosting template state is exactly the kind of server infrastructure the sandbox exists to model; the template store has not been built yet.","Template-served Imagen models retire with the rest of Imagen (deprecated upstream, June 2026 shutdown); the template transport does not outlive the model family it serves.","A registered debug token exchanges for `{ token, ttl: \"3600s\" }`; an unregistered one fails 403 `PERMISSION_DENIED` with message `App attestation failed.`","capture `app-check-exchange-debug-token-wire`.","A single user or app can hold several registration tokens at once — one per browser, profile, or device. A token-targeted send reaches exactly one token; a topic, condition, or multicast send fans out independently to every subscribed token, with no server-side de-duplication across a user’s devices, so each device receives its own copy. Stated from the FCM targeting model; no committed observation replays cross-device fan-out yet.","Upstream documentation (FCM targeting model); no observation yet. Candidate probe: mint two distinct tokens, subscribe both to one topic, send once, and assert each token receives the message independently.","FCM treats a registration token that has gone unused for an extended period (Google documents roughly 270 days of app-instance inactivity) as stale and drops it from delivery targeting, independent of any explicit `deleteToken`. The expiry clock is Google server-side inactivity accounting, and the recommended mitigation is periodic token refresh. Stated from FCM best-practices documentation; the sandbox has no server-side inactivity clock to model.","Upstream documentation (FCM registration-token best practices); no observation. This time-based server-side behavior is out of sandbox scope (see the row disposition); the explicit-deletion path to a dead token is already tracked by messaging#3.","`goOffline(db)` drains that client's onDisconnect queue once, but does not make the in-memory data plane unreachable; ordinary writes, listeners, and `get()` remain available","`unit:database/on-disconnect.test.ts` + `unit:modular/fruit-aliases.test.ts`","`goOnline(db)` reconnects the logical lifecycle without resurrecting drained operations; it is otherwise a no-op because the in-memory data plane never became unreachable","`in` and `is` chain and compare at parse: `size is int == true`, `(a in list) is bool`, `(a in list) in [true]` and `(1 is int) is bool` compile (ST-H1-5)","`oracle:rules-storage-h1-in-is-precedence-deploy` (captured 2026-10-27, 4 cases) records production compiling all four expressions and giving ALLOW, DENY, ALLOW and ALLOW. Pyric refuses the ruleset (\"expected ';' after the allow statement\"); `unit:storage/rules-oracle-conformance.test.ts` pins the refusal in `packages/conformance/storage-rules-exceptions/` under ST-H1-5. The grammar is shared with Firestore. Pending fix.","**Divergence:** production interleaves concurrent `increment` writes from independent clients and preserves both deltas; the synchronous in-process backend applies each call before returning its promise, so a `Promise.all` call site is observably serialized even though its terminal value also reaches 5","Oracle `rtdb-modular-concurrent-transforms` uses two independent clients and captures terminal 5 after concurrent +2/+3 increments; `unit:modular/transaction-contention-cdd.test.ts` pins the sandbox's synchronous first-write visibility and matching terminal value without claiming that terminal equality proves contention semantics.","Served by the client: `.info` is `{ connected, serverTimeOffset: 0 }`, `.info/serverTimeOffset` is 0, and any other path under `.info` is null.","Verified by packages/flutter-client/test/rtdb_conformance_test.dart.","Served locally: `.info` is `{ connected, serverTimeOffset }`, `serverTimeOffset` is 0, and any other path under `.info` is null.","com.google.firebase:firebase-database specification. Test: `packages/kt-client/src/test/kotlin/dev/pyric/database/RtdbConformanceTest.kt` assertion set `rtdb-kotlin#info-root-offset`.","Served by the client: `.info` is { connected, serverTimeOffset }, and `serverTimeOffset` is 0.","FirebaseDatabase Swift specification and ADR-0019 (amendment of 2026-10-16). The test asserts both values, null for another `.info` key, and that none reaches the worker. Swift test: `packages/swift-client/Tests/PyricDatabaseTests/RtdbConformanceTests.swift` assertion set `rtdb-swift#info-root-offset`.","Production permits a differently configured named app; Pyric rejects it because one runtime currently owns exactly one sandbox backend","oracle: `app-registry-initializeapp-named-different-config` (firebase 12.13.0) + replay pins `app/multiple-configs-not-supported`; `packages/cli/test/e2e/app-multi-app.pw.ts` proves the same lock is enforced by the authoritative SharedWorker across same-origin tabs, not only by one page registry","Where there is no `document`, such as a Node process or a server-rendered module, `initializeAppCheck` with either reCAPTCHA provider throws `ReferenceError: document is not defined` synchronously, with or without `FIREBASE_APPCHECK_DEBUG_TOKEN`. App Check is already set up for the app when it throws: a second call with the same options returns the handle, and one with other options throws `appCheck/already-initialized`.","Upstream source, `@firebase/app-check` 0.11.3 `dist/esm/index.esm.js`: `initializeAppCheck` creates the instance (line 1511) before `_activate` marks the app activated and calls `provider.initialize` last (line 1559); `ReCaptchaV3Provider.initialize` (line 1270) and `ReCaptchaEnterpriseProvider.initialize` (line 1347) call `initializeV3` and `initializeEnterprise`, whose `makeDiv` reads `document` (line 1133). A real-SDK run in plain Node 24 (firebase 12.13.0, offline) saw each provider throw the ReferenceError, debug token or not, then return the instance for the same options and throw `appCheck/already-initialized` for another site key. The package has no Node build. No committed capture. Integration: `test/apps/sandbox-app-check` (a registered Node process and a Vite server-rendered module).","Delegates to sandbox `getFirestore(app)` and returns the same handle. Accepts the `settings` argument (so the explicit-init pattern doesn't crash at import) but no-ops the cache/network settings — persistence is always on","`unit:firestore/tier1-cache-init-align.test.ts`","Server-app (SSR) initialization: a FirebaseServerApp carries per-request auth/heartbeat state with no decided sandbox mirror pattern yet. Deferred, not out of scope — tracked as an unsupported registry row (registry/app.ts app#15).","Not implemented; disposition `app.server-app` owns the reviewed availability and rationale","disposition:app.server-app","Provides a distinct platform handle per FirebaseApp and database ID; production isolates the documents and rules of each named database.","cloud_firestore_platform_interface specification. The test asserts the handle carries its database ID; bridge operations carry no database field. Container test: `packages/flutter-client/test/conformance_test.dart` assertion set `firestore-flutter#2`.","Returns a distinct Realtime Database handle for each database URL; production isolates the data and rules of each URL's database.","Verified by packages/flutter-client/test/rtdb_conformance_test.dart, which asserts the handle carries its URL; bridge operations carry no instance field.","Paginated listing is deferred — listAll covers the v1 scope; pagination needs a stable pageToken shape, which is unbuilt design work rather than a sandbox limitation.","Exported by `firebase/storage`; accepts `{ maxResults, pageToken }`, returns a `ListResult` with `nextPageToken` set when more pages remain","No paginated `list` implementation or behavioral probe exists; availability is classified by the owning surface contract. `ListResult.nextPageToken` remains optional for forward-compatible consumer code.","Production and the local Storage evaluator accept List.concat(list); a Set, string or other argument is \"Unsupported operation error\" and a Set, Map or string receiver is \"Function not found error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept hasAny() on a List with a List argument and on a Set with a List or Set argument; a Set argument to a List receiver is \"Unsupported operation error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept hasOnly() on a List with a List argument and on a Set with a List or Set argument; a Set argument to a List receiver is \"Unsupported operation error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept List.join(separator), which converts each element as string() does; a non-string separator, a missing separator, or a List or Map element is an error. Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept List.removeAll(list), which drops every element equal to one in the argument; a Set or other argument is \"Unsupported operation error\" and a Set or Map receiver is \"Function not found error\". Replayed by the list cases of the Storage upload-boundary corpus.","Production and the local Storage evaluator accept List.toSet(), which returns the distinct elements as a Set; a Set or Map receiver is \"Function not found error\". Replayed by the list cases of the Storage upload-boundary corpus.","Loads serialized Firestore bundle data into the local cache.","Production and the local Storage evaluator accept request.resource.metadata.get(key, default); replayed by the Storage upload-boundary corpus.","Production and the local Storage evaluator accept request.resource.metadata.keys(); replayed by the Storage upload-boundary corpus.","`matches()`, `split()` and `replace()` use RE2: `\\s` is `[\\t\\n\\f\\r ]`, `.` matches `\\r`, `\\pL`, `[[:alpha:]]` and `\\Q..\\E` are a class, a POSIX class and literal quoting, `split()` does not return capture-group text, and `(?i)` applies in `split()` and `replace()` (FS2-SIM-4, FS2-SIM-5a, FS2-SIM-5a2, FS2-SIM-5b, FS2-SIM-5c, FS2-SIM-5d, FS2-SIM-6)","`oracle:rules-firestore-re2-pattern-semantics` (captured 2026-10-27, recaptured 2026-10-28 with 6 more cases, 34 in all, every earlier verdict unchanged) records production ALLOWING `NBSP is not \\s`, `em space is not \\s`, `vertical tab is not \\s`, `real nbsp from data is not \\s`, `dot matches carriage return`, `a is \\pL`, `a is [[:alpha:]]`, `quoted a.b matches a.b`, `split on a capturing group returns two pieces`, `split with (?i) splits both cases`, `replace \\s leaves NBSP`, `split dot matches carriage return`, `replace dot matches carriage return`, `replace (?s) dot matches newline`, `split (?i)k splits on the Kelvin sign` and `replace (?i)k replaces the Kelvin sign`. The simulator disagrees on 5 cases: 2 under FS2-SIM-5c, 1 under FS2-SIM-5d and 2 under ST-H1-3 (`split()` and `replace()` compile without JavaScript's `u` flag, so `(?i)` does not fold U+212A; the `matches()` half is #1332). `unit:rules/oracle-conformance.test.ts` pins both sides of each in `packages/conformance/firestore-rules-exceptions/`. The other 29 cases agree. Fixed in #1295: the 5 FS2-SIM-5a cases (the matcher spells `\\s` and `\\S` out as `[\\t\\n\\f\\r ]` and its complement), FS2-SIM-5a2 in `matches()` (`.` matches every character but `\\n`), the 2 FS2-SIM-5b cases (`\\pL` reads as `\\p{L}`), and the 3 FS2-SIM-6 cases (`split()` and `replace()` take the pattern's inline flags and RE2's `\\s`, through the `scanRe2Pattern` Storage already used). `unit:rules/simulator/re2-space-and-trim.test.ts` and `unit:rules/simulator/re2-dot-property-and-flags.test.ts` replay those cases from this observation. Fixed in #1333: the 3 FS2-SIM-4 cases (the shared `splitRe2` never returns capture-group text) and FS2-SIM-5a2 in `split()` and `replace()` (`compileRe2Regex` spells `.` as `[^\\n]` unless `(?s)` is on); `unit:rules/simulator/split-and-replace.test.ts` replays them from this observation on Firestore and Storage. `split()` and `replace()` are in this row's diverged scope only for the Kelvin sign. Pending fix in the 2026-10-27 Firestore hunt's stream S3.","`matches()` uses RE2: `\\s` is `[\\t\\n\\f\\r ]`, `.` matches `\\r`, `\\pL`, `[[:alpha:]]` and `\\Q..\\E` are a class, a POSIX class and literal quoting, and `(?i)k` matches the Kelvin sign U+212A (ST-H1-3, sharing FS2-SIM-5a, FS2-SIM-5a2, FS2-SIM-5b, FS2-SIM-5c and FS2-SIM-5d)","`oracle:rules-storage-h1-regex-re2-classes` (captured 2026-10-27, 16 cases) records production verdicts for POSIX classes, `\\pL`, `\\s` and `\\S` over NBSP, U+2003 and vertical tab, `.` against `\\r`, `\\Q..\\E` and `(?i)` over the Kelvin sign. The Storage evaluator calls the shared `re2FullMatch`, so it disagrees on 6 cases: 3 under FS2-SIM-5c, 2 under FS2-SIM-5d and 1 Storage-found Kelvin case, all filed as ST-H1-3. `unit:storage/rules-oracle-conformance.test.ts` pins both sides of each in `packages/conformance/storage-rules-exceptions/`. The other 10 cases agree, including 7 fixed in the shared matcher in #1295: the 4 `\\s` and `\\S` cases under FS2-SIM-5a, `.` against `\\r` under FS2-SIM-5a2, and the 2 `\\pL` cases under FS2-SIM-5b, replayed by `unit:storage/sandbox/rules-string-methods.test.ts`. Pending fix with the Firestore RE2 stream, since the matcher is shared.","math.abs(number): the absolute value; an int stays an int and a float stays a float.","math.ceil(number): the ceiling, as a float.","math.floor(number): the floor, as a float.","Listed by the rules reference; production has no math.isInfinite() and evaluates a call as \"Function not found error\".","math.isNaN(number): whether the value is NaN.","math.pow(base, exponent): base raised to exponent, as a float.","math.round(number): rounded half up, as an int.","math.sqrt(number): the square root, as a float.","Config token accepted, inert — each returns a small tagged object so identity/usage doesn't crash. Persistence is the sandbox default; there is no cache tier left to configure","Under a remote register activation, `getMessaging(app)` in a server process fails with `failed-precondition` and a message that names the client services that do reach the Node host: `firebase/messaging` has no path to the host, and no in-process sandbox stands in for it.","Under `vite dev`, `getMessaging(app)` in a server-rendered module fails with `failed-precondition`, naming the client services that reach the host: `firebase/messaging` has no path to the dev server's host from server code, and the real SDK does not load.","App scenario `test/apps/vite-ssr-client-sdk` calls it in SSR on a hosted dev server and asserts the refusal. On main (ba2c0bf0a) it was the real SDK. `vite-module-swap.test.ts` pins the routing.","When several window clients (browser tabs) of one origin share a single service-worker registration, a foreground delivery reaches every visible tab through `onMessage`, and when no tab is visible the one shared service worker receives the message once through `onBackgroundMessage` (the worker is shared across tabs, not instantiated per tab). A notification click focuses a single existing client rather than opening a duplicate. Stated from the FCM web SDK and the Service Worker client model; no committed observation replays the multi-tab fan-out yet.","Upstream documentation (`@firebase/messaging` 0.12.26 + W3C Service Worker `Clients` model); no observation yet. Candidate probe: open two tabs on one registration and deliver with one tab visible, then with both hidden — assert `onMessage` fires once per visible tab and `onBackgroundMessage` fires exactly once on the shared worker.","Production fires deeper paths first and child events (removed, added, moved, changed) before value; the in-page sandbox fires value first, parents first, in registration order. RT-2, RT-3.","`oracle:rtdb-modular-remote-update-event-order` key `log`.","Production fires child_changed on the parent's listeners for a priority-only change. Pyric fires none, on every plane. RT-4.","`oracle:rtdb-modular-remote-update-event-order` (`R changed a` and `Q changed a` after setPriority).","Production delivers one write's events deepest path first, child events before value. On the SharedWorker and Node host planes they arrive listener by listener in registration order. RP-5.","`oracle:rtdb-modular-remote-update-event-order`.","Production fires child_moved for a priority change on a query with no orderBy (`L moved a`). The in-page sandbox fires none; the served planes match production. RT-5, part of #138.","**Divergence (pending fix):** clean `goOffline`, app deletion, playground `pagehide`, and best-effort MessagePort close drain queued operations, but unannounced total renderer/process loss is not guaranteed by the in-memory sandbox","Oracle `rtdb-modular-ondisconnect-abrupt-exit` proves Firebase executes an acknowledged registration after forced writer termination. The two-port worker integration exercises `goOffline`, served-app deletion, and non-persisted `pagehide`; browser MessagePort close delivery cannot prove total-process loss without durable host-owned leases.","Production: the echo of a local write reports `hasPendingWrites` true on the doc, for a doc listener and for the doc inside a query snapshot, and only on the written doc. Pyric reports false on the doc. FL-20.","`oracle:firestore-listener-local-write-metadata` and `oracle:firestore-query-doc-pending-writes`.","Production: the snapshot that acknowledges a local write lists the doc as `modified` with `hasPendingWrites` false. Pyric's list is empty. FL-21.","`oracle:firestore-listener-local-write-metadata` key `qMeta`.","Production's pending serverTimestamp echo is pending and reads null, or the estimate or prior value by option; pyric reads a resolved Timestamp. FW-10; also #1355.","`oracle:firestore-servertimestamp-pending-echo`.","Production: only the doc with a pending write reports `hasPendingWrites` true. The served planes report each doc's own value from the in-page engine, which reports false on the written doc (FL-20), and they skip the first snapshot from the cache (#1355). FP-5 is fixed.","`oracle:firestore-query-doc-pending-writes`.","Production, debug mode: listeners and observers registered before the first `getToken` are never called, not by the first token, a forced refresh, or limited-use tokens. Sandbox: they are called once each time the cached token changes (the first token and every forced refresh), never for limited-use tokens, and not after unsubscribing, which is the upstream-documented behavior for an attestation provider.","capture `app-check-client-on-token-changed` (every `listenerCalls*` count is 0). The sandbox side and the attested-provider behavior are pinned in the suite; the attested-provider path is upstream-documented, not captured.","Production fires a value event on every listener above a grandchild whose priority changes, orderByKey queries included. Pyric's query listeners miss it on every plane, though plain ref listeners get it. RP-8 (differential seed 7395).","`oracle:rtdb-modular-grandchild-priority-query-value`.","A handler that throws or returns a rejected Promise is reported by the managed runtime; with retry disabled, the Eventarc request can still be acknowledged with HTTP 200.","oracle: `functions-rtdb-onvaluecreated-failed-execution.json`; Pyric observes the rejected handler and marker, but has no Eventarc HTTP request seam with which to replay the captured 200 acknowledgement.","Production: getDocs fails with `invalid-argument` for `in` with 31 values, `not-in` with 11, `array-contains-any` with 31, or() with 31 branches, and 36 terms after normalization; 30 and 10 values succeed. Pyric runs every one. FL-29.","`oracle:firestore-query-disjunction-limits`.","`service cloud.storage`, the spelling in the documented v2 snippet, is accepted beside `service firebase.storage` (ST-H1-14)","`oracle:rules-storage-h1-deploy-cloud-storage-service` (captured 2026-10-27, 1 case) records production compiling a `service cloud.storage` ruleset and ALLOWING its read. Pyric refuses it (\"Expected 'service firebase.storage', got 'service cloud.storage'\"); `unit:storage/rules-oracle-conformance.test.ts` pins the refusal in `packages/conformance/storage-rules-exceptions/` under ST-H1-14. Pending fix.","One `service firebase.storage` may hold more than one top-level `match` block, one per bucket (ST-H2-8)","`oracle:rules-storage-storage-two-top-level-bucket-matches` (captured 2026-10-27, 2 cases) records production compiling two top-level match blocks, ALLOWING `get` in the named bucket's block and DENYING the other bucket under the wildcard block. Pyric refuses the ruleset (`expected \"}\" or \"function\"`); `unit:storage/rules-oracle-conformance.test.ts` pins the refusal in `packages/conformance/storage-rules-exceptions/` under ST-H2-8. The grammar is shared with Firestore, where the Firestore hunt saw the same refusal. Pending fix.","Index validation against `firestore.indexes.json` — sandbox uses `LocalEnvironment`'s lint pass; prod has its own server-side validation","divergence: sandbox can mis-pass a query that prod would reject at the server with `failed-precondition` if no index exists","**Divergence:** `DatabaseReference` and `Query` equality includes database target, path, and canonical query parameters like Firebase, but `toJSON()` serializes the local `sandbox://rtdb/...` identity instead of Firebase's HTTPS database URL.","Oracle `rtdb-modular-reference-shape-url` captures conforming equality plus HTTPS JSON serialization; `unit:modular/oracle-conformance-reference-writes.test.ts` pins both the production HTTPS shape and the sandbox's `sandbox://` boundary.","Both reCAPTCHA providers construct from a site key and are accepted by `initializeAppCheck` in a realm with a `document`, such as a page.","Upstream-documented only (firebase 12.13.0 typings and the App Check web guide). The oracle web app has no reCAPTCHA registration, so no capture exists; the sandbox never loads reCAPTCHA.","Cold production clients may invoke the update fn first with speculative `null` and then with the current seeded value; the always-warm in-process sandbox invokes it once with the current value, so abort-if-missing aborts in production and commits in pyric (RT-16)","Oracle `rtdb-modular-runtransaction-current-value-arg` captures two seeded-path production invocations (`null`, then current); `unit:modular/oracle-conformance-transactions.test.ts` pins the sandbox's single current-value invocation. The separate warm-client observation matches the sandbox but does not erase the cold-client contract. `oracle:rtdb-modular-transaction-then-set` key `abortIfMissing`: production aborts, pyric commits (RT-16).","Production throws `storage/invalid-url` for a URL on the Node host's `/__pyric/storage/v0/` route, as for any host it does not serve from. The sandbox reads the percent-decoded object path from `<origin>/__pyric/storage/v0/b/<bucket>/o/<path>` on any origin, as production does from its own download URL","Production observation `client-storage-ref-urls` (firebase 12.13.0) records `pyricHostUrl` (`storage/invalid-url`). The Node host's `getDownloadURL` issues this form, so an app that keeps a download URL and later calls `deleteObject(ref(storage, url))` needs `ref()` to read it. The storage oracle suite replays it against the engine's `ref()`, and `storage-ref-urls.test.ts` against the served page client's `ref()`: both pin production's code beside the sandbox's reference, whose `fullPath` and `name` equal those production gives for `firebaseDownloadUrl`. The web byte route fixture in `hosted-sqlite.test.ts` keeps a download URL from the Node host and deletes the object by `ref(storage, url)`, and hosted smoke test 9 does the same from a Chromium page against the built CLI's Node host. Production never issues this URL, so no production app depends on the error.","Production gives a reference on the URL's bucket, including a bucket other than the app's default. The sandbox's `ref()` keeps the handle's bucket, at the URL's path; `getStorage(app, bucketUrl)` reaches another bucket","Production observation `client-storage-ref-urls` (firebase 12.13.0) records `gsOtherBucket` and `firebaseDownloadUrlOtherBucket` (`bucket: 'other-bucket'`) and `gsDefaultBucket` (`bucket: 'b'`, the configured bucket). `ref()` keeps the handle's bucket: a URL naming another bucket reads that path in the handle's bucket. To reach another bucket, an app opens it with `getStorage(app, bucketUrl)` (storage#11). The storage oracle suite replays it against the engine's `ref()`, and `storage-ref-urls.test.ts` against the served page client's `ref()`: both pin production's `other-bucket` beside the sandbox's bucket and the URL's `fullPath`.","Production reads a string without `://`, such as a `data:` URI, as an object path. The sandbox throws `storage/invalid-url` for a `data:` URI","Production observation `client-storage-ref-urls` (firebase 12.13.0) records `dataUri` (`fullPath: 'data:audio/wav;base64,UklGRg=='`, `name: 'wav;base64,UklGRg=='`). In process and on a SharedWorker host, `getDownloadURL` returns a `data:` URI (storage#51), and no object exists at that literal path, so reading it as a path would make `deleteObject(ref(storage, url))` resolve and delete nothing. The storage oracle suite replays it against the engine's `ref()`, and `storage-ref-urls.test.ts` against the served page client's `ref()`: both pin production's path beside the sandbox's `storage/invalid-url`, and the storage oracle suite shows a reference to a `data:` download URL throws while the object stays.","A signed-in request always carries a `request.auth.token` map, even when the case names only a uid (ST-H1-7)","`oracle:rules-storage-h1-auth-token-default` (captured 2026-10-27, 4 cases) records production ALLOWING `token is a map`, `token is empty` and `token.get default` when the case gives no token. The evaluator binds no token, so it DENIES all three; `unit:storage/rules-oracle-conformance.test.ts` pins both sides of each in `packages/conformance/storage-rules-exceptions/` under ST-H1-7. The explicit-token control agrees. Pending fix.","request.resource.id is in the official language, but production's Rules Test API does not populate it: request.resource is built from the supplied payload alone, so `.id` is an absent property and reading it errors → DENY. The simulator matches — its handler builds request.resource as `{ data }` only (simulator/handler.ts), so the evaluator's absent-key error yields production's verdict. The same now holds for the existing document: `resource` carries `data` ONLY, no synthesized `id`/`__name__` (RULES-B12, firestore-rules#183).","request.resource.name is the incoming object's FULL path within the bucket (GCS object-name convention, e.g. `uploads/pic.png`), the same form as resource.name. A real upload or metadata update builds it; a delete has no request.resource, so reading it there is an evaluation error that denies.","`resource` binds `md5Hash`, `crc32c`, `etag`, `contentDisposition`, `contentEncoding`, `contentLanguage` and `cacheControl` from the stored object (ST-H1-1)","`oracle:rules-storage-h1-resource-unmodeled-fields` (captured 2026-10-27, 9 cases) records production ALLOWING a rule that reads each of the seven fields' stored values. The evaluator does not model them, so it DENIES all seven; `unit:storage/rules-oracle-conformance.test.ts` pins both sides of each in `packages/conformance/storage-rules-exceptions/` under ST-H1-1. The other 2 cases agree. These constructs were labeled unprobeable; the capture shows they are probeable and diverged. Pending fix.","resource.bucket is the bucket the object resides in, sourced from the persisted record. Production returns it as a literal on the resource map; an absent bucket denies.","Production Storage Object field; accepted by production Storage rules and callable from 2+modules.","Production types resource.generation as an int; exact comparison succeeds and an absent field errors and denies.","Production types resource.metageneration as an int; captured together with generation on the existing-object binding.","resource.name is the object's FULL path within the bucket (GCS object-name convention, e.g. `uploads/pic.png`), sourced from the persisted record's fullPath — NOT the client SDK's last-path-segment name. Production returns it as a literal on the resource map; an absent name is an evaluation error that denies.","resource.timeCreated is a timestamp (ISO-8601 in the persisted record; the evaluator reads it as a Timestamp value that compares with request.time). Production rejects an int in a timestamp comparison; an absent timeCreated denies.","resource.updated is the object's last-update timestamp. The field is `updated` — the Storage rules language has NO `resource.timeUpdated` (live-probed: `timeUpdated` reads as an absent property). Renamed from the earlier mis-identified `storage.binding.resource.timeUpdated`.","Accepted no-op. In production this reaches OUTSIDE Firebase entirely — it tells the identity provider (in practice Apple) to revoke an OAuth access token, which is a call landing on Apple's servers. There is no external IdP behind a sandbox sign-in, so there is no token out there to revoke and nothing this call could truthfully do. It resolves (so the account-deletion flow Apple requires an app to ship runs end to end against the sandbox) and changes no sandbox state (because claiming otherwise would be a lie).","`unit:types.test.ts` — the export resolves. Deliberately not oracle-probed: a successful probe would revoke a real token at a real IdP, which is a side effect on someone else's system that a conformance run has no business causing.","Discrepancy: `import { fn } from 'module'` under `rules_version = '2+modules'` is a pyric resolver extension (rules/modules/resolver.ts), not stock Firebase rules — production Firestore only knows rules_version '1'/'2' and has no import statement.","Production: runTransaction rejects `invalid-argument` and writes nothing, even when the update function catches the read-after-write error and returns. Pyric resolves with the returned value and commits the write. FW-6.","`oracle:firestore-transaction-client-checks` key `swallowedReadAfterWrite`.","Production fails read-after-write and update-after-missing-read with `invalid-argument`; pyric gives `failed-precondition` and `not-found`. FW-7.","`oracle:firestore-transaction-client-checks` keys `readAfterWrite` and `updateAfterReadMissing`.","Catches optimistic locking conflicts and re-executes handler up to maxAttempts.","**Divergence:** two ordinary concurrent `runTransaction` calls are serialized by the in-process backend, so their update functions are not retried with Firebase's captured contention counts. A synchronous re-entrant conflicting write does trigger a deterministic retry.","Oracle `rtdb-modular-concurrent-transforms` captures invocation counts [2, 3]; `unit:modular/transaction-contention-cdd.test.ts` pins the sandbox's [1, 1] ordinary-concurrency boundary and separately covers its deterministic re-entrant retry seam.","A cold production client can call the update fn with speculative `null` before the current seeded value; the always-warm sandbox calls it once with the current value","Oracle `rtdb-modular-runtransaction-current-value-arg` captures the cold two-call sequence and `rtdb-modular-runtransaction-warm-client-speculation` captures the matching warm one-call case; `unit:modular/oracle-conformance-transactions.test.ts` pins both sides.","Concurrent contention — if another client writes between the read and write, the update fn is retried with the new current value (typically up to 25 retries by default)","Oracle `rtdb-modular-concurrent-transforms` captures callback counts [2, 3] across two clients; the synchronous in-process backend serializes the same ordinary calls with [1, 1], pinned by `unit:modular/transaction-contention-cdd.test.ts`.","On a cold production client the set overtakes the transaction, which rejects with Error('set'); pyric commits it. A warm client commits in both. RT-15.","`oracle:rtdb-modular-transaction-then-set` keys `cold` and `warm` (both clients were cold) and `oracle:rtdb-modular-transaction-then-set-warm`.","On the served planes the transaction reruns on the set's value and commits on top (101); production keeps the set's 100. RP-4.","`oracle:rtdb-modular-transaction-then-set` and `oracle:rtdb-modular-transaction-then-set-warm`.","`Schema.enumString` serializes the enum values with type `string` and format `enum`","`unit:helpers-schema.test.ts` test `ai#schema-string-enum` (upstream toJSON request shape; GoogleAI accepts only enum and date-time formats)","Runtime type-based method dispatch on untyped parameters, get() results, let bindings, and multi-type ternaries is behaviorally verified in production by firestore-rules#182 (rules-firestore-functions-verbs-and-recursive.json); single-expression acceptance micro-probing remains unprobeable.","FCM enforces project-level send quotas and per-target rate limits (per-device and per-topic message rates) accounted on Google servers over rolling windows; exceeding them yields quota / rate-limit rejections. The admin error taxonomy names these as `MessagingClientErrorCode.MESSAGE_RATE_EXCEEDED`, `DEVICE_MESSAGE_RATE_EXCEEDED`, and `TOPICS_MESSAGE_RATE_EXCEEDED` (wire `QUOTA_EXCEEDED` / `RESOURCE_EXHAUSTED`, HTTP 429). Stated from FCM quota documentation; the sandbox has no global quota ledger to model.","Upstream documentation (FCM quotas and `MessagingClientErrorCode` rate-limit members, firebase-admin 13.10.0); no observation. This behavior is out of sandbox scope (see the row disposition).","Exactly one user turn is recorded per `sendMessageStream` call; the mirror implements the 2.13.0 fixed semantics, not the installed 2.12.0 duplicate-user-turn bug","`unit:chat-session.test.ts` test `ai#chat-stream-single-user-turn` (no capture; divergence pinned by ruling, see notes)","Prod rejects a continue URL whose domain is not on the project's authorized-domains list. The sandbox has NO domain allowlist and does not invent one: it accepts any parseable continue URL. A continue URL that would be rejected in production is accepted here.","The sandbox has no project config to hold an authorized-domains list, so there is nothing to check against; inventing an allowlist would mean inventing a policy the user never set. The probe attempted the server arm (`auth-sendsigninlinktoemail-settings-validation`, `unauthorizedDomain`) but the oracle project has email-link sign-in disabled, so it answered `auth/operation-not-allowed` rather than `auth/unauthorized-continue-uri` — the divergence is declared from the documented contract, not from a capture we do not have.","Production and the local Storage evaluator accept hasAll() on the List returned by custom-metadata keys() and on a Set; replayed by the Storage upload-boundary and stdlib-sets corpus.","Production fails with `invalid-argument` past its write limits (1 MiB docs, reserved or 1,501-byte ids and field names, 501 transforms, 26 nested maps); pyric stores them. FW-14.","`oracle:firestore-write-server-limits` and `oracle:firestore-write-map-depth-limit`.","Accepted no-op. The sandbox has no modular-SDK-style logger to wire a level into. It uses host-level `console` logging directly, gated by `pyric sandbox`'s own flags, not this call","Actually changes where the auth state is persisted","divergence: sandbox is a no-op. Prod respects the marker.","Rules evaluate the `database` path variable as `(default)` for every request, whatever database id the handle was created with. Production binds the named database's id.","`packages/pyric/test/firestore/named-database.test.ts` writes through a handle created for `reports`: a rule requiring `database == '(default)'` allows the write and a rule requiring `database == 'reports'` denies it.","Auto-generates a uid for fresh sign-ins (sandbox format: `anonymous-{N}`)","`unit:sandbox-anonymous.test.ts` — prod uids are 28-char base64-ish; sandbox uses a readable counter for debuggability","Anonymous users persist across page reload via configured `Persistence` (prod only — sandbox has no persistence layer)","divergence: sandbox memory only; within one tab the user persists, across reload they don't","Opens a popup window in prod","divergence: sandbox skips the popup; mock pre-stage replaces the popup result","Cancels with `auth/popup-closed-by-user` when the user dismisses the popup (prod)","not modeled — would require the host to expose a \"cancel\" affordance on the mock","Throws `auth/invalid-custom-token` for a malformed token and for the empty string. The sandbox accepts a token in the two shapes it can honestly read: a JSON (optionally base64url) `{uid, claims}` payload — exactly what `admin.auth().createCustomToken` signs, so the pyric-admin mint and this redeem compose — or a real three-part JWT whose payload segment carries `uid`/`sub`. The SIGNATURE IS NOT VERIFIED: the sandbox has no service-account key. The identity is created if it does not exist, and the credential carries `providerId: null` (custom-token sign-in is not a federated provider).","ORACLE-BACKED on the reject path: `auth-signinwithcustomtoken-invalid` captured `auth/invalid-custom-token` for both a malformed token and the empty string, replayed in `unit:oracle-conformance.test.ts`. Diverged on the ACCEPT path, declared rather than hidden: prod verifies an RS256 signature against the project's service-account key and the sandbox has no key, so it reads the token's claims WITHOUT verifying them. A forged token that prod would reject is accepted here. The happy path cannot be oracle-probed from a Web SDK client at all (it needs an Admin-SDK-signed JWT).","An EMPTY password throws `auth/missing-password` (message \"A non-empty password must be provided\"), fired before the user-DB lookup so it can't be used to enumerate seeded emails. Upstream maps the `MISSING_PASSWORD` server error (`core/errors.ts:92,282,563`). ⚠ best-known semantics — message text not yet captured against a live project (STOP-flagged for an oracle pass; the `.code` is the load-bearing part).","`unit:sandbox-cluster-b9-b12.test.ts` (locks AUTH-B11)","An Auth operation (a sign-in, a profile update, a token refresh) the web hosted client's socket had taken when it dropped fails once with `unavailable` and the message \"The hosted sandbox connection was lost. Requests already sent may have completed; check state before retrying.\" It is not sent again. In production the Auth Web SDK fails a request whose network call fails with `auth/network-request-failed` and does not retry it.","Production behavior read from `@firebase/auth` 1.13.1 `dist/esm`: a failed `fetch` is reported through `_fail(auth, \"network-request-failed\")`, and the request is not retried. `packages/cli/test/serve/worker/hosted-reconnect-hold.test.ts` drops a real loopback socket with `auth.signInEmail` in flight and asserts it fails once with that message and reaches the host once.","Clears the active session's persistence in prod; sandbox has no persistence","divergence: same memory-only constraint as the anonymous persistence row","The removed stateful simulator returned a generate-before-simulate error when no IR had been generated","The stateless `simulateRtdbRules(compiled, input)` API requires a compiled rules tree and has no generate-before-simulate lifecycle.","Cross-path `root.child(…).val()` reads return `null` for paths NOT present in `mockData` — divergence from real prod rules where the engine reads the live database","divergence: the simulator uses ONLY what's in `mockData`. Real rules engine reads from the live RTDB. Documented in `validated.ts` (\"simulation uses empty mockData, so cross-path rule lookups … will evaluate as false\")","Emits an event when all active listeners have caught up to the same state.","Notifies when all active snapshot listeners are in sync with server state.","Deferred with the rest of the Live API family — the browser audio helper rides the Live session seam once that lands.","length is a String property in the official language (`ref.val().length`, read as a member, not called). The validator types it as a property of a string or stored value and refuses `length()` with production's text \"Type error: Function call on target that is not a function.\" (observation rtdb-rules-type-check).","toUpperCase() is a String method in the official language, and the validator's string method table (rules/rtdb/grammar/types.ts) accepts it with no arguments, as production's deploy validation does (observation rtdb-rules-type-check).","Terminates only the selected Firestore service instance: held refs reject with `failed-precondition`, owned listeners stop, and sibling Firestore or Auth services remain usable","Real Chromium: `packages/conformance/observations/firestore/firestore-browser-lifecycle.json` records `failed-precondition` on the terminated instance while Auth and a sibling Firestore instance continue. Replayed by `oracle-conformance.test.ts`; focused ownership coverage in `terminate.test.ts`. SharedWorker: a no-op, so held refs keep working (FP-9).","Changes the stored email (via the same path as `sandbox.updateUser`, rejecting `auth/email-already-in-use` / `auth/invalid-email`) and mutates the held `user` in place, so the next sign-in resolves against the new email. A session older than five minutes is refused with `auth/requires-recent-login`. Leniency vs prod: the sandbox is not routed through `verifyBeforeUpdateEmail`; with email-enumeration protection on, production refuses `updateEmail` with `auth/operation-not-allowed` (`Please verify the new email before changing email.`)","`unit:fruit-aliases.test.ts`: stored email changes; re-sign-in works with the new email, fails with the old. Recent-login gate: `unit:requires-recent-login.test.ts`. Oracle capture `auth-requires-recent-login` recorded `auth/operation-not-allowed` for updateEmail on the oracle project, which has email-enumeration protection on.","`updateMetadata` with `undefined` field values preserves the prior value (does NOT clear it)","divergence: prod accepts `null` to explicitly clear a field. Sandbox doesn't model `null`-clear (per `metadata.ts` doc comment). Documented; not probe-locked.","Phone number mutation is deferred alongside the rest of the phone-auth family — buildable via a mocked SMS/verification-code resolver, the same shape as the OAuth resolver.","Exported by `firebase/storage`; returns an `UploadTask` with `pause()` / `resume()` / `cancel()`","`unit:resumable-upload.test.ts` confirms `uploadBytesResumable(ref, data)` returns an `UploadTask` supporting `pause()`, `resume()`, and `cancel()` over synthetic microtask steps.","`task.on('state_changed', next, error, complete)` fires `next` with `{bytesTransferred, totalBytes, state}` snapshots","`unit:resumable-upload.test.ts` confirms synthetic progress snapshots are emitted during task execution without requiring network transfer.","`task.pause()` flips `state` to `'paused'`; `task.resume()` continues","`unit:resumable-upload.test.ts` confirms calling `task.pause()` and `task.resume()` transitions through `'paused'` and `'running'` states deterministically.","`task.cancel()` rejects the upload with `storage/canceled`","`unit:resumable-upload.test.ts` confirms cancellation rejects with `storage/canceled`. A commit already sent cannot be recalled, so a cancel that races it rolls it back, then rejects and tells observers. Production never stores a canceled upload, so its rules never see the rollback: the commit takes a token bound to the client, the generation it stored, and the object it replaced, and the host, without the rules, puts that object back or deletes the new one in one generation-checked write, keeping any later write (#1157, #1159). `storage-upload-rollback.test.ts` pins the token's binding, the restore, and a cancel under rules that deny every delete; `storage-ops.test.ts` pins a commit settling after the cancel and one held while paused. The web byte route fixture in `hosted-sqlite.test.ts` and `test/apps/client-sdk-under-register` cancel under `node --import @pyric/cli/register` and read no object, or the earlier one after an overwrite; on main (8e1ee9cb4) the object stayed (#1137). A failed rollback rejects with its own code. The in-page task does the same (#1161), and `storage-cancel-parity.test.ts` compares the two.","Sandbox: `format='base64url'` (or any unknown format) rejected with `storage/invalid-format` naming the bad format. Prod: `base64url` is ACCEPTED (upload succeeds); a genuinely-unrecognized format throws `storage/unknown`","divergence, both halves oracle-locked by `packages/conformance/observations/storage/storage-uploadstring-unknown-format.json`: prod accepts `base64url` (`base64urlOk: true`) and throws `storage/unknown` for an unrecognized format — not `storage/invalid-format`. The v1 sandbox ships only `raw`/`base64`/`data_url` (matches `StringFormat`) and throws `storage/invalid-format` for anything else (ST-B3 replaced the old mis-parse-as-data_url behavior). Both sides pinned in `oracle-conformance.test.ts`; sandbox code path documented in `upload.ts`'s `decodeString`. Implementing base64url decoding is still one line in `decodeString`.","Accepted no-op — the sandbox has no device locale to read, so there is no language to set; accepted so init code that calls it compiles + runs","`unit:fruit-aliases.test.ts` — resolves/returns without error","`user.metadata.creationTime` / `lastSignInTime`","client `User.metadata` not exposed (AUTH-GAP); the admin record carries `createdAt`/`lastLoginAt` (ISO)","Rules see the session's minted ID token exactly: RTDB `auth.token` and Firestore and Storage `request.auth.token` carry every decoded claim with its value, `sub`, `aud`, `iss`, `iat`, `exp` and `auth_time` included (`iss` is `https://securetoken.google.com/` plus `aud`, `exp - iat` is 3600, `auth_time` stays the sign-in time across refreshes), claims the token lacks read null, and RTDB `auth.provider` equals `firebase.sign_in_provider`; per sign-in kind (anonymous, password, verified profile, custom token for a new or existing account, custom claims after a forced refresh, reload, updateProfile, password reauthentication, email link). Custom-token claims merge over the account's stored claims for that session only","Production: `oracle:auth-request-auth-per-sign-in` (real sign-ins, RTDB probes deployed per decoded token) and `oracle:auth-request-auth-rules-test-api` (Firestore and Storage evaluating the same claim sets). In-page replay with pins: `unit:request-auth-per-sign-in.test.ts`","`user.reload()` / `user.delete()` / `user.toJSON()` / `user.refreshToken` / `user.tenantId`","not modeled by the sandbox; retained as an explicit unsupported behavior row rather than synthesized (AUTH-GAP)","Options that are not a non-null object throw `app-check/invalid-argument` with `VerifyAppCheckTokenOptions must be a non-null object.`, and a token that is not a string throws `App check token must be a non-null string.`; both throw synchronously. Then, with no project id configured, `app-check/invalid-credential`. A token with a character outside base64url in any segment fails with the decoding message. Before the signature, the token content is checked in this order: a header `alg` other than RS256 rejects with `The provided App Check token has incorrect algorithm. Expected \"RS256\" but got \"<alg>\".`; an `aud` without `projects/<projectId>` of the verifying app rejects with `app-check/invalid-argument` and `The provided App Check token has incorrect \"aud\" (audience) claim. Expected \"projects/<projectId>\" but got \"<aud>\". Make sure the App Check token comes from the same Firebase project as the service account used to authenticate this SDK.`; an `iss` not starting with `https://firebaseappcheck.googleapis.com/` rejects with `The provided App Check token has incorrect \"iss\" (issuer) claim.`; a `sub` that is not a string rejects with `The provided App Check token has no \"sub\" (subject) claim.`, and an empty one with `The provided App Check token has an empty string \"sub\" (subject) claim.` Then a token with no `kid` is checked against every key. A `kid` that names a key other than the sandbox's marks a token from Firebase: in sandbox AI mode it rejects with Pyric's message (row `verify-token-firebase-token`), and in production AI mode it goes to firebase-admin (row `verify-token-firebase-token-production-ai-mode`). After the signature, a non-numeric or future `nbf` and a non-numeric `exp` reject as an invalid signature; an absent `nbf` or `exp` does not apply.","Upstream-documented only: firebase-admin 13.10.0 `lib/app-check/token-verifier.js` (`verifyToken`, `verifyContent`, `ensureProjectId`, `mapJwtErrorToAppCheckError`), `lib/utils/jwt.js` (`getKeyCallback`, `PublicKeySignatureVerifier.verify`), jws 4 `verify-stream.js` (`JWS_REGEX`), and jsonwebtoken 9 `verify.js` (`nbf`, `exp`). No capture; verification runs locally in the Admin SDK, so a capture would need no production change.","Production verifies the App Check tokens Firebase issues. Sandbox: in sandbox AI mode, or in a process not started with `@pyric/cli/register` in production AI mode, a token whose `kid` names a key other than the sandbox's rejects with `app-check/invalid-argument` and Pyric's message, which says the token was not minted by the Pyric sandbox and to start the server in production AI mode (`PYRIC_AI_MODE=production`). The project check comes first, as in production.","capture `app-check-admin-verify-token` (production verifies a token from its debug exchange); the sandbox side is pinned in the admin suite.","A token whose `kid` names a key other than the sandbox's goes to firebase-admin's own `verifyToken`, for an app scoped to the project the mirror resolves. It resolves with production's `{ appId, token }` shape, the decoded token carrying `app_id`, and firebase-admin's errors (signature, audience, issuer, expiry) pass through with their codes and messages. Sandbox tokens, tokens with no `kid`, and malformed tokens keep the sandbox path.","capture `app-check-admin-verify-token` for the result shape; the verification itself is firebase-admin 13.10.0 `lib/app-check/token-verifier.js`, run unchanged.","Production records consumption on Firebase's servers, once per project: the first consume resolves with `alreadyConsumed: false` and a second with `alreadyConsumed: true`. Sandbox: firebase-admin verifies the token without `consume`, and the mirror records it in the process, in the set it keeps for sandbox tokens, with the same `false` then `true` results.","capture `app-check-admin-verify-consume`; the sandbox side is pinned in the admin suite and the production AI mode app scenario.","AC-12: the consume result key order is alreadyConsumed, appId, token in production; pyric puts alreadyConsumed last.","`oracle:app-check-admin-options-same-jti-consume`.","Resolves when all locally initiated writes have been committed by the server.","Awaits backend acknowledgment of all pending local writes."];
16
+ type SupportRow = readonly [feature: string, surface: number, importPaths: number, evidenceSlug: number, availability: number, fidelity: number, assurance: number, summary: string, caveats: readonly number[]];
17
+ const SUPPORT_ROWS: readonly SupportRow[] = [["AbstractUserDataWriter",0,0,0,0,0,0,"AbstractUserDataWriter is available, has conforms fidelity, and is eligible for assurance.",[]],["actAs",1,1,1,0,0,0,"actAs is available, has conforms fidelity, and is eligible for assurance.",[]],["ActionCodeInfo",2,2,2,0,1,1,"ActionCodeInfo is available, has no applicable behavior claim, and has no assurance classification.",[]],["ActionCodeOperation",2,2,2,0,0,0,"ActionCodeOperation is available, has conforms fidelity, and is eligible for assurance.",[]],["ActionCodeSettings",2,2,2,0,1,1,"ActionCodeSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["ActionCodeURL",2,2,2,0,0,0,"ActionCodeURL is available, has conforms fidelity, and is eligible for assurance.",[]],["add",3,1,3,0,0,0,"add is available, has conforms fidelity, and is eligible for assurance.",[]],["add",4,1,4,0,0,0,"add is available, has conforms fidelity, and is eligible for assurance.",[]],["addAuthStateListener",1,1,1,0,0,0,"addAuthStateListener is available, has conforms fidelity, and is eligible for assurance.",[]],["addDoc",0,0,0,0,0,0,"addDoc is available, has conforms fidelity, and is eligible for assurance.",[]],["addDocument",5,1,5,0,0,0,"addDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["addedKeys",6,1,6,0,0,0,"addedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["addIdTokenListener",1,1,1,0,0,0,"addIdTokenListener is available, has conforms fidelity, and is eligible for assurance.",[]],["AdditionalUserInfo",2,2,2,0,1,1,"AdditionalUserInfo is available, has no applicable behavior claim, and has no assurance classification.",[]],["additionalUserInfo",7,1,7,0,0,0,"additionalUserInfo is available, has conforms fidelity, and is eligible for assurance.",[]],["additionalUserInfo",1,1,1,0,0,0,"additionalUserInfo is available, has conforms fidelity, and is eligible for assurance.",[]],["additionalUserInfo",8,1,8,0,0,0,"additionalUserInfo is available, has conforms fidelity, and is eligible for assurance.",[]],["AddPrefixToKeys",0,0,0,0,1,1,"AddPrefixToKeys is available, has no applicable behavior claim, and has no assurance classification.",[]],["addQuerySnapshotListener",5,1,5,0,0,0,"addQuerySnapshotListener is available, has conforms fidelity, and is eligible for assurance.",[]],["addQuerySnapshotListenerMetadata",5,1,5,0,0,0,"addQuerySnapshotListenerMetadata is available, has conforms fidelity, and is eligible for assurance.",[]],["addQuerySnapshotListenerOptions",5,1,5,0,0,0,"addQuerySnapshotListenerOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["addSnapshotListener",5,1,5,0,0,0,"addSnapshotListener is available, has conforms fidelity, and is eligible for assurance.",[]],["addSnapshotListenerMetadata",5,1,5,0,0,0,"addSnapshotListenerMetadata is available, has conforms fidelity, and is eligible for assurance.",[]],["addSnapshotListenerOptions",5,1,5,0,0,0,"addSnapshotListenerOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["addSnapshotsInSyncListener",5,1,5,0,2,2,"addSnapshotsInSyncListener is available, has unverified fidelity, and is qualified for assurance.",[0,1]],["addValueEventListener",9,1,9,0,0,0,"addValueEventListener is available, has conforms fidelity, and is eligible for assurance.",[]],["affectedKeys",6,1,6,0,0,0,"affectedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["aggregate",3,1,3,0,0,0,"aggregate is available, has conforms fidelity, and is eligible for assurance.",[]],["aggregate",4,1,4,0,0,0,"aggregate is available, has conforms fidelity, and is eligible for assurance.",[]],["AggregateField",0,0,0,0,0,0,"AggregateField is available, has conforms fidelity, and is eligible for assurance.",[]],["aggregateFieldEqual",0,0,0,0,0,0,"aggregateFieldEqual is available, has conforms fidelity, and is eligible for assurance.",[]],["AggregateFieldType",0,0,0,0,1,1,"AggregateFieldType is available, has no applicable behavior claim, and has no assurance classification.",[]],["AggregateQuerySnapshot",0,0,0,0,0,0,"AggregateQuerySnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["aggregateQuerySnapshotEqual",0,0,0,0,0,0,"aggregateQuerySnapshotEqual is available, has conforms fidelity, and is eligible for assurance.",[]],["AggregateSpec",0,0,0,0,1,1,"AggregateSpec is available, has no applicable behavior claim, and has no assurance classification.",[]],["AggregateSpecData",0,0,0,0,1,1,"AggregateSpecData is available, has no applicable behavior claim, and has no assurance classification.",[]],["AggregateType",0,0,0,0,1,1,"AggregateType is available, has no applicable behavior claim, and has no assurance classification.",[]],["AI",10,3,10,0,1,1,"AI is available, has no applicable behavior claim, and has no assurance classification.",[]],["AIError",10,3,10,0,0,0,"AIError is available, has conforms fidelity, and is eligible for assurance.",[]],["AIErrorCode",10,3,10,0,0,0,"AIErrorCode is available, has conforms fidelity, and is eligible for assurance.",[]],["AIModel",10,3,10,0,1,1,"AIModel is available, has no applicable behavior claim, and has no assurance classification.",[]],["AIOptions",10,3,10,0,1,1,"AIOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["allow",11,4,6,0,0,0,"allow is available, has conforms fidelity, and is eligible for assurance.",[]],["and",0,0,0,0,0,0,"and is available, has conforms fidelity, and is eligible for assurance.",[]],["AndroidConfig",12,5,11,0,2,2,"AndroidConfig is available, has unverified fidelity, and is qualified for assurance.",[2,3]],["AndroidFcmOptions",12,5,11,0,0,0,"AndroidFcmOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["AndroidNotification",12,5,11,0,0,0,"AndroidNotification is available, has conforms fidelity, and is eligible for assurance.",[]],["AnyOfSchema",10,3,10,0,1,1,"AnyOfSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["ApnsConfig",12,5,11,0,0,0,"ApnsConfig is available, has conforms fidelity, and is eligible for assurance.",[]],["ApnsFcmOptions",12,5,11,0,0,0,"ApnsFcmOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["ApnsPayload",12,5,11,0,0,0,"ApnsPayload is available, has conforms fidelity, and is eligible for assurance.",[]],["app",1,1,1,0,0,0,"app is available, has conforms fidelity, and is eligible for assurance.",[]],["app",8,1,8,0,0,0,"app is available, has conforms fidelity, and is eligible for assurance.",[]],["app",5,1,5,0,0,0,"app is available, has conforms fidelity, and is eligible for assurance.",[]],["AppCheck",13,6,12,0,0,0,"AppCheck is available, has conforms fidelity, and is eligible for assurance.",[]],["AppCheckOptions",13,6,12,0,1,1,"AppCheckOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["AppCheckToken",13,6,12,0,1,1,"AppCheckToken is available, has no applicable behavior claim, and has no assurance classification.",[]],["AppCheckTokenListener",13,6,12,0,1,1,"AppCheckTokenListener is available, has no applicable behavior claim, and has no assurance classification.",[]],["AppCheckTokenResult",13,6,12,0,0,0,"AppCheckTokenResult is available, has conforms fidelity, and is eligible for assurance.",[]],["ApplicationVerifier",2,2,2,1,1,1,"ApplicationVerifier is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["applyActionCode",2,2,2,0,0,0,"applyActionCode is available, has conforms fidelity, and is eligible for assurance.",[]],["Aps",12,5,11,0,0,0,"Aps is available, has conforms fidelity, and is eligible for assurance.",[]],["ApsAlert",12,5,11,0,0,0,"ApsAlert is available, has conforms fidelity, and is eligible for assurance.",[]],["arithmetic",14,1,6,0,0,0,"arithmetic is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayContains",3,1,3,0,0,0,"arrayContains is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayContainsAny",3,1,3,0,0,0,"arrayContainsAny is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayRemove",0,0,0,0,0,0,"arrayRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayRemove",3,1,3,0,0,0,"arrayRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayRemove",4,1,4,0,0,0,"arrayRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayRemove",5,1,5,0,0,0,"arrayRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["ArraySchema",10,3,10,0,1,1,"ArraySchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["arrayUnion",0,0,0,0,0,0,"arrayUnion is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayUnion",3,1,3,0,0,0,"arrayUnion is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayUnion",4,1,4,0,0,0,"arrayUnion is available, has conforms fidelity, and is eligible for assurance.",[]],["arrayUnion",5,1,5,0,0,0,"arrayUnion is available, has conforms fidelity, and is eligible for assurance.",[]],["atoms",15,1,13,0,0,0,"atoms is available, has conforms fidelity, and is eligible for assurance.",[]],["AudioConversationController",10,3,10,1,1,1,"AudioConversationController is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["AudioTranscriptionConfig",10,3,10,1,1,1,"AudioTranscriptionConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["Auth",2,2,2,0,0,0,"Auth is available, has conforms fidelity, and is eligible for assurance.",[]],["auth",8,1,8,0,0,0,"auth is available, has conforms fidelity, and is eligible for assurance.",[]],["auth",14,1,6,0,0,0,"auth is available, has conforms fidelity, and is eligible for assurance.",[]],["auth.provider",14,1,6,0,0,0,"auth.provider is available, has conforms fidelity, and is eligible for assurance.",[]],["auth.token",14,1,6,0,0,0,"auth.token is available, has conforms fidelity, and is eligible for assurance.",[]],["auth.token.custom-claim",14,1,6,0,0,0,"auth.token.custom-claim is available, has conforms fidelity, and is eligible for assurance.",[]],["auth.uid",14,1,6,0,0,0,"auth.uid is available, has conforms fidelity, and is eligible for assurance.",[]],["authApp",8,1,8,0,0,0,"authApp is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthCredential",2,2,2,0,1,1,"AuthCredential is available, has no applicable behavior claim, and has no assurance classification.",[]],["authCredentialProvider",8,1,8,0,0,0,"authCredentialProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["authDataResult",8,1,8,0,0,0,"authDataResult is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthError",2,2,2,1,1,1,"AuthError is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["authError",8,1,8,0,0,0,"authError is available, has conforms fidelity, and is eligible for assurance.",[]],["authErrorCode",8,1,8,0,0,0,"authErrorCode is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthErrorCodes",2,2,2,0,0,0,"AuthErrorCodes is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthErrorMap",2,2,2,0,1,1,"AuthErrorMap is available, has no applicable behavior claim, and has no assurance classification.",[]],["authFirestoreCoupling",8,1,8,0,0,0,"authFirestoreCoupling is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthLens",7,1,7,0,0,0,"AuthLens is available, has conforms fidelity, and is eligible for assurance.",[]],["authLens",7,1,7,0,0,0,"authLens is available, has conforms fidelity, and is eligible for assurance.",[]],["authLensChanges",7,1,7,0,0,0,"authLensChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["authLensFlow",1,1,1,0,0,0,"authLensFlow is available, has conforms fidelity, and is eligible for assurance.",[]],["authLensStream",8,1,8,0,0,0,"authLensStream is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthProvider",2,2,2,0,1,1,"AuthProvider is available, has no applicable behavior claim, and has no assurance classification.",[]],["authResult",1,1,1,0,0,0,"authResult is available, has conforms fidelity, and is eligible for assurance.",[]],["AuthSettings",2,2,2,1,1,1,"AuthSettings is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["authStateChanges",7,1,7,0,0,0,"authStateChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["authStateChanges",8,1,8,0,0,0,"authStateChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["authStateFlow",1,1,1,0,0,0,"authStateFlow is available, has conforms fidelity, and is eligible for assurance.",[]],["authStatePublisher",8,1,8,0,0,0,"authStatePublisher is available, has conforms fidelity, and is eligible for assurance.",[]],["authStateStream",8,1,8,0,0,0,"authStateStream is available, has conforms fidelity, and is eligible for assurance.",[]],["authTokenResultClaims",8,1,8,0,0,0,"authTokenResultClaims is available, has conforms fidelity, and is eligible for assurance.",[]],["authTokenResultExpiration",8,1,8,0,0,0,"authTokenResultExpiration is available, has conforms fidelity, and is eligible for assurance.",[]],["authTokenResultToken",8,1,8,0,0,0,"authTokenResultToken is available, has conforms fidelity, and is eligible for assurance.",[]],["average",0,0,0,0,3,3,"average is available, has bug fidelity, and is ineligible for assurance.",[5,6]],["Backend",10,3,10,0,1,1,"Backend is available, has no applicable behavior claim, and has no assurance classification.",[]],["BackendType",10,3,10,0,1,1,"BackendType is available, has no applicable behavior claim, and has no assurance classification.",[]],["BaseMessage",12,5,11,0,0,0,"BaseMessage is available, has conforms fidelity, and is eligible for assurance.",[]],["BaseParams",10,3,10,0,1,1,"BaseParams is available, has no applicable behavior claim, and has no assurance classification.",[]],["batch",3,1,3,0,0,0,"batch is available, has conforms fidelity, and is eligible for assurance.",[]],["batch",4,1,4,0,0,0,"batch is available, has conforms fidelity, and is eligible for assurance.",[]],["batch",11,1,6,0,0,0,"batch is available, has conforms fidelity, and is eligible for assurance.",[]],["batch",5,1,5,0,0,0,"batch is available, has conforms fidelity, and is eligible for assurance.",[]],["batchCommit",5,1,5,0,0,0,"batchCommit is available, has conforms fidelity, and is eligible for assurance.",[]],["batchDeleteDocument",5,1,5,0,0,0,"batchDeleteDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["batchSetData",5,1,5,0,0,0,"batchSetData is available, has conforms fidelity, and is eligible for assurance.",[]],["batchSetDataMerge",5,1,5,0,0,0,"batchSetDataMerge is available, has conforms fidelity, and is eligible for assurance.",[]],["batchSetDataMergeFields",5,1,5,0,0,0,"batchSetDataMergeFields is available, has conforms fidelity, and is eligible for assurance.",[]],["batchUpdateData",5,1,5,0,0,0,"batchUpdateData is available, has conforms fidelity, and is eligible for assurance.",[]],["beforeAuthStateChanged",2,2,2,0,4,2,"beforeAuthStateChanged is available, has diverged fidelity, and is qualified for assurance.",[7,8,9,10]],["Blob",3,1,3,0,0,0,"Blob is available, has conforms fidelity, and is eligible for assurance.",[]],["Blob",4,1,4,0,0,0,"Blob is available, has conforms fidelity, and is eligible for assurance.",[]],["BlockReason",10,3,10,0,1,1,"BlockReason is available, has no applicable behavior claim, and has no assurance classification.",[]],["bool",11,1,6,0,0,0,"bool is available, has conforms fidelity, and is eligible for assurance.",[]],["BooleanSchema",10,3,10,0,1,1,"BooleanSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["bridgeOps",7,1,7,0,0,0,"bridgeOps is available, has conforms fidelity, and is eligible for assurance.",[]],["browserCookiePersistence",2,2,2,0,4,2,"browserCookiePersistence is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["browserLocalPersistence",2,2,2,0,4,2,"browserLocalPersistence is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["browserPopupRedirectResolver",2,2,2,0,4,2,"browserPopupRedirectResolver is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["browserSessionPersistence",2,2,2,0,4,2,"browserSessionPersistence is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["Bucket.deleteFiles",16,7,14,0,2,2,"Bucket.deleteFiles is available, has unverified fidelity, and is qualified for assurance.",[13,14]],["Bucket.getFiles",16,7,14,0,2,2,"Bucket.getFiles is available, has unverified fidelity, and is qualified for assurance.",[15,16]],["Bytes",0,0,0,0,0,0,"Bytes is available, has conforms fidelity, and is eligible for assurance.",[]],["bytes.size",11,1,6,0,0,0,"bytes.size is available, has conforms fidelity, and is eligible for assurance.",[]],["bytes.toBase64",11,1,6,0,0,0,"bytes.toBase64 is available, has conforms fidelity, and is eligible for assurance.",[]],["bytes.toBase64",6,1,6,0,0,0,"bytes.toBase64 is available, has conforms fidelity, and is eligible for assurance.",[]],["bytes.toHexString",11,1,6,0,0,0,"bytes.toHexString is available, has conforms fidelity, and is eligible for assurance.",[]],["bytes.toHexString",6,1,6,0,0,0,"bytes.toHexString is available, has conforms fidelity, and is eligible for assurance.",[]],["CACHE_SIZE_UNLIMITED",0,0,0,0,0,0,"CACHE_SIZE_UNLIMITED is available, has conforms fidelity, and is eligible for assurance.",[]],["cast.bool",11,1,6,0,0,0,"cast.bool is available, has conforms fidelity, and is eligible for assurance.",[]],["cast.bool",6,1,6,0,4,3,"cast.bool is available, has diverged fidelity, and is ineligible for assurance.",[]],["cast.float",11,1,6,0,0,0,"cast.float is available, has conforms fidelity, and is eligible for assurance.",[]],["cast.float",6,1,6,0,0,0,"cast.float is available, has conforms fidelity, and is eligible for assurance.",[]],["cast.int",11,1,6,0,4,3,"cast.int is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["cast.int",6,1,6,0,5,3,"cast.int is available, has unsupported fidelity, and is ineligible for assurance.",[19,20]],["cast.path",11,1,6,0,0,0,"cast.path is available, has conforms fidelity, and is eligible for assurance.",[]],["cast.path",6,1,6,0,0,0,"cast.path is available, has conforms fidelity, and is eligible for assurance.",[]],["cast.string",11,1,6,0,4,3,"cast.string is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["cast.string",6,1,6,0,5,3,"cast.string is available, has unsupported fidelity, and is ineligible for assurance.",[19,20]],["changedKeys",6,1,6,0,0,0,"changedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["ChatSession",10,3,10,0,1,1,"ChatSession is available, has no applicable behavior claim, and has no assurance classification.",[]],["ChatSessionBase",10,3,10,0,1,1,"ChatSessionBase is available, has no applicable behavior claim, and has no assurance classification.",[]],["checkActionCode",2,2,2,0,0,0,"checkActionCode is available, has conforms fidelity, and is eligible for assurance.",[]],["child",15,8,13,0,0,0,"child is available, has conforms fidelity, and is eligible for assurance.",[]],["child",17,1,15,0,0,0,"child is available, has conforms fidelity, and is eligible for assurance.",[]],["child",9,1,9,0,0,0,"child is available, has conforms fidelity, and is eligible for assurance.",[]],["child",14,8,6,0,0,0,"child is available, has conforms fidelity, and is eligible for assurance.",[]],["child",18,1,16,0,0,0,"child is available, has conforms fidelity, and is eligible for assurance.",[]],["childByAutoId",18,1,16,0,0,0,"childByAutoId is available, has conforms fidelity, and is eligible for assurance.",[]],["children",17,1,15,0,0,0,"children is available, has conforms fidelity, and is eligible for assurance.",[]],["children",9,1,9,0,0,0,"children is available, has conforms fidelity, and is eligible for assurance.",[]],["children",18,1,16,0,0,0,"children is available, has conforms fidelity, and is eligible for assurance.",[]],["childSnapshot",18,1,16,0,0,0,"childSnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["ChildUpdateFields",0,0,0,0,1,1,"ChildUpdateFields is available, has no applicable behavior claim, and has no assurance classification.",[]],["ChromeAdapter",10,3,10,1,1,1,"ChromeAdapter is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["Citation",10,3,10,0,1,1,"Citation is available, has no applicable behavior claim, and has no assurance classification.",[]],["CitationMetadata",10,3,10,0,1,1,"CitationMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["claims",8,1,8,0,0,0,"claims is available, has conforms fidelity, and is eligible for assurance.",[]],["clearIndexedDbPersistence",0,0,0,0,0,0,"clearIndexedDbPersistence is available, has conforms fidelity, and is eligible for assurance.",[]],["clearInstancesForTest",1,1,1,0,0,0,"clearInstancesForTest is available, has conforms fidelity, and is eligible for assurance.",[]],["clearPersistence",3,1,3,0,2,2,"clearPersistence is available, has unverified fidelity, and is qualified for assurance.",[21,22]],["clearPersistence",4,1,4,0,2,2,"clearPersistence is available, has unverified fidelity, and is qualified for assurance.",[21,23]],["clearPersistence",5,1,5,0,2,2,"clearPersistence is available, has unverified fidelity, and is qualified for assurance.",[21,1]],["CodeExecutionResult",10,3,10,0,1,1,"CodeExecutionResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["CodeExecutionResultPart",10,3,10,0,1,1,"CodeExecutionResultPart is available, has no applicable behavior claim, and has no assurance classification.",[]],["CodeExecutionTool",10,3,10,0,1,1,"CodeExecutionTool is available, has no applicable behavior claim, and has no assurance classification.",[]],["collection",0,0,0,0,0,0,"collection is available, has conforms fidelity, and is eligible for assurance.",[]],["collection",3,1,3,0,0,0,"collection is available, has conforms fidelity, and is eligible for assurance.",[]],["collection",4,1,4,0,0,0,"collection is available, has conforms fidelity, and is eligible for assurance.",[]],["collection",5,1,5,0,0,0,"collection is available, has conforms fidelity, and is eligible for assurance.",[]],["collectionGroup",0,0,0,0,0,0,"collectionGroup is available, has conforms fidelity, and is eligible for assurance.",[]],["collectionGroup",3,1,3,0,0,0,"collectionGroup is available, has conforms fidelity, and is eligible for assurance.",[]],["collectionGroup",4,1,4,0,0,0,"collectionGroup is available, has conforms fidelity, and is eligible for assurance.",[]],["collectionGroup",5,1,5,0,0,0,"collectionGroup is available, has conforms fidelity, and is eligible for assurance.",[]],["collectionID",5,1,5,0,0,0,"collectionID is available, has conforms fidelity, and is eligible for assurance.",[]],["CollectionReference",0,0,0,0,0,0,"CollectionReference is available, has conforms fidelity, and is eligible for assurance.",[]],["commit",3,1,3,0,0,0,"commit is available, has conforms fidelity, and is eligible for assurance.",[]],["commit",4,1,4,0,0,0,"commit is available, has conforms fidelity, and is eligible for assurance.",[]],["comparison",14,1,6,0,0,0,"comparison is available, has conforms fidelity, and is eligible for assurance.",[]],["compileRtdbRules",15,9,13,0,0,0,"compileRtdbRules is available, has conforms fidelity, and is eligible for assurance.",[]],["CompleteFn",2,2,2,1,1,1,"CompleteFn is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["compose",15,1,13,0,0,0,"compose is available, has conforms fidelity, and is eligible for assurance.",[]],["concat",11,1,6,0,0,0,"concat is available, has conforms fidelity, and is eligible for assurance.",[]],["ConditionMessage",12,5,11,0,0,0,"ConditionMessage is available, has conforms fidelity, and is eligible for assurance.",[]],["Config",2,2,2,1,1,1,"Config is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ConfirmationResult",2,2,2,1,1,1,"ConfirmationResult is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["confirmPasswordReset",2,2,2,0,0,0,"confirmPasswordReset is available, has conforms fidelity, and is eligible for assurance.",[]],["connectAuthEmulator",2,2,2,0,1,1,"connectAuthEmulator is available, has no applicable behavior claim, and has no assurance classification.",[]],["connectDatabaseEmulator",15,8,13,0,5,3,"connectDatabaseEmulator is available, has unsupported fidelity, and is ineligible for assurance.",[24,25,26]],["connectFirestoreEmulator",0,0,0,0,0,0,"connectFirestoreEmulator is available, has conforms fidelity, and is eligible for assurance.",[]],["connectStorageEmulator",19,10,14,0,5,3,"connectStorageEmulator is available, has unsupported fidelity, and is ineligible for assurance.",[27,28]],["constructorAccess",11,1,6,0,0,0,"constructorAccess is available, has conforms fidelity, and is eligible for assurance.",[]],["Content",10,3,10,0,1,1,"Content is available, has no applicable behavior claim, and has no assurance classification.",[]],["ContextWindowCompressionConfig",10,3,10,1,1,1,"ContextWindowCompressionConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["count",0,0,0,0,3,3,"count is available, has bug fidelity, and is ineligible for assurance.",[29,30,31,32]],["count",3,1,3,0,0,0,"count is available, has conforms fidelity, and is eligible for assurance.",[]],["count",4,1,4,0,0,0,"count is available, has conforms fidelity, and is eligible for assurance.",[]],["count",5,1,5,0,0,0,"count is available, has conforms fidelity, and is eligible for assurance.",[]],["countTokens",10,1,10,0,0,0,"countTokens is available, has conforms fidelity, and is eligible for assurance.",[]],["CountTokensRequest",10,3,10,0,1,1,"CountTokensRequest is available, has no applicable behavior claim, and has no assurance classification.",[]],["CountTokensResponse",10,3,10,0,1,1,"CountTokensResponse is available, has no applicable behavior claim, and has no assurance classification.",[]],["createToken",20,11,12,0,3,3,"createToken is available, has bug fidelity, and is ineligible for assurance.",[33,34,35,36,37,38,39,40,41,42,43,44,45]],["createUserWithEmailAndPassword",2,2,2,0,0,0,"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["createUserWithEmailAndPassword",7,1,7,0,0,0,"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["createUserWithEmailAndPassword",1,1,1,0,0,0,"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["createUserWithEmailAndPassword",8,1,8,0,0,0,"createUserWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["credential",7,1,7,0,0,0,"credential is available, has conforms fidelity, and is eligible for assurance.",[]],["credential",8,1,8,0,0,0,"credential is available, has conforms fidelity, and is eligible for assurance.",[]],["credentialsProvider",1,1,1,0,0,0,"credentialsProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["CriticalSound",12,5,11,0,0,0,"CriticalSound is available, has conforms fidelity, and is eligible for assurance.",[]],["crossServiceIam",6,1,6,0,0,0,"crossServiceIam is available, has conforms fidelity, and is eligible for assurance.",[]],["crossTypeOperators",11,1,6,0,0,0,"crossTypeOperators is available, has conforms fidelity, and is eligible for assurance.",[]],["currentAuthLens",7,1,7,0,0,0,"currentAuthLens is available, has conforms fidelity, and is eligible for assurance.",[]],["currentAuthLens",8,1,8,0,0,0,"currentAuthLens is available, has conforms fidelity, and is eligible for assurance.",[]],["currentUser",7,1,7,0,0,0,"currentUser is available, has conforms fidelity, and is eligible for assurance.",[]],["currentUser",1,1,1,0,0,0,"currentUser is available, has conforms fidelity, and is eligible for assurance.",[]],["currentUser",8,1,8,0,0,0,"currentUser is available, has conforms fidelity, and is eligible for assurance.",[]],["customClaims",7,1,7,0,0,0,"customClaims is available, has conforms fidelity, and is eligible for assurance.",[]],["customClaims",1,1,1,0,0,0,"customClaims is available, has conforms fidelity, and is eligible for assurance.",[]],["CustomErrorData",10,3,10,0,1,1,"CustomErrorData is available, has no applicable behavior claim, and has no assurance classification.",[]],["CustomParameters",2,2,2,1,1,1,"CustomParameters is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["CustomProvider",13,6,12,0,2,2,"CustomProvider is available, has unverified fidelity, and is qualified for assurance.",[46,47]],["CustomProviderOptions",13,6,12,0,1,1,"CustomProviderOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["data",3,1,3,0,0,0,"data is available, has conforms fidelity, and is eligible for assurance.",[]],["data",4,1,4,0,0,0,"data is available, has conforms fidelity, and is eligible for assurance.",[]],["data",5,1,5,0,0,0,"data is available, has conforms fidelity, and is eligible for assurance.",[]],["data",14,1,6,0,0,0,"data is available, has conforms fidelity, and is eligible for assurance.",[]],["dataAsDecodable",5,1,5,0,0,0,"dataAsDecodable is available, has conforms fidelity, and is eligible for assurance.",[]],["Database",15,8,13,0,1,1,"Database is available, has no applicable behavior claim, and has no assurance classification.",[]],["database",18,1,16,0,0,0,"database is available, has conforms fidelity, and is eligible for assurance.",[]],["DatabaseEvent",21,1,17,0,0,0,"DatabaseEvent is available, has conforms fidelity, and is eligible for assurance.",[]],["DatabaseReference",15,8,13,0,1,1,"DatabaseReference is available, has no applicable behavior claim, and has no assurance classification.",[]],["databaseUrl",18,1,16,0,4,2,"databaseUrl is available, has diverged fidelity, and is qualified for assurance.",[48,49]],["DataMessagePayload",12,5,11,0,0,0,"DataMessagePayload is available, has conforms fidelity, and is eligible for assurance.",[]],["DataSnapshot",15,8,13,0,0,0,"DataSnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["dataWithServerTimestampBehavior",5,1,5,0,0,0,"dataWithServerTimestampBehavior is available, has conforms fidelity, and is eligible for assurance.",[]],["Date",10,3,10,0,1,1,"Date is available, has no applicable behavior claim, and has no assurance classification.",[]],["debug",11,1,6,0,0,0,"debug is available, has conforms fidelity, and is eligible for assurance.",[]],["debugErrorMap",2,2,2,0,4,2,"debugErrorMap is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["delegateFor",7,1,7,0,0,0,"delegateFor is available, has conforms fidelity, and is eligible for assurance.",[]],["delete",3,1,3,0,0,0,"delete is available, has conforms fidelity, and is eligible for assurance.",[]],["delete",4,1,4,0,0,0,"delete is available, has conforms fidelity, and is eligible for assurance.",[]],["delete",5,1,5,0,0,0,"delete is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteAllPersistentCacheIndexes",0,0,0,0,0,0,"deleteAllPersistentCacheIndexes is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteApp",22,12,18,0,4,2,"deleteApp is available, has diverged fidelity, and is qualified for assurance.",[50,51,52,53]],["deleteDoc",0,0,0,0,0,0,"deleteDoc is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteField",0,0,0,0,0,0,"deleteField is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteField",3,1,3,0,0,0,"deleteField is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteField",4,1,4,0,0,0,"deleteField is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteField",5,1,5,0,0,0,"deleteField is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteObject",19,10,14,0,4,2,"deleteObject is available, has diverged fidelity, and is qualified for assurance.",[54,55]],["deleteToken",23,13,11,0,2,2,"deleteToken is available, has unverified fidelity, and is qualified for assurance.",[56,57]],["deleteUser",2,2,2,0,0,0,"deleteUser is available, has conforms fidelity, and is eligible for assurance.",[]],["deleteUser",7,1,7,0,0,0,"deleteUser is available, has conforms fidelity, and is eligible for assurance.",[]],["denyByDefault",14,1,6,0,0,0,"denyByDefault is available, has conforms fidelity, and is eligible for assurance.",[]],["Dependencies",2,2,2,1,1,1,"Dependencies is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["diff",11,1,6,0,0,0,"diff is available, has conforms fidelity, and is eligible for assurance.",[]],["diff",6,1,6,0,0,0,"diff is available, has conforms fidelity, and is eligible for assurance.",[]],["difference",11,1,6,0,0,0,"difference is available, has conforms fidelity, and is eligible for assurance.",[]],["difference",6,1,6,0,0,0,"difference is available, has conforms fidelity, and is eligible for assurance.",[]],["disableNetwork",0,0,0,0,3,3,"disableNetwork is available, has bug fidelity, and is ineligible for assurance.",[58,59,60,61]],["disableNetwork",3,1,3,0,2,2,"disableNetwork is available, has unverified fidelity, and is qualified for assurance.",[62,22]],["disableNetwork",4,1,4,0,2,2,"disableNetwork is available, has unverified fidelity, and is qualified for assurance.",[62,23]],["disableNetwork",5,1,5,0,2,2,"disableNetwork is available, has unverified fidelity, and is qualified for assurance.",[63,1]],["disablePersistentCacheIndexAutoCreation",0,0,0,0,0,0,"disablePersistentCacheIndexAutoCreation is available, has conforms fidelity, and is eligible for assurance.",[]],["displayName",7,1,7,0,0,0,"displayName is available, has conforms fidelity, and is eligible for assurance.",[]],["displayName",1,1,1,0,0,0,"displayName is available, has conforms fidelity, and is eligible for assurance.",[]],["displayName",8,1,8,0,0,0,"displayName is available, has conforms fidelity, and is eligible for assurance.",[]],["dispose",7,1,7,0,0,0,"dispose is available, has conforms fidelity, and is eligible for assurance.",[]],["doc",0,0,0,0,0,0,"doc is available, has conforms fidelity, and is eligible for assurance.",[]],["doc",3,1,3,0,0,0,"doc is available, has conforms fidelity, and is eligible for assurance.",[]],["docChanges",3,1,3,0,0,0,"docChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["docs",3,1,3,0,0,0,"docs is available, has conforms fidelity, and is eligible for assurance.",[]],["document",4,1,4,0,0,0,"document is available, has conforms fidelity, and is eligible for assurance.",[]],["document",5,1,5,0,0,0,"document is available, has conforms fidelity, and is eligible for assurance.",[]],["documentAutoId",5,1,5,0,0,0,"documentAutoId is available, has conforms fidelity, and is eligible for assurance.",[]],["DocumentChange",0,0,0,0,1,1,"DocumentChange is available, has no applicable behavior claim, and has no assurance classification.",[]],["documentChange",5,1,5,0,0,0,"documentChange is available, has conforms fidelity, and is eligible for assurance.",[]],["documentChanges",4,1,4,0,0,0,"documentChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["documentChanges",5,1,5,0,0,0,"documentChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["documentChangesIncludeMetadata",5,1,5,0,0,0,"documentChangesIncludeMetadata is available, has conforms fidelity, and is eligible for assurance.",[]],["DocumentChangeType",0,0,0,0,1,1,"DocumentChangeType is available, has no applicable behavior claim, and has no assurance classification.",[]],["DocumentData",0,0,0,0,1,1,"DocumentData is available, has no applicable behavior claim, and has no assurance classification.",[]],["documentId",0,0,0,0,0,0,"documentId is available, has conforms fidelity, and is eligible for assurance.",[]],["documentID",5,1,5,0,0,0,"documentID is available, has conforms fidelity, and is eligible for assurance.",[]],["documentIDPropertyWrapper",5,1,5,0,0,0,"documentIDPropertyWrapper is available, has conforms fidelity, and is eligible for assurance.",[]],["documentPath",5,1,5,0,0,0,"documentPath is available, has conforms fidelity, and is eligible for assurance.",[]],["DocumentReference",0,0,0,0,0,0,"DocumentReference is available, has conforms fidelity, and is eligible for assurance.",[]],["DocumentReference",3,1,3,0,0,0,"DocumentReference is available, has conforms fidelity, and is eligible for assurance.",[]],["DocumentReference",4,1,4,0,0,0,"DocumentReference is available, has conforms fidelity, and is eligible for assurance.",[]],["documents",4,1,4,0,0,0,"documents is available, has conforms fidelity, and is eligible for assurance.",[]],["documents",5,1,5,0,0,0,"documents is available, has conforms fidelity, and is eligible for assurance.",[]],["DocumentSnapshot",0,0,0,0,0,0,"DocumentSnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["documentSnapshotFromJSON",0,0,0,0,0,0,"documentSnapshotFromJSON is available, has conforms fidelity, and is eligible for assurance.",[]],["documentSnapshotsSequence",5,1,5,0,0,0,"documentSnapshotsSequence is available, has conforms fidelity, and is eligible for assurance.",[]],["duration",11,4,6,0,4,3,"duration is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["Duration",11,1,6,0,0,0,"Duration is available, has conforms fidelity, and is eligible for assurance.",[]],["duration",6,1,6,0,4,3,"duration is available, has diverged fidelity, and is ineligible for assurance.",[64,65]],["duration.abs",11,1,6,0,0,0,"duration.abs is available, has conforms fidelity, and is eligible for assurance.",[]],["duration.abs",6,1,6,0,0,0,"duration.abs is available, has conforms fidelity, and is eligible for assurance.",[66]],["duration.nanos",11,1,6,0,0,0,"duration.nanos is available, has conforms fidelity, and is eligible for assurance.",[]],["duration.nanos",6,1,6,0,0,0,"duration.nanos is available, has conforms fidelity, and is eligible for assurance.",[]],["duration.seconds",11,1,6,0,0,0,"duration.seconds is available, has conforms fidelity, and is eligible for assurance.",[]],["duration.seconds",6,1,6,0,0,0,"duration.seconds is available, has conforms fidelity, and is eligible for assurance.",[]],["duration.time",11,1,6,0,0,0,"duration.time is available, has conforms fidelity, and is eligible for assurance.",[]],["duration.time",6,1,6,0,0,0,"duration.time is available, has conforms fidelity, and is eligible for assurance.",[67]],["duration.value",11,1,6,0,4,3,"duration.value is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["duration.value",6,1,6,0,0,0,"duration.value is available, has conforms fidelity, and is eligible for assurance.",[68]],["email",7,1,7,0,0,0,"email is available, has conforms fidelity, and is eligible for assurance.",[]],["email",1,1,1,0,0,0,"email is available, has conforms fidelity, and is eligible for assurance.",[]],["email",8,1,8,0,0,0,"email is available, has conforms fidelity, and is eligible for assurance.",[]],["EmailAuthCredential",2,2,2,0,0,0,"EmailAuthCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["EmailAuthProvider",2,2,2,0,5,3,"EmailAuthProvider is available, has unsupported fidelity, and is ineligible for assurance.",[69,70]],["emailVerified",7,1,7,0,0,0,"emailVerified is available, has conforms fidelity, and is eligible for assurance.",[]],["EmulatorConfig",2,2,2,1,1,1,"EmulatorConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["EmulatorMockTokenOptions",0,0,0,0,1,1,"EmulatorMockTokenOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["EmulatorMockTokenOptions",15,8,13,0,1,1,"EmulatorMockTokenOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["EmulatorMockTokenOptions",19,10,14,1,1,1,"EmulatorMockTokenOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["enableIndexedDbPersistence",0,0,0,0,4,2,"enableIndexedDbPersistence is available, has diverged fidelity, and is qualified for assurance.",[71,72]],["enableLegacyHttpTransport",12,5,11,0,2,2,"enableLegacyHttpTransport is available, has unverified fidelity, and is qualified for assurance.",[73,74]],["enableLogging",15,8,13,0,4,2,"enableLogging is available, has diverged fidelity, and is qualified for assurance.",[75,76]],["enableMultiTabIndexedDbPersistence",0,0,0,0,0,0,"enableMultiTabIndexedDbPersistence is available, has conforms fidelity, and is eligible for assurance.",[]],["enableNetwork",0,0,0,0,4,2,"enableNetwork is available, has diverged fidelity, and is qualified for assurance.",[58,59]],["enableNetwork",3,1,3,0,2,2,"enableNetwork is available, has unverified fidelity, and is qualified for assurance.",[62,22]],["enableNetwork",4,1,4,0,2,2,"enableNetwork is available, has unverified fidelity, and is qualified for assurance.",[62,23]],["enableNetwork",5,1,5,0,2,2,"enableNetwork is available, has unverified fidelity, and is qualified for assurance.",[63,1]],["enablePersistentCacheIndexAutoCreation",0,0,0,0,0,0,"enablePersistentCacheIndexAutoCreation is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",0,0,0,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",3,1,3,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",4,1,4,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",5,1,5,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",15,8,13,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",17,1,15,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAt",9,1,9,0,0,0,"endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["endAtDocument",3,1,3,0,0,0,"endAtDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["endAtDocument",5,1,5,0,0,0,"endAtDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["endBefore",0,0,0,0,0,0,"endBefore is available, has conforms fidelity, and is eligible for assurance.",[]],["endBefore",3,1,3,0,0,0,"endBefore is available, has conforms fidelity, and is eligible for assurance.",[]],["endBefore",4,1,4,0,0,0,"endBefore is available, has conforms fidelity, and is eligible for assurance.",[]],["endBefore",5,1,5,0,0,0,"endBefore is available, has conforms fidelity, and is eligible for assurance.",[]],["endBefore",15,8,13,0,0,0,"endBefore is available, has conforms fidelity, and is eligible for assurance.",[]],["endBeforeDocument",5,1,5,0,0,0,"endBeforeDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["EnhancedGenerateContentResponse",10,3,10,0,1,1,"EnhancedGenerateContentResponse is available, has no applicable behavior claim, and has no assurance classification.",[]],["ensureFirestoreConfigured",0,0,0,0,0,0,"ensureFirestoreConfigured is available, has conforms fidelity, and is eligible for assurance.",[]],["equalTo",15,8,13,0,0,0,"equalTo is available, has conforms fidelity, and is eligible for assurance.",[]],["equalTo",17,1,15,0,0,0,"equalTo is available, has conforms fidelity, and is eligible for assurance.",[]],["equalTo",9,1,9,0,0,0,"equalTo is available, has conforms fidelity, and is eligible for assurance.",[]],["ErrorCode",23,1,11,0,0,0,"ErrorCode is available, has conforms fidelity, and is eligible for assurance.",[]],["ErrorDetails",10,3,10,0,1,1,"ErrorDetails is available, has no applicable behavior claim, and has no assurance classification.",[]],["ErrorFn",2,2,2,1,1,1,"ErrorFn is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["evaluateStorageRules",6,10,6,0,4,3,"evaluateStorageRules is available, has diverged fidelity, and is ineligible for assurance.",[77,78]],["EventType",15,8,13,0,1,1,"EventType is available, has no applicable behavior claim, and has no assurance classification.",[]],["ExecutableCode",10,3,10,0,1,1,"ExecutableCode is available, has no applicable behavior claim, and has no assurance classification.",[]],["ExecutableCodePart",10,3,10,0,1,1,"ExecutableCodePart is available, has no applicable behavior claim, and has no assurance classification.",[]],["executeWrite",0,0,0,0,0,0,"executeWrite is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",3,1,3,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",4,1,4,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",11,1,6,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",5,1,5,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",17,1,15,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",9,1,9,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["exists",18,1,16,0,0,0,"exists is available, has conforms fidelity, and is eligible for assurance.",[]],["existsAfter",11,1,6,0,0,0,"existsAfter is available, has conforms fidelity, and is eligible for assurance.",[79]],["ExperimentalLongPollingOptions",0,0,0,0,1,1,"ExperimentalLongPollingOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["experimentalSetDeliveryMetricsExportedToBigQueryEnabled",23,14,11,0,0,0,"experimentalSetDeliveryMetricsExportedToBigQueryEnabled is available, has conforms fidelity, and is eligible for assurance.",[]],["FacebookAuthProvider",2,2,2,0,1,1,"FacebookAuthProvider is available, has no applicable behavior claim, and has no assurance classification.",[]],["FactorId",2,2,2,0,1,1,"FactorId is available, has no applicable behavior claim, and has no assurance classification.",[]],["FcmOptions",23,15,11,0,1,1,"FcmOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["FcmOptions",12,5,11,0,0,0,"FcmOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["fetchSignInMethodsForEmail",2,2,2,2,1,1,"fetchSignInMethodsForEmail is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.",[80,81,82]],["FieldPath",0,0,0,0,0,0,"FieldPath is available, has conforms fidelity, and is eligible for assurance.",[]],["fieldPath",5,1,5,0,0,0,"fieldPath is available, has conforms fidelity, and is eligible for assurance.",[]],["FieldValue",0,0,0,0,0,0,"FieldValue is available, has conforms fidelity, and is eligible for assurance.",[]],["File.getMetadata",16,7,14,0,0,0,"File.getMetadata is available, has conforms fidelity, and is eligible for assurance.",[]],["File.setMetadata",16,7,14,0,4,2,"File.setMetadata is available, has diverged fidelity, and is qualified for assurance.",[83,84]],["FileData",10,3,10,0,1,1,"FileData is available, has no applicable behavior claim, and has no assurance classification.",[]],["FileDataPart",10,3,10,0,1,1,"FileDataPart is available, has no applicable behavior claim, and has no assurance classification.",[]],["filter",4,1,4,0,0,0,"filter is available, has conforms fidelity, and is eligible for assurance.",[]],["FinishReason",10,3,10,0,1,1,"FinishReason is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirebaseApp",22,12,18,0,1,1,"FirebaseApp is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirebaseAppSettings",22,12,18,0,1,1,"FirebaseAppSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirebaseAuthException",7,1,7,0,0,0,"FirebaseAuthException is available, has conforms fidelity, and is eligible for assurance.",[]],["firebaseAuthException",1,1,1,0,0,0,"firebaseAuthException is available, has conforms fidelity, and is eligible for assurance.",[]],["FirebaseError",22,12,18,0,0,0,"FirebaseError is available, has conforms fidelity, and is eligible for assurance.",[]],["firebaseJsonDatabase",15,1,13,0,0,0,"firebaseJsonDatabase is available, has conforms fidelity, and is eligible for assurance.",[]],["FirebaseMessagingError",12,5,11,0,0,0,"FirebaseMessagingError is available, has conforms fidelity, and is eligible for assurance.",[]],["FirebaseOptions",22,12,18,0,1,1,"FirebaseOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirebaseServerApp",22,12,18,1,1,1,"FirebaseServerApp is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["FirebaseServerAppSettings",22,12,18,1,1,1,"FirebaseServerAppSettings is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["FirebaseStorage",19,10,14,0,1,1,"FirebaseStorage is available, has no applicable behavior claim, and has no assurance classification.",[]],["firestore",1,1,1,0,0,0,"firestore is available, has conforms fidelity, and is eligible for assurance.",[]],["Firestore",0,0,0,0,0,0,"Firestore is available, has conforms fidelity, and is eligible for assurance.",[]],["firestore",5,1,5,0,0,0,"firestore is available, has conforms fidelity, and is eligible for assurance.",[]],["firestore.exists",6,1,6,0,5,3,"firestore.exists is available, has unsupported fidelity, and is ineligible for assurance.",[85,86,87]],["firestore.get",6,1,6,0,5,3,"firestore.get is available, has unsupported fidelity, and is ineligible for assurance.",[85,86,88]],["firestoreApp",5,1,5,0,0,0,"firestoreApp is available, has conforms fidelity, and is eligible for assurance.",[]],["firestoreAppDatabase",5,1,5,0,4,2,"firestoreAppDatabase is available, has diverged fidelity, and is qualified for assurance.",[89,90]],["firestoreDatabase",5,1,5,0,4,2,"firestoreDatabase is available, has diverged fidelity, and is qualified for assurance.",[91,92]],["FirestoreDataConverter",0,0,0,0,1,1,"FirestoreDataConverter is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirestoreError",0,0,0,0,0,0,"FirestoreError is available, has conforms fidelity, and is eligible for assurance.",[]],["FirestoreErrorCode",0,0,0,0,1,1,"FirestoreErrorCode is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirestoreLocalCache",0,0,0,0,1,1,"FirestoreLocalCache is available, has no applicable behavior claim, and has no assurance classification.",[]],["FirestoreSettings",0,0,0,0,1,1,"FirestoreSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["float",11,1,6,0,0,0,"float is available, has conforms fidelity, and is eligible for assurance.",[]],["forceLongPolling",15,8,13,0,4,2,"forceLongPolling is available, has diverged fidelity, and is qualified for assurance.",[93,76]],["forceWebSockets",15,8,13,0,4,2,"forceWebSockets is available, has diverged fidelity, and is qualified for assurance.",[94,76]],["FullMetadata",19,10,14,0,1,1,"FullMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["function",11,1,6,0,0,0,"function is available, has conforms fidelity, and is eligible for assurance.",[]],["function",6,1,6,0,0,0,"function is available, has conforms fidelity, and is eligible for assurance.",[]],["FunctionCall",10,3,10,0,1,1,"FunctionCall is available, has no applicable behavior claim, and has no assurance classification.",[]],["functionCall",10,1,10,0,0,0,"functionCall is available, has conforms fidelity, and is eligible for assurance.",[]],["FunctionCallingConfig",10,3,10,0,1,1,"FunctionCallingConfig is available, has no applicable behavior claim, and has no assurance classification.",[]],["FunctionCallingMode",10,3,10,0,1,1,"FunctionCallingMode is available, has no applicable behavior claim, and has no assurance classification.",[]],["FunctionCallPart",10,3,10,0,1,1,"FunctionCallPart is available, has no applicable behavior claim, and has no assurance classification.",[]],["functionCalls",10,1,10,0,0,0,"functionCalls is available, has conforms fidelity, and is eligible for assurance.",[]],["FunctionDeclaration",10,3,10,0,1,1,"FunctionDeclaration is available, has no applicable behavior claim, and has no assurance classification.",[]],["FunctionDeclarationsTool",10,3,10,0,1,1,"FunctionDeclarationsTool is available, has no applicable behavior claim, and has no assurance classification.",[]],["FunctionResponse",10,3,10,0,1,1,"FunctionResponse is available, has no applicable behavior claim, and has no assurance classification.",[]],["FunctionResponsePart",10,3,10,0,1,1,"FunctionResponsePart is available, has no applicable behavior claim, and has no assurance classification.",[]],["generateContent",10,1,10,0,3,3,"generateContent is available, has bug fidelity, and is ineligible for assurance.",[95,96,97,98,99,100]],["GenerateContentCandidate",10,3,10,0,1,1,"GenerateContentCandidate is available, has no applicable behavior claim, and has no assurance classification.",[]],["GenerateContentRequest",10,3,10,0,1,1,"GenerateContentRequest is available, has no applicable behavior claim, and has no assurance classification.",[]],["GenerateContentResponse",10,3,10,0,1,1,"GenerateContentResponse is available, has no applicable behavior claim, and has no assurance classification.",[]],["GenerateContentResult",10,3,10,0,1,1,"GenerateContentResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["generateContentStream",10,1,10,0,4,2,"generateContentStream is available, has diverged fidelity, and is qualified for assurance.",[101,102]],["GenerateContentStreamResult",10,3,10,0,1,1,"GenerateContentStreamResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["GenerationConfig",10,3,10,0,1,1,"GenerationConfig is available, has no applicable behavior claim, and has no assurance classification.",[]],["GenerativeContentBlob",10,3,10,0,1,1,"GenerativeContentBlob is available, has no applicable behavior claim, and has no assurance classification.",[]],["GenerativeModel",10,3,10,0,1,1,"GenerativeModel is available, has no applicable behavior claim, and has no assurance classification.",[]],["GeoPoint",0,0,0,0,0,0,"GeoPoint is available, has conforms fidelity, and is eligible for assurance.",[]],["GeoPoint",3,1,3,0,0,0,"GeoPoint is available, has conforms fidelity, and is eligible for assurance.",[]],["GeoPoint",4,1,4,0,0,0,"GeoPoint is available, has conforms fidelity, and is eligible for assurance.",[]],["geoPoint",5,1,5,0,0,0,"geoPoint is available, has conforms fidelity, and is eligible for assurance.",[]],["get",3,1,3,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["get",4,1,4,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["get",11,1,6,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["get",5,1,5,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["get",15,8,13,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["get",17,1,15,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["get",9,1,9,0,0,0,"get is available, has conforms fidelity, and is eligible for assurance.",[]],["getAdditionalUserInfo",2,2,2,0,0,0,"getAdditionalUserInfo is available, has conforms fidelity, and is eligible for assurance.",[]],["getAfter",11,1,6,0,0,0,"getAfter is available, has conforms fidelity, and is eligible for assurance.",[79]],["getAggregateFromServer",0,0,0,0,3,3,"getAggregateFromServer is available, has bug fidelity, and is ineligible for assurance.",[31,32,103,104]],["getAI",10,3,10,0,4,2,"getAI is available, has diverged fidelity, and is qualified for assurance.",[105,106,107,108]],["getAI",22,1,18,0,2,2,"getAI is available, has unverified fidelity, and is qualified for assurance.",[52,53]],["getApp",22,12,18,0,0,0,"getApp is available, has conforms fidelity, and is eligible for assurance.",[]],["getApps",22,12,18,0,0,0,"getApps is available, has conforms fidelity, and is eligible for assurance.",[]],["getAuth",22,1,18,0,0,0,"getAuth is available, has conforms fidelity, and is eligible for assurance.",[]],["getAuth",2,2,2,0,4,2,"getAuth is available, has diverged fidelity, and is qualified for assurance.",[109,110,111,112,113,114]],["getBlob",19,10,14,0,0,0,"getBlob is available, has conforms fidelity, and is eligible for assurance.",[]],["getBytes",19,10,14,0,0,0,"getBytes is available, has conforms fidelity, and is eligible for assurance.",[]],["getCountFromServer",0,0,0,0,0,0,"getCountFromServer is available, has conforms fidelity, and is eligible for assurance.",[]],["getCredential",1,1,1,0,0,0,"getCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["getData",4,1,4,0,0,0,"getData is available, has conforms fidelity, and is eligible for assurance.",[]],["getData",18,1,16,0,0,0,"getData is available, has conforms fidelity, and is eligible for assurance.",[]],["getDatabase",22,1,18,0,0,0,"getDatabase is available, has conforms fidelity, and is eligible for assurance.",[]],["getDatabase",15,8,13,0,5,3,"getDatabase is available, has unsupported fidelity, and is ineligible for assurance.",[115,116,117,118,119,120,121,122]],["getDatabaseWithUrl",15,1,13,0,0,0,"getDatabaseWithUrl is available, has conforms fidelity, and is eligible for assurance.",[]],["getDoc",0,0,0,0,3,3,"getDoc is available, has bug fidelity, and is ineligible for assurance.",[123,124,125,126]],["getDocFromCache",0,0,0,0,4,2,"getDocFromCache is available, has diverged fidelity, and is qualified for assurance.",[127,128]],["getDocFromServer",0,0,0,0,0,0,"getDocFromServer is available, has conforms fidelity, and is eligible for assurance.",[]],["getDocs",0,0,0,0,4,2,"getDocs is available, has diverged fidelity, and is qualified for assurance.",[129,130,103,104]],["getDocsFromCache",0,0,0,0,4,2,"getDocsFromCache is available, has diverged fidelity, and is qualified for assurance.",[127,128]],["getDocsFromServer",0,0,0,0,0,0,"getDocsFromServer is available, has conforms fidelity, and is eligible for assurance.",[]],["getDocument",5,1,5,0,0,0,"getDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["getDocuments",5,1,5,0,0,0,"getDocuments is available, has conforms fidelity, and is eligible for assurance.",[]],["getDownloadURL",19,10,14,0,4,2,"getDownloadURL is available, has diverged fidelity, and is qualified for assurance.",[131,132]],["getDownloadURL",16,7,14,0,4,2,"getDownloadURL is available, has diverged fidelity, and is qualified for assurance.",[133,134,83,84,135,136]],["getEffectiveLens",1,1,1,0,0,0,"getEffectiveLens is available, has conforms fidelity, and is eligible for assurance.",[]],["getFirestore",22,1,18,0,0,0,"getFirestore is available, has conforms fidelity, and is eligible for assurance.",[]],["getFirestore",0,0,0,0,4,2,"getFirestore is available, has diverged fidelity, and is qualified for assurance.",[137,138,139,140,141,142,143,144,145,146,147,148]],["getGenerativeModel",10,3,10,0,3,3,"getGenerativeModel is available, has bug fidelity, and is ineligible for assurance.",[149,150,99,100]],["getHistory",10,1,10,0,4,2,"getHistory is available, has diverged fidelity, and is qualified for assurance.",[151,152,153,154]],["getIdToken",2,2,2,0,1,1,"getIdToken is available, has no applicable behavior claim, and has no assurance classification.",[]],["getIdToken",7,1,7,0,0,0,"getIdToken is available, has conforms fidelity, and is eligible for assurance.",[]],["getIdToken",1,1,1,0,0,0,"getIdToken is available, has conforms fidelity, and is eligible for assurance.",[]],["getIdToken",8,1,8,0,0,0,"getIdToken is available, has conforms fidelity, and is eligible for assurance.",[]],["getIdTokenResult",2,2,2,0,1,1,"getIdTokenResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["getIdTokenResult",7,1,7,0,0,0,"getIdTokenResult is available, has conforms fidelity, and is eligible for assurance.",[]],["getIdTokenResult",1,1,1,0,0,0,"getIdTokenResult is available, has conforms fidelity, and is eligible for assurance.",[]],["getIdTokenResult",8,1,8,0,0,0,"getIdTokenResult is available, has conforms fidelity, and is eligible for assurance.",[]],["getImagenModel",10,3,10,2,1,1,"getImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.",[155]],["getInstance",1,1,1,0,0,0,"getInstance is available, has conforms fidelity, and is eligible for assurance.",[]],["getInstance",4,1,4,0,4,2,"getInstance is available, has diverged fidelity, and is qualified for assurance.",[156,157]],["getInstance",9,1,9,0,0,0,"getInstance is available, has conforms fidelity, and is eligible for assurance.",[]],["getInstanceUrl",9,1,9,0,4,2,"getInstanceUrl is available, has diverged fidelity, and is qualified for assurance.",[158,159]],["getLimitedUseToken",13,6,12,0,5,3,"getLimitedUseToken is available, has unsupported fidelity, and is ineligible for assurance.",[46,47,160,161]],["getLiveGenerativeModel",10,3,10,3,1,1,"getLiveGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[162]],["getMessaging",23,15,11,0,0,0,"getMessaging is available, has conforms fidelity, and is eligible for assurance.",[]],["getMessaging",12,5,11,0,0,0,"getMessaging is available, has conforms fidelity, and is eligible for assurance.",[]],["getMetadata",19,10,14,0,5,3,"getMetadata is available, has unsupported fidelity, and is ineligible for assurance.",[163,164,165,166,167,168]],["getMultiFactorResolver",2,2,2,3,1,1,"getMultiFactorResolver is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169]],["getPersistentCacheIndexManager",0,0,0,0,0,0,"getPersistentCacheIndexManager is available, has conforms fidelity, and is eligible for assurance.",[]],["getPriority",14,1,6,0,0,0,"getPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["getQuery",5,1,5,0,2,2,"getQuery is available, has unverified fidelity, and is qualified for assurance.",[170,1]],["getRedirectResult",2,2,2,0,0,0,"getRedirectResult is available, has conforms fidelity, and is eligible for assurance.",[]],["getReference",9,1,9,0,0,0,"getReference is available, has conforms fidelity, and is eligible for assurance.",[]],["getStorage",22,1,18,0,0,0,"getStorage is available, has conforms fidelity, and is eligible for assurance.",[]],["getStorage",19,10,14,0,4,2,"getStorage is available, has diverged fidelity, and is qualified for assurance.",[171,172,173,174,175,176]],["getStorageSandbox",19,1,14,0,0,0,"getStorageSandbox is available, has conforms fidelity, and is eligible for assurance.",[]],["getStream",19,10,14,3,1,1,"getStream is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[177,178,179]],["getTemplateGenerativeModel",10,3,10,3,1,1,"getTemplateGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[180]],["getTemplateImagenModel",10,3,10,2,1,1,"getTemplateImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.",[181]],["getToken",13,6,12,0,5,3,"getToken is available, has unsupported fidelity, and is ineligible for assurance.",[46,47,160,161,182,183]],["getToken",23,13,11,0,5,3,"getToken is available, has unsupported fidelity, and is ineligible for assurance.",[184,185,56,57,186,187]],["GetTokenOptions",23,15,11,0,1,1,"GetTokenOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["getTokenResult",1,1,1,0,0,0,"getTokenResult is available, has conforms fidelity, and is eligible for assurance.",[]],["GithubAuthProvider",2,2,2,0,1,1,"GithubAuthProvider is available, has no applicable behavior claim, and has no assurance classification.",[]],["goOffline",15,8,13,0,4,2,"goOffline is available, has diverged fidelity, and is qualified for assurance.",[188,189]],["goOffline",17,1,15,0,0,0,"goOffline is available, has conforms fidelity, and is eligible for assurance.",[]],["goOffline",9,1,9,0,0,0,"goOffline is available, has conforms fidelity, and is eligible for assurance.",[]],["goOffline",18,1,16,0,0,0,"goOffline is available, has conforms fidelity, and is eligible for assurance.",[]],["GoogleAIBackend",10,3,10,0,1,1,"GoogleAIBackend is available, has no applicable behavior claim, and has no assurance classification.",[]],["GoogleAuthProvider",2,2,2,0,5,3,"GoogleAuthProvider is available, has unsupported fidelity, and is ineligible for assurance.",[69,70]],["GoogleAuthProvider",7,1,7,0,0,0,"GoogleAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["GoogleAuthProvider",1,1,1,0,0,0,"GoogleAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["GoogleAuthProvider",8,1,8,0,0,0,"GoogleAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["GoogleMaps",10,3,10,0,1,1,"GoogleMaps is available, has no applicable behavior claim, and has no assurance classification.",[]],["GoogleMapsGroundingChunk",10,3,10,0,1,1,"GoogleMapsGroundingChunk is available, has no applicable behavior claim, and has no assurance classification.",[]],["GoogleMapsTool",10,3,10,0,1,1,"GoogleMapsTool is available, has no applicable behavior claim, and has no assurance classification.",[]],["GoogleSearch",10,3,10,0,1,1,"GoogleSearch is available, has no applicable behavior claim, and has no assurance classification.",[]],["GoogleSearchTool",10,3,10,0,1,1,"GoogleSearchTool is available, has no applicable behavior claim, and has no assurance classification.",[]],["goOnline",15,8,13,0,4,2,"goOnline is available, has diverged fidelity, and is qualified for assurance.",[190,189]],["goOnline",17,1,15,0,0,0,"goOnline is available, has conforms fidelity, and is eligible for assurance.",[]],["goOnline",9,1,9,0,0,0,"goOnline is available, has conforms fidelity, and is eligible for assurance.",[]],["goOnline",18,1,16,0,0,0,"goOnline is available, has conforms fidelity, and is eligible for assurance.",[]],["GroundingChunk",10,3,10,0,1,1,"GroundingChunk is available, has no applicable behavior claim, and has no assurance classification.",[]],["GroundingMetadata",10,3,10,0,1,1,"GroundingMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["GroundingSupport",10,3,10,0,1,1,"GroundingSupport is available, has no applicable behavior claim, and has no assurance classification.",[]],["HarmBlockMethod",10,3,10,0,1,1,"HarmBlockMethod is available, has no applicable behavior claim, and has no assurance classification.",[]],["HarmBlockThreshold",10,3,10,0,1,1,"HarmBlockThreshold is available, has no applicable behavior claim, and has no assurance classification.",[]],["HarmCategory",10,3,10,0,1,1,"HarmCategory is available, has no applicable behavior claim, and has no assurance classification.",[]],["HarmProbability",10,3,10,0,1,1,"HarmProbability is available, has no applicable behavior claim, and has no assurance classification.",[]],["HarmSeverity",10,3,10,0,1,1,"HarmSeverity is available, has no applicable behavior claim, and has no assurance classification.",[]],["hasAll",11,1,6,0,0,0,"hasAll is available, has conforms fidelity, and is eligible for assurance.",[]],["hasAll",6,1,6,0,0,0,"hasAll is available, has conforms fidelity, and is eligible for assurance.",[]],["hasAny",6,1,6,0,0,0,"hasAny is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.crc32",11,1,6,0,0,0,"hashing.crc32 is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.crc32",6,1,6,0,0,0,"hashing.crc32 is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.crc32c",11,1,6,0,0,0,"hashing.crc32c is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.crc32c",6,1,6,0,0,0,"hashing.crc32c is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.md5",11,1,6,0,0,0,"hashing.md5 is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.md5",6,1,6,0,0,0,"hashing.md5 is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.sha256",11,1,6,0,0,0,"hashing.sha256 is available, has conforms fidelity, and is eligible for assurance.",[]],["hashing.sha256",6,1,6,0,0,0,"hashing.sha256 is available, has conforms fidelity, and is eligible for assurance.",[]],["hasOnly",6,1,6,0,0,0,"hasOnly is available, has conforms fidelity, and is eligible for assurance.",[]],["hasPendingWrites",5,1,5,0,0,0,"hasPendingWrites is available, has conforms fidelity, and is eligible for assurance.",[]],["HybridParams",10,3,10,1,1,1,"HybridParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["idTokenChanges",7,1,7,0,0,0,"idTokenChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["idTokenChanges",8,1,8,0,0,0,"idTokenChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["idTokenFlow",1,1,1,0,0,0,"idTokenFlow is available, has conforms fidelity, and is eligible for assurance.",[]],["idTokenPublisher",8,1,8,0,0,0,"idTokenPublisher is available, has conforms fidelity, and is eligible for assurance.",[]],["idTokenRefresh",7,1,7,0,0,0,"idTokenRefresh is available, has conforms fidelity, and is eligible for assurance.",[]],["IdTokenResult",2,2,2,0,1,1,"IdTokenResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["idTokenStream",8,1,8,0,0,0,"idTokenStream is available, has conforms fidelity, and is eligible for assurance.",[]],["ImageConfig",10,3,10,0,1,1,"ImageConfig is available, has no applicable behavior claim, and has no assurance classification.",[]],["ImageConfigAspectRatio",10,3,10,0,1,1,"ImageConfigAspectRatio is available, has no applicable behavior claim, and has no assurance classification.",[]],["ImageConfigImageSize",10,3,10,0,1,1,"ImageConfigImageSize is available, has no applicable behavior claim, and has no assurance classification.",[]],["ImagenAspectRatio",10,3,10,0,1,1,"ImagenAspectRatio is available, has no applicable behavior claim, and has no assurance classification.",[]],["ImagenGCSImage",10,3,10,1,1,1,"ImagenGCSImage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ImagenGenerationConfig",10,3,10,1,1,1,"ImagenGenerationConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ImagenGenerationResponse",10,3,10,1,1,1,"ImagenGenerationResponse is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ImagenImageFormat",10,3,10,2,1,1,"ImagenImageFormat is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.",[155,4]],["ImagenInlineImage",10,3,10,1,1,1,"ImagenInlineImage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ImagenModel",10,3,10,2,1,1,"ImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.",[155,4]],["ImagenModelParams",10,3,10,1,1,1,"ImagenModelParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ImagenPersonFilterLevel",10,3,10,0,1,1,"ImagenPersonFilterLevel is available, has no applicable behavior claim, and has no assurance classification.",[]],["ImagenSafetyFilterLevel",10,3,10,0,1,1,"ImagenSafetyFilterLevel is available, has no applicable behavior claim, and has no assurance classification.",[]],["ImagenSafetySettings",10,3,10,1,1,1,"ImagenSafetySettings is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["in",6,1,6,0,4,3,"in is available, has diverged fidelity, and is ineligible for assurance.",[191,192]],["increment",0,0,0,0,0,0,"increment is available, has conforms fidelity, and is eligible for assurance.",[]],["increment",3,1,3,0,0,0,"increment is available, has conforms fidelity, and is eligible for assurance.",[]],["increment",4,1,4,0,0,0,"increment is available, has conforms fidelity, and is eligible for assurance.",[]],["increment",5,1,5,0,0,0,"increment is available, has conforms fidelity, and is eligible for assurance.",[]],["increment",15,8,13,0,4,2,"increment is available, has diverged fidelity, and is qualified for assurance.",[193,194]],["Index",0,0,0,0,1,1,"Index is available, has no applicable behavior claim, and has no assurance classification.",[]],["IndexConfiguration",0,0,0,0,1,1,"IndexConfiguration is available, has no applicable behavior claim, and has no assurance classification.",[]],["indexedDBLocalPersistence",2,2,2,0,4,2,"indexedDBLocalPersistence is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["IndexField",0,0,0,0,1,1,"IndexField is available, has no applicable behavior claim, and has no assurance classification.",[]],["indexOn",14,1,6,0,0,0,"indexOn is available, has conforms fidelity, and is eligible for assurance.",[]],["InferenceMode",10,3,10,0,1,1,"InferenceMode is available, has no applicable behavior claim, and has no assurance classification.",[]],["InferenceSource",10,3,10,0,1,1,"InferenceSource is available, has no applicable behavior claim, and has no assurance classification.",[]],["infoConnected",17,1,15,0,0,0,"infoConnected is available, has conforms fidelity, and is eligible for assurance.",[]],["infoConnected",9,1,9,0,0,0,"infoConnected is available, has conforms fidelity, and is eligible for assurance.",[]],["infoConnected",18,1,16,0,0,0,"infoConnected is available, has conforms fidelity, and is eligible for assurance.",[]],["infoRoot",17,1,15,0,4,2,"infoRoot is available, has diverged fidelity, and is qualified for assurance.",[195,196]],["infoRoot",9,1,9,0,4,2,"infoRoot is available, has diverged fidelity, and is qualified for assurance.",[197,198]],["infoRoot",18,1,16,0,4,2,"infoRoot is available, has diverged fidelity, and is qualified for assurance.",[199,200]],["initializeApp",22,12,18,0,4,2,"initializeApp is available, has diverged fidelity, and is qualified for assurance.",[201,202,50,51]],["initializeAppCheck",10,1,10,0,0,0,"initializeAppCheck is available, has conforms fidelity, and is eligible for assurance.",[]],["initializeAppCheck",13,6,12,0,2,2,"initializeAppCheck is available, has unverified fidelity, and is qualified for assurance.",[203,204]],["initializeAuth",2,2,2,0,0,0,"initializeAuth is available, has conforms fidelity, and is eligible for assurance.",[]],["initializeFirestore",0,0,0,0,4,2,"initializeFirestore is available, has diverged fidelity, and is qualified for assurance.",[205,206]],["initializeRecaptchaConfig",2,2,2,3,1,1,"initializeRecaptchaConfig is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169]],["initializeServerApp",22,12,18,3,1,1,"initializeServerApp is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[207,208,209]],["InlineDataPart",10,3,10,0,1,1,"InlineDataPart is available, has no applicable behavior claim, and has no assurance classification.",[]],["inlineDataParts",10,1,10,0,0,0,"inlineDataParts is available, has conforms fidelity, and is eligible for assurance.",[]],["inMemoryPersistence",2,2,2,0,4,2,"inMemoryPersistence is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["instance",7,1,7,0,0,0,"instance is available, has conforms fidelity, and is eligible for assurance.",[]],["instance",3,1,3,0,0,0,"instance is available, has conforms fidelity, and is eligible for assurance.",[]],["instance",17,1,15,0,0,0,"instance is available, has conforms fidelity, and is eligible for assurance.",[]],["instanceFor",7,1,7,0,0,0,"instanceFor is available, has conforms fidelity, and is eligible for assurance.",[]],["instanceFor",3,1,3,0,4,2,"instanceFor is available, has diverged fidelity, and is qualified for assurance.",[210,211]],["instanceFor",17,1,15,0,4,2,"instanceFor is available, has diverged fidelity, and is qualified for assurance.",[212,213]],["int",11,1,6,0,4,3,"int is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["int",6,1,6,0,4,3,"int is available, has diverged fidelity, and is ineligible for assurance.",[19,20,64,65]],["IntegerSchema",10,3,10,0,1,1,"IntegerSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["InternalUserDetails",7,1,7,0,0,0,"InternalUserDetails is available, has conforms fidelity, and is eligible for assurance.",[]],["intersection",11,1,6,0,0,0,"intersection is available, has conforms fidelity, and is eligible for assurance.",[]],["intersection",6,1,6,0,0,0,"intersection is available, has conforms fidelity, and is eligible for assurance.",[]],["is",6,1,6,0,4,3,"is is available, has diverged fidelity, and is ineligible for assurance.",[191,192]],["isAnonymous",7,1,7,0,0,0,"isAnonymous is available, has conforms fidelity, and is eligible for assurance.",[]],["isAnonymous",1,1,1,0,0,0,"isAnonymous is available, has conforms fidelity, and is eligible for assurance.",[]],["isAnonymous",8,1,8,0,0,0,"isAnonymous is available, has conforms fidelity, and is eligible for assurance.",[]],["isEmailVerified",1,1,1,0,0,0,"isEmailVerified is available, has conforms fidelity, and is eligible for assurance.",[]],["isEmailVerified",8,1,8,0,0,0,"isEmailVerified is available, has conforms fidelity, and is eligible for assurance.",[]],["isEmpty",5,1,5,0,0,0,"isEmpty is available, has conforms fidelity, and is eligible for assurance.",[]],["isFromCache",5,1,5,0,0,0,"isFromCache is available, has conforms fidelity, and is eligible for assurance.",[]],["isNull",3,1,3,0,0,0,"isNull is available, has conforms fidelity, and is eligible for assurance.",[]],["isSignInWithEmailLink",2,2,2,0,0,0,"isSignInWithEmailLink is available, has conforms fidelity, and is eligible for assurance.",[]],["isSupported",23,15,11,0,0,0,"isSupported is available, has conforms fidelity, and is eligible for assurance.",[]],["IteratedDataSnapshot",15,8,13,0,1,1,"IteratedDataSnapshot is available, has no applicable behavior claim, and has no assurance classification.",[]],["key",17,1,15,0,0,0,"key is available, has conforms fidelity, and is eligible for assurance.",[]],["key",9,1,9,0,0,0,"key is available, has conforms fidelity, and is eligible for assurance.",[]],["key",18,1,16,0,0,0,"key is available, has conforms fidelity, and is eligible for assurance.",[]],["keys",11,1,6,0,0,0,"keys is available, has conforms fidelity, and is eligible for assurance.",[]],["Language",10,3,10,0,1,1,"Language is available, has no applicable behavior claim, and has no assurance classification.",[]],["LanguageModelCreateCoreOptions",10,3,10,1,1,1,"LanguageModelCreateCoreOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelCreateOptions",10,3,10,1,1,1,"LanguageModelCreateOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelExpected",10,3,10,1,1,1,"LanguageModelExpected is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelMessage",10,3,10,1,1,1,"LanguageModelMessage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelMessageContent",10,3,10,1,1,1,"LanguageModelMessageContent is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelMessageContentValue",10,3,10,1,1,1,"LanguageModelMessageContentValue is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelMessageRole",10,3,10,1,1,1,"LanguageModelMessageRole is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelMessageType",10,3,10,1,1,1,"LanguageModelMessageType is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LanguageModelPromptOptions",10,3,10,1,1,1,"LanguageModelPromptOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LatLng",10,3,10,0,1,1,"LatLng is available, has no applicable behavior claim, and has no assurance classification.",[]],["latlng",11,4,6,0,0,0,"latlng is available, has conforms fidelity, and is eligible for assurance.",[]],["latlng.distance",11,1,6,0,0,0,"latlng.distance is available, has conforms fidelity, and is eligible for assurance.",[]],["latlng.distance",6,1,6,0,2,2,"latlng.distance is available, has unverified fidelity, and is qualified for assurance.",[]],["latlng.latitude",11,1,6,0,0,0,"latlng.latitude is available, has conforms fidelity, and is eligible for assurance.",[]],["latlng.latitude",6,1,6,0,2,2,"latlng.latitude is available, has unverified fidelity, and is qualified for assurance.",[]],["latlng.longitude",11,1,6,0,0,0,"latlng.longitude is available, has conforms fidelity, and is eligible for assurance.",[]],["latlng.longitude",6,1,6,0,2,2,"latlng.longitude is available, has unverified fidelity, and is qualified for assurance.",[]],["latlng.value",11,1,6,0,0,0,"latlng.value is available, has conforms fidelity, and is eligible for assurance.",[]],["latlng.value",6,1,6,0,0,0,"latlng.value is available, has conforms fidelity, and is eligible for assurance.",[]],["let",11,1,6,0,0,0,"let is available, has conforms fidelity, and is eligible for assurance.",[]],["let",6,1,6,0,0,0,"let is available, has conforms fidelity, and is eligible for assurance.",[]],["lexicalScope",6,1,6,0,0,0,"lexicalScope is available, has conforms fidelity, and is eligible for assurance.",[]],["LightSettings",12,5,11,0,0,0,"LightSettings is available, has conforms fidelity, and is eligible for assurance.",[]],["limit",0,0,0,0,0,0,"limit is available, has conforms fidelity, and is eligible for assurance.",[]],["limit",3,1,3,0,0,0,"limit is available, has conforms fidelity, and is eligible for assurance.",[]],["limit",4,1,4,0,0,0,"limit is available, has conforms fidelity, and is eligible for assurance.",[]],["limitTo",5,1,5,0,0,0,"limitTo is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToFirst",15,8,13,0,0,0,"limitToFirst is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToFirst",17,1,15,0,0,0,"limitToFirst is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToFirst",9,1,9,0,0,0,"limitToFirst is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",0,0,0,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",3,1,3,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",4,1,4,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",5,1,5,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",15,8,13,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",17,1,15,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["limitToLast",9,1,9,0,0,0,"limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["linkWithCredential",2,2,2,0,0,0,"linkWithCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["linkWithPhoneNumber",2,2,2,3,1,1,"linkWithPhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169]],["linkWithPopup",2,2,2,0,0,0,"linkWithPopup is available, has conforms fidelity, and is eligible for assurance.",[]],["linkWithRedirect",2,2,2,0,0,0,"linkWithRedirect is available, has conforms fidelity, and is eligible for assurance.",[]],["List",11,1,6,0,0,0,"List is available, has conforms fidelity, and is eligible for assurance.",[]],["list",19,10,14,3,1,1,"list is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[214,215,216]],["list.concat",11,1,6,0,0,0,"list.concat is available, has conforms fidelity, and is eligible for assurance.",[]],["list.concat",6,1,6,0,0,0,"list.concat is available, has conforms fidelity, and is eligible for assurance.",[217]],["list.hasAll",11,1,6,0,0,0,"list.hasAll is available, has conforms fidelity, and is eligible for assurance.",[]],["list.hasAny",11,1,6,0,0,0,"list.hasAny is available, has conforms fidelity, and is eligible for assurance.",[]],["list.hasAny",6,1,6,0,0,0,"list.hasAny is available, has conforms fidelity, and is eligible for assurance.",[218]],["list.hasOnly",11,1,6,0,0,0,"list.hasOnly is available, has conforms fidelity, and is eligible for assurance.",[]],["list.hasOnly",6,1,6,0,0,0,"list.hasOnly is available, has conforms fidelity, and is eligible for assurance.",[219]],["list.join",11,1,6,0,0,0,"list.join is available, has conforms fidelity, and is eligible for assurance.",[]],["list.join",6,1,6,0,0,0,"list.join is available, has conforms fidelity, and is eligible for assurance.",[220]],["list.removeAll",11,1,6,0,0,0,"list.removeAll is available, has conforms fidelity, and is eligible for assurance.",[]],["list.removeAll",6,1,6,0,0,0,"list.removeAll is available, has conforms fidelity, and is eligible for assurance.",[221]],["list.size",11,1,6,0,0,0,"list.size is available, has conforms fidelity, and is eligible for assurance.",[]],["list.toSet",11,1,6,0,0,0,"list.toSet is available, has conforms fidelity, and is eligible for assurance.",[]],["list.toSet",6,1,6,0,0,0,"list.toSet is available, has conforms fidelity, and is eligible for assurance.",[222]],["listAll",19,10,14,0,0,0,"listAll is available, has conforms fidelity, and is eligible for assurance.",[]],["listenCancel",17,1,15,0,0,0,"listenCancel is available, has conforms fidelity, and is eligible for assurance.",[]],["ListenOptions",15,8,13,0,1,1,"ListenOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["ListenSource",0,0,0,0,1,1,"ListenSource is available, has no applicable behavior claim, and has no assurance classification.",[]],["ListOptions",19,10,14,1,1,1,"ListOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ListResult",19,10,14,0,1,1,"ListResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["LiveGenerationConfig",10,3,10,1,1,1,"LiveGenerationConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LiveGenerativeModel",10,3,10,3,1,1,"LiveGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[162,4]],["LiveModelParams",10,3,10,1,1,1,"LiveModelParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LiveResponseType",10,3,10,0,1,1,"LiveResponseType is available, has no applicable behavior claim, and has no assurance classification.",[]],["LiveServerContent",10,3,10,1,1,1,"LiveServerContent is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LiveServerGoingAwayNotice",10,3,10,1,1,1,"LiveServerGoingAwayNotice is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LiveServerToolCall",10,3,10,1,1,1,"LiveServerToolCall is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LiveServerToolCallCancellation",10,3,10,1,1,1,"LiveServerToolCallCancellation is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["LiveSession",10,3,10,3,1,1,"LiveSession is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[162,4]],["LiveSessionResumptionUpdate",10,3,10,1,1,1,"LiveSessionResumptionUpdate is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["loadBundle",0,0,0,0,0,0,"loadBundle is available, has conforms fidelity, and is eligible for assurance.",[]],["loadBundle",5,1,5,0,2,2,"loadBundle is available, has unverified fidelity, and is qualified for assurance.",[223,1]],["LoadBundleTask",0,0,0,0,0,0,"LoadBundleTask is available, has conforms fidelity, and is eligible for assurance.",[]],["LoadBundleTaskProgress",0,0,0,0,1,1,"LoadBundleTaskProgress is available, has no applicable behavior claim, and has no assurance classification.",[]],["LogLevel",0,0,0,0,1,1,"LogLevel is available, has no applicable behavior claim, and has no assurance classification.",[]],["lower",11,1,6,0,0,0,"lower is available, has conforms fidelity, and is eligible for assurance.",[]],["lower",6,1,6,0,0,0,"lower is available, has conforms fidelity, and is eligible for assurance.",[]],["map.diff",11,1,6,0,0,0,"map.diff is available, has conforms fidelity, and is eligible for assurance.",[]],["map.diff",6,1,6,0,0,0,"map.diff is available, has conforms fidelity, and is eligible for assurance.",[]],["Map.get",11,1,6,0,0,0,"Map.get is available, has conforms fidelity, and is eligible for assurance.",[]],["map.get",11,1,6,0,0,0,"map.get is available, has conforms fidelity, and is eligible for assurance.",[]],["map.get",6,1,6,0,0,0,"map.get is available, has conforms fidelity, and is eligible for assurance.",[224]],["map.hasAll",11,1,6,0,0,0,"map.hasAll is available, has conforms fidelity, and is eligible for assurance.",[]],["Map.hasAny",11,1,6,0,0,0,"Map.hasAny is available, has conforms fidelity, and is eligible for assurance.",[]],["map.hasAny",11,1,6,0,0,0,"map.hasAny is available, has conforms fidelity, and is eligible for assurance.",[]],["Map.hasOnly",11,1,6,0,0,0,"Map.hasOnly is available, has conforms fidelity, and is eligible for assurance.",[]],["map.hasOnly",11,1,6,0,0,0,"map.hasOnly is available, has conforms fidelity, and is eligible for assurance.",[]],["map.keys",11,1,6,0,0,0,"map.keys is available, has conforms fidelity, and is eligible for assurance.",[]],["map.keys",6,1,6,0,0,0,"map.keys is available, has conforms fidelity, and is eligible for assurance.",[225]],["map.size",11,1,6,0,0,0,"map.size is available, has conforms fidelity, and is eligible for assurance.",[]],["Map.values",11,1,6,0,0,0,"Map.values is available, has conforms fidelity, and is eligible for assurance.",[]],["map.values",11,1,6,0,0,0,"map.values is available, has conforms fidelity, and is eligible for assurance.",[]],["map.values",6,1,6,0,0,0,"map.values is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.addedKeys",11,1,6,0,0,0,"mapdiff.addedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.addedKeys",6,1,6,0,0,0,"mapdiff.addedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.affectedKeys",11,1,6,0,0,0,"mapdiff.affectedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.affectedKeys",6,1,6,0,0,0,"mapdiff.affectedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.changedKeys",11,1,6,0,0,0,"mapdiff.changedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.changedKeys",6,1,6,0,0,0,"mapdiff.changedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.removedKeys",11,1,6,0,0,0,"mapdiff.removedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.removedKeys",6,1,6,0,0,0,"mapdiff.removedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.unchangedKeys",11,1,6,0,0,0,"mapdiff.unchangedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapdiff.unchangedKeys",6,1,6,0,0,0,"mapdiff.unchangedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["mapMembership",11,1,6,0,0,0,"mapMembership is available, has conforms fidelity, and is eligible for assurance.",[]],["match",11,1,6,0,0,0,"match is available, has conforms fidelity, and is eligible for assurance.",[]],["match",6,1,6,0,0,0,"match is available, has conforms fidelity, and is eligible for assurance.",[]],["matches",11,1,6,0,4,3,"matches is available, has diverged fidelity, and is ineligible for assurance.",[226,227]],["matches",14,1,6,0,0,0,"matches is available, has conforms fidelity, and is eligible for assurance.",[]],["matches",6,1,6,0,4,3,"matches is available, has diverged fidelity, and is ineligible for assurance.",[228,229]],["math",11,1,6,0,0,0,"math is available, has conforms fidelity, and is eligible for assurance.",[]],["math.abs",11,1,6,0,0,0,"math.abs is available, has conforms fidelity, and is eligible for assurance.",[]],["math.abs",6,1,6,0,0,0,"math.abs is available, has conforms fidelity, and is eligible for assurance.",[230]],["math.ceil",11,1,6,0,0,0,"math.ceil is available, has conforms fidelity, and is eligible for assurance.",[]],["math.ceil",6,1,6,0,0,0,"math.ceil is available, has conforms fidelity, and is eligible for assurance.",[231]],["math.floor",11,1,6,0,0,0,"math.floor is available, has conforms fidelity, and is eligible for assurance.",[]],["math.floor",6,1,6,0,0,0,"math.floor is available, has conforms fidelity, and is eligible for assurance.",[232]],["math.isInfinite",11,1,6,0,0,0,"math.isInfinite is available, has conforms fidelity, and is eligible for assurance.",[]],["math.isInfinite",6,1,6,0,4,3,"math.isInfinite is available, has diverged fidelity, and is ineligible for assurance.",[233]],["math.isNaN",11,1,6,0,0,0,"math.isNaN is available, has conforms fidelity, and is eligible for assurance.",[]],["math.isNaN",6,1,6,0,0,0,"math.isNaN is available, has conforms fidelity, and is eligible for assurance.",[234]],["math.pow",11,1,6,0,0,0,"math.pow is available, has conforms fidelity, and is eligible for assurance.",[]],["math.pow",6,1,6,0,0,0,"math.pow is available, has conforms fidelity, and is eligible for assurance.",[235]],["math.round",11,1,6,0,0,0,"math.round is available, has conforms fidelity, and is eligible for assurance.",[]],["math.round",6,1,6,0,0,0,"math.round is available, has conforms fidelity, and is eligible for assurance.",[236]],["math.sqrt",11,1,6,0,0,0,"math.sqrt is available, has conforms fidelity, and is eligible for assurance.",[]],["math.sqrt",6,1,6,0,0,0,"math.sqrt is available, has conforms fidelity, and is eligible for assurance.",[237]],["MemoryCacheSettings",0,0,0,0,1,1,"MemoryCacheSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["memoryEagerGarbageCollector",0,0,0,0,4,2,"memoryEagerGarbageCollector is available, has diverged fidelity, and is qualified for assurance.",[238,206]],["MemoryEagerGarbageCollector",0,0,0,0,1,1,"MemoryEagerGarbageCollector is available, has no applicable behavior claim, and has no assurance classification.",[]],["MemoryGarbageCollector",0,0,0,0,1,1,"MemoryGarbageCollector is available, has no applicable behavior claim, and has no assurance classification.",[]],["memoryLocalCache",0,0,0,0,4,2,"memoryLocalCache is available, has diverged fidelity, and is qualified for assurance.",[238,206]],["MemoryLocalCache",0,0,0,0,1,1,"MemoryLocalCache is available, has no applicable behavior claim, and has no assurance classification.",[]],["memoryLruGarbageCollector",0,0,0,0,4,2,"memoryLruGarbageCollector is available, has diverged fidelity, and is qualified for assurance.",[238,206]],["MemoryLruGarbageCollector",0,0,0,0,1,1,"MemoryLruGarbageCollector is available, has no applicable behavior claim, and has no assurance classification.",[]],["merge",3,1,3,0,0,0,"merge is available, has conforms fidelity, and is eligible for assurance.",[]],["merge",4,1,4,0,0,0,"merge is available, has conforms fidelity, and is eligible for assurance.",[]],["Message",12,5,11,0,0,0,"Message is available, has conforms fidelity, and is eligible for assurance.",[]],["MessagePayload",23,15,11,0,0,0,"MessagePayload is available, has conforms fidelity, and is eligible for assurance.",[]],["Messaging",23,15,11,0,4,2,"Messaging is available, has diverged fidelity, and is qualified for assurance.",[239,106,240,241]],["Messaging",12,5,11,0,0,0,"Messaging is available, has conforms fidelity, and is eligible for assurance.",[]],["messaging",12,5,11,0,0,0,"messaging is available, has conforms fidelity, and is eligible for assurance.",[]],["MessagingClientErrorCode",12,5,11,0,0,0,"MessagingClientErrorCode is available, has conforms fidelity, and is eligible for assurance.",[]],["MessagingOptions",12,5,11,0,0,0,"MessagingOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["MessagingPayload",12,5,11,0,0,0,"MessagingPayload is available, has conforms fidelity, and is eligible for assurance.",[]],["MessagingTopicManagementResponse",12,5,11,0,0,0,"MessagingTopicManagementResponse is available, has conforms fidelity, and is eligible for assurance.",[]],["metadata",7,1,7,0,0,0,"metadata is available, has conforms fidelity, and is eligible for assurance.",[]],["metadata",3,1,3,0,0,0,"metadata is available, has conforms fidelity, and is eligible for assurance.",[]],["metadata",4,1,4,0,0,0,"metadata is available, has conforms fidelity, and is eligible for assurance.",[]],["missingFieldAccess",11,1,6,0,0,0,"missingFieldAccess is available, has conforms fidelity, and is eligible for assurance.",[]],["Modality",10,3,10,0,1,1,"Modality is available, has no applicable behavior claim, and has no assurance classification.",[]],["ModalityTokenCount",10,3,10,0,1,1,"ModalityTokenCount is available, has no applicable behavior claim, and has no assurance classification.",[]],["ModelParams",10,3,10,0,1,1,"ModelParams is available, has no applicable behavior claim, and has no assurance classification.",[]],["multiFactor",2,2,2,3,1,1,"multiFactor is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169]],["multiFactor",7,1,7,0,0,0,"multiFactor is available, has conforms fidelity, and is eligible for assurance.",[]],["MultiFactorAssertion",2,2,2,1,1,1,"MultiFactorAssertion is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["MultiFactorError",2,2,2,1,1,1,"MultiFactorError is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["MultiFactorInfo",2,2,2,1,1,1,"MultiFactorInfo is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["MultiFactorResolver",2,2,2,1,1,1,"MultiFactorResolver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["MultiFactorSession",2,2,2,1,1,1,"MultiFactorSession is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["MultiFactorUser",2,2,2,1,1,1,"MultiFactorUser is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["namedQuery",0,0,0,0,0,0,"namedQuery is available, has conforms fidelity, and is eligible for assurance.",[]],["NestedUpdateFields",0,0,0,0,1,1,"NestedUpdateFields is available, has no applicable behavior claim, and has no assurance classification.",[]],["newData",14,1,6,0,0,0,"newData is available, has conforms fidelity, and is eligible for assurance.",[]],["newData-in-read",14,1,6,0,4,3,"newData-in-read is available, has diverged fidelity, and is ineligible for assurance.",[]],["NextFn",2,2,2,1,1,1,"NextFn is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["NextFn",23,15,11,0,1,1,"NextFn is available, has no applicable behavior claim, and has no assurance classification.",[]],["NextOrObserver",2,2,2,1,1,1,"NextOrObserver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["Notification",12,5,11,0,0,0,"Notification is available, has conforms fidelity, and is eligible for assurance.",[]],["NotificationMessagePayload",12,5,11,0,0,0,"NotificationMessagePayload is available, has conforms fidelity, and is eligible for assurance.",[]],["NotificationPayload",23,15,11,0,1,1,"NotificationPayload is available, has no applicable behavior claim, and has no assurance classification.",[]],["now",14,1,6,0,0,0,"now is available, has conforms fidelity, and is eligible for assurance.",[]],["NumberSchema",10,3,10,0,1,1,"NumberSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["OAuthCredential",2,2,2,0,0,0,"OAuthCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["OAuthCredentialOptions",2,2,2,1,1,1,"OAuthCredentialOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["OAuthProvider",2,2,2,0,1,1,"OAuthProvider is available, has no applicable behavior claim, and has no assurance classification.",[]],["OAuthProvider",7,1,7,0,0,0,"OAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["OAuthProvider",1,1,1,0,0,0,"OAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["OAuthProvider",8,1,8,0,0,0,"OAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["ObjectSchema",10,3,10,0,1,1,"ObjectSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["ObjectSchemaRequest",10,3,10,0,1,1,"ObjectSchemaRequest is available, has no applicable behavior claim, and has no assurance classification.",[]],["observeChildAdded",18,1,16,0,0,0,"observeChildAdded is available, has conforms fidelity, and is eligible for assurance.",[]],["observeChildChanged",18,1,16,0,0,0,"observeChildChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["observeChildRemoved",18,1,16,0,0,0,"observeChildRemoved is available, has conforms fidelity, and is eligible for assurance.",[]],["Observer",23,15,11,0,1,1,"Observer is available, has no applicable behavior claim, and has no assurance classification.",[]],["observeValue",18,1,16,0,0,0,"observeValue is available, has conforms fidelity, and is eligible for assurance.",[]],["off",15,8,13,0,0,0,"off is available, has conforms fidelity, and is eligible for assurance.",[]],["onAuthStateChanged",2,2,2,0,0,0,"onAuthStateChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["onAuthStateChanged",8,1,8,0,0,0,"onAuthStateChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["onBackgroundMessage",23,14,11,0,2,2,"onBackgroundMessage is available, has unverified fidelity, and is qualified for assurance.",[242,243]],["onChildAdded",15,8,13,0,3,3,"onChildAdded is available, has bug fidelity, and is ineligible for assurance.",[244,245]],["onChildAdded",17,1,15,0,0,0,"onChildAdded is available, has conforms fidelity, and is eligible for assurance.",[]],["onChildAdded",9,1,9,0,0,0,"onChildAdded is available, has conforms fidelity, and is eligible for assurance.",[]],["onChildChanged",15,8,13,0,3,3,"onChildChanged is available, has bug fidelity, and is ineligible for assurance.",[244,245,246,247,248,249]],["onChildChanged",17,1,15,0,0,0,"onChildChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["onChildChanged",9,1,9,0,0,0,"onChildChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["onChildMoved",15,8,13,0,3,3,"onChildMoved is available, has bug fidelity, and is ineligible for assurance.",[244,245,250,249]],["onChildRemoved",15,8,13,0,3,3,"onChildRemoved is available, has bug fidelity, and is ineligible for assurance.",[244,245]],["onChildRemoved",17,1,15,0,0,0,"onChildRemoved is available, has conforms fidelity, and is eligible for assurance.",[]],["onChildRemoved",9,1,9,0,0,0,"onChildRemoved is available, has conforms fidelity, and is eligible for assurance.",[]],["OnDeviceParams",10,3,10,1,1,1,"OnDeviceParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["OnDisconnect",15,8,13,0,1,1,"OnDisconnect is available, has no applicable behavior claim, and has no assurance classification.",[]],["onDisconnect",15,8,13,0,4,2,"onDisconnect is available, has diverged fidelity, and is qualified for assurance.",[251,252]],["onDisconnectCancel",17,1,15,0,0,0,"onDisconnectCancel is available, has conforms fidelity, and is eligible for assurance.",[]],["onDisconnectCancel",9,1,9,0,0,0,"onDisconnectCancel is available, has conforms fidelity, and is eligible for assurance.",[]],["onDisconnectCancel",18,1,16,0,0,0,"onDisconnectCancel is available, has conforms fidelity, and is eligible for assurance.",[]],["onDisconnectSetRemove",17,1,15,0,0,0,"onDisconnectSetRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["onDisconnectSetRemove",9,1,9,0,0,0,"onDisconnectSetRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["onDisconnectSetRemove",18,1,16,0,0,0,"onDisconnectSetRemove is available, has conforms fidelity, and is eligible for assurance.",[]],["onIdTokenChanged",2,2,2,0,0,0,"onIdTokenChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["onIdTokenChanged",8,1,8,0,0,0,"onIdTokenChanged is available, has conforms fidelity, and is eligible for assurance.",[]],["onLog",22,12,18,0,0,0,"onLog is available, has conforms fidelity, and is eligible for assurance.",[]],["onMessage",23,13,11,0,2,2,"onMessage is available, has unverified fidelity, and is qualified for assurance.",[242,243,184,185]],["onSnapshot",0,0,0,0,3,3,"onSnapshot is available, has bug fidelity, and is ineligible for assurance.",[253,254,255,256,257,258,259,260]],["onSnapshotResume",0,0,0,0,0,0,"onSnapshotResume is available, has conforms fidelity, and is eligible for assurance.",[]],["onSnapshotsInSync",0,0,0,0,0,0,"onSnapshotsInSync is available, has conforms fidelity, and is eligible for assurance.",[]],["onTokenChanged",13,6,12,0,4,2,"onTokenChanged is available, has diverged fidelity, and is qualified for assurance.",[261,262]],["onValue",15,8,13,0,3,3,"onValue is available, has bug fidelity, and is ineligible for assurance.",[244,245,248,249,263,264]],["onValue",17,1,15,0,0,0,"onValue is available, has conforms fidelity, and is eligible for assurance.",[]],["onValueCreated",21,1,17,0,2,2,"onValueCreated is available, has unverified fidelity, and is qualified for assurance.",[265,266]],["OperationType",2,2,2,0,0,0,"OperationType is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.add",11,1,6,0,4,3,"operator.add is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["operator.add",14,1,6,0,0,0,"operator.add is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.add",6,1,6,0,5,3,"operator.add is available, has unsupported fidelity, and is ineligible for assurance.",[19,20,64,65]],["operator.and",11,1,6,0,0,0,"operator.and is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.and",14,1,6,0,0,0,"operator.and is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.and",6,1,6,0,5,3,"operator.and is available, has unsupported fidelity, and is ineligible for assurance.",[77,78]],["operator.div",11,1,6,0,4,3,"operator.div is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["operator.div",14,1,6,0,0,0,"operator.div is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.div",6,1,6,0,5,3,"operator.div is available, has unsupported fidelity, and is ineligible for assurance.",[64,65]],["operator.dynamic-operand",14,1,6,0,0,0,"operator.dynamic-operand is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.eq",11,1,6,0,0,0,"operator.eq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.eq",6,1,6,0,0,0,"operator.eq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.gt",11,1,6,0,0,0,"operator.gt is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.gt",14,1,6,0,0,0,"operator.gt is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.gt",6,1,6,0,0,0,"operator.gt is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.gte",11,1,6,0,0,0,"operator.gte is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.gte",14,1,6,0,0,0,"operator.gte is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.gte",6,1,6,0,0,0,"operator.gte is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.in",11,1,6,0,0,0,"operator.in is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.in",6,1,6,0,5,3,"operator.in is available, has unsupported fidelity, and is ineligible for assurance.",[191,192]],["operator.index",11,1,6,0,0,0,"operator.index is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.index",14,1,6,0,0,0,"operator.index is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.index",6,1,6,0,0,0,"operator.index is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.is",11,1,6,0,0,0,"operator.is is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.is",6,1,6,0,5,3,"operator.is is available, has unsupported fidelity, and is ineligible for assurance.",[191,192]],["operator.looseEq",14,1,6,0,0,0,"operator.looseEq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.looseNeq",14,1,6,0,0,0,"operator.looseNeq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.lt",11,1,6,0,0,0,"operator.lt is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.lt",14,1,6,0,0,0,"operator.lt is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.lt",6,1,6,0,0,0,"operator.lt is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.lte",11,1,6,0,0,0,"operator.lte is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.lte",14,1,6,0,0,0,"operator.lte is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.lte",6,1,6,0,0,0,"operator.lte is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.member",11,1,6,0,0,0,"operator.member is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.member",14,1,6,0,0,0,"operator.member is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.member",6,1,6,0,0,0,"operator.member is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.member.auth-unknown-property",14,1,6,0,0,0,"operator.member.auth-unknown-property is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.member.snapshot-property",14,1,6,0,4,3,"operator.member.snapshot-property is available, has diverged fidelity, and is ineligible for assurance.",[]],["operator.mod",11,1,6,0,0,0,"operator.mod is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.mod",14,1,6,0,0,0,"operator.mod is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.mod",6,1,6,0,0,0,"operator.mod is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.mul",11,1,6,0,0,0,"operator.mul is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.mul",14,1,6,0,0,0,"operator.mul is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.mul",6,1,6,0,0,0,"operator.mul is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.neg",14,1,6,0,0,0,"operator.neg is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.neq",11,1,6,0,0,0,"operator.neq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.neq",6,1,6,0,0,0,"operator.neq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.not",11,1,6,0,0,0,"operator.not is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.not",14,1,6,0,0,0,"operator.not is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.not",6,1,6,0,0,0,"operator.not is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.or",11,1,6,0,0,0,"operator.or is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.or",14,1,6,0,0,0,"operator.or is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.or",6,1,6,0,5,3,"operator.or is available, has unsupported fidelity, and is ineligible for assurance.",[77,78]],["operator.slice",11,1,6,0,0,0,"operator.slice is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.slice",6,1,6,0,0,0,"operator.slice is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.snapshot-operand",14,1,6,0,4,3,"operator.snapshot-operand is available, has diverged fidelity, and is ineligible for assurance.",[]],["operator.strictEq",14,1,6,0,0,0,"operator.strictEq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.strictNeq",14,1,6,0,0,0,"operator.strictNeq is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.sub",11,1,6,0,4,3,"operator.sub is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["operator.sub",14,1,6,0,0,0,"operator.sub is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.sub",6,1,6,0,5,3,"operator.sub is available, has unsupported fidelity, and is ineligible for assurance.",[19,20]],["operator.ternary",11,1,6,0,0,0,"operator.ternary is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.ternary",14,1,6,0,0,0,"operator.ternary is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.ternary",6,1,6,0,0,0,"operator.ternary is available, has conforms fidelity, and is eligible for assurance.",[]],["operator.type-mismatch",14,1,6,0,4,3,"operator.type-mismatch is available, has diverged fidelity, and is ineligible for assurance.",[]],["operator.unary-minus",11,1,6,0,4,3,"operator.unary-minus is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["operator.unary-minus",6,1,6,0,5,3,"operator.unary-minus is available, has unsupported fidelity, and is ineligible for assurance.",[64,65]],["or",0,0,0,0,3,3,"or is available, has bug fidelity, and is ineligible for assurance.",[267,268]],["orderBy",0,0,0,0,0,0,"orderBy is available, has conforms fidelity, and is eligible for assurance.",[]],["orderBy",3,1,3,0,0,0,"orderBy is available, has conforms fidelity, and is eligible for assurance.",[]],["orderBy",4,1,4,0,0,0,"orderBy is available, has conforms fidelity, and is eligible for assurance.",[]],["orderBy",5,1,5,0,0,0,"orderBy is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByChild",15,8,13,0,0,0,"orderByChild is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByChild",17,1,15,0,0,0,"orderByChild is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByChild",9,1,9,0,0,0,"orderByChild is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByDescending",5,1,5,0,0,0,"orderByDescending is available, has conforms fidelity, and is eligible for assurance.",[]],["OrderByDirection",0,0,0,0,1,1,"OrderByDirection is available, has no applicable behavior claim, and has no assurance classification.",[]],["orderByKey",15,8,13,0,0,0,"orderByKey is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByKey",17,1,15,0,0,0,"orderByKey is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByKey",9,1,9,0,0,0,"orderByKey is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByPriority",15,8,13,0,0,0,"orderByPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByValue",15,8,13,0,0,0,"orderByValue is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByValue",17,1,15,0,0,0,"orderByValue is available, has conforms fidelity, and is eligible for assurance.",[]],["orderByValue",9,1,9,0,0,0,"orderByValue is available, has conforms fidelity, and is eligible for assurance.",[]],["Outcome",10,3,10,0,1,1,"Outcome is available, has no applicable behavior claim, and has no assurance classification.",[]],["parent",5,1,5,0,0,0,"parent is available, has conforms fidelity, and is eligible for assurance.",[]],["parent",15,1,13,0,0,0,"parent is available, has conforms fidelity, and is eligible for assurance.",[]],["parent",17,1,15,0,0,0,"parent is available, has conforms fidelity, and is eligible for assurance.",[]],["parent",9,1,9,0,0,0,"parent is available, has conforms fidelity, and is eligible for assurance.",[]],["parent",18,1,16,0,0,0,"parent is available, has conforms fidelity, and is eligible for assurance.",[]],["parseActionCodeURL",2,2,2,0,0,0,"parseActionCodeURL is available, has conforms fidelity, and is eligible for assurance.",[]],["ParsedToken",2,2,2,1,1,1,"ParsedToken is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["parseLink",2,1,2,0,0,0,"parseLink is available, has conforms fidelity, and is eligible for assurance.",[]],["parseStorageRules",6,10,6,0,4,3,"parseStorageRules is available, has diverged fidelity, and is ineligible for assurance.",[269,270,271,272]],["Part",10,3,10,0,1,1,"Part is available, has no applicable behavior claim, and has no assurance classification.",[]],["PartialObserver",13,6,12,0,1,1,"PartialObserver is available, has no applicable behavior claim, and has no assurance classification.",[]],["PartialWithFieldValue",0,0,0,0,1,1,"PartialWithFieldValue is available, has no applicable behavior claim, and has no assurance classification.",[]],["PasswordPolicy",2,2,2,0,1,1,"PasswordPolicy is available, has no applicable behavior claim, and has no assurance classification.",[]],["PasswordValidationStatus",2,2,2,0,1,1,"PasswordValidationStatus is available, has no applicable behavior claim, and has no assurance classification.",[]],["path",5,1,5,0,0,0,"path is available, has conforms fidelity, and is eligible for assurance.",[]],["path",17,1,15,0,0,0,"path is available, has conforms fidelity, and is eligible for assurance.",[]],["path",9,1,9,0,0,0,"path is available, has conforms fidelity, and is eligible for assurance.",[]],["path",18,1,16,0,0,0,"path is available, has conforms fidelity, and is eligible for assurance.",[]],["path.bind",11,1,6,0,0,0,"path.bind is available, has conforms fidelity, and is eligible for assurance.",[]],["path.bind",6,1,6,0,2,2,"path.bind is available, has unverified fidelity, and is qualified for assurance.",[]],["pathParameters",6,1,6,0,0,0,"pathParameters is available, has conforms fidelity, and is eligible for assurance.",[]],["path-variable",11,1,6,0,0,0,"path-variable is available, has conforms fidelity, and is eligible for assurance.",[]],["path-variable",14,1,6,0,0,0,"path-variable is available, has conforms fidelity, and is eligible for assurance.",[]],["path-variable",6,1,6,0,0,0,"path-variable is available, has conforms fidelity, and is eligible for assurance.",[]],["pathVariables",14,1,6,0,0,0,"pathVariables is available, has conforms fidelity, and is eligible for assurance.",[]],["Persistence",2,2,2,0,1,1,"Persistence is available, has no applicable behavior claim, and has no assurance classification.",[]],["PersistenceSettings",0,0,0,0,1,1,"PersistenceSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["PersistentCacheIndexManager",0,0,0,0,0,0,"PersistentCacheIndexManager is available, has conforms fidelity, and is eligible for assurance.",[]],["PersistentCacheSettings",0,0,0,0,1,1,"PersistentCacheSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["persistentLocalCache",0,0,0,0,4,2,"persistentLocalCache is available, has diverged fidelity, and is qualified for assurance.",[238,206]],["PersistentLocalCache",0,0,0,0,1,1,"PersistentLocalCache is available, has no applicable behavior claim, and has no assurance classification.",[]],["persistentMultipleTabManager",0,0,0,0,4,2,"persistentMultipleTabManager is available, has diverged fidelity, and is qualified for assurance.",[238,206]],["PersistentMultipleTabManager",0,0,0,0,1,1,"PersistentMultipleTabManager is available, has no applicable behavior claim, and has no assurance classification.",[]],["persistentSingleTabManager",0,0,0,0,4,2,"persistentSingleTabManager is available, has diverged fidelity, and is qualified for assurance.",[238,206]],["PersistentSingleTabManager",0,0,0,0,1,1,"PersistentSingleTabManager is available, has no applicable behavior claim, and has no assurance classification.",[]],["PersistentSingleTabManagerSettings",0,0,0,0,1,1,"PersistentSingleTabManagerSettings is available, has no applicable behavior claim, and has no assurance classification.",[]],["PersistentTabManager",0,0,0,0,1,1,"PersistentTabManager is available, has no applicable behavior claim, and has no assurance classification.",[]],["PhoneAuthCredential",2,2,2,3,1,1,"PhoneAuthCredential is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169,4]],["PhoneAuthProvider",2,2,2,3,1,1,"PhoneAuthProvider is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169,4]],["PhoneInfoOptions",2,2,2,1,1,1,"PhoneInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["PhoneMultiFactorAssertion",2,2,2,1,1,1,"PhoneMultiFactorAssertion is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["PhoneMultiFactorEnrollInfoOptions",2,2,2,1,1,1,"PhoneMultiFactorEnrollInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["PhoneMultiFactorGenerator",2,2,2,3,1,1,"PhoneMultiFactorGenerator is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169,4]],["PhoneMultiFactorInfo",2,2,2,1,1,1,"PhoneMultiFactorInfo is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["PhoneMultiFactorSignInInfoOptions",2,2,2,1,1,1,"PhoneMultiFactorSignInInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["phoneNumber",7,1,7,0,0,0,"phoneNumber is available, has conforms fidelity, and is eligible for assurance.",[]],["phoneNumber",1,1,1,0,0,0,"phoneNumber is available, has conforms fidelity, and is eligible for assurance.",[]],["phoneNumber",8,1,8,0,0,0,"phoneNumber is available, has conforms fidelity, and is eligible for assurance.",[]],["PhoneSingleFactorInfoOptions",2,2,2,1,1,1,"PhoneSingleFactorInfoOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["photoURL",7,1,7,0,0,0,"photoURL is available, has conforms fidelity, and is eligible for assurance.",[]],["photoUrl",1,1,1,0,0,0,"photoUrl is available, has conforms fidelity, and is eligible for assurance.",[]],["photoURL",8,1,8,0,0,0,"photoURL is available, has conforms fidelity, and is eligible for assurance.",[]],["policies",15,1,13,0,0,0,"policies is available, has conforms fidelity, and is eligible for assurance.",[]],["PopupRedirectResolver",2,2,2,1,1,1,"PopupRedirectResolver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["POSSIBLE_ROLES",10,3,10,0,0,0,"POSSIBLE_ROLES is available, has conforms fidelity, and is eligible for assurance.",[]],["PrebuiltVoiceConfig",10,3,10,1,1,1,"PrebuiltVoiceConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["Primitive",0,0,0,0,1,1,"Primitive is available, has no applicable behavior claim, and has no assurance classification.",[]],["priority",17,1,15,0,0,0,"priority is available, has conforms fidelity, and is eligible for assurance.",[]],["priority",9,1,9,0,0,0,"priority is available, has conforms fidelity, and is eligible for assurance.",[]],["priority",18,1,16,0,0,0,"priority is available, has conforms fidelity, and is eligible for assurance.",[]],["prodErrorMap",2,2,2,0,4,2,"prodErrorMap is available, has diverged fidelity, and is qualified for assurance.",[11,12]],["PromptFeedback",10,3,10,0,1,1,"PromptFeedback is available, has no applicable behavior claim, and has no assurance classification.",[]],["providerData",2,1,2,0,0,0,"providerData is available, has conforms fidelity, and is eligible for assurance.",[]],["providerData",7,1,7,0,0,0,"providerData is available, has conforms fidelity, and is eligible for assurance.",[]],["providerData",1,1,1,0,0,0,"providerData is available, has conforms fidelity, and is eligible for assurance.",[]],["providerData",8,1,8,0,0,0,"providerData is available, has conforms fidelity, and is eligible for assurance.",[]],["ProviderId",2,2,2,0,0,0,"ProviderId is available, has conforms fidelity, and is eligible for assurance.",[]],["providerId",1,1,1,0,0,0,"providerId is available, has conforms fidelity, and is eligible for assurance.",[]],["providerId",8,1,8,0,0,0,"providerId is available, has conforms fidelity, and is eligible for assurance.",[]],["push",15,8,13,0,0,0,"push is available, has conforms fidelity, and is eligible for assurance.",[]],["push",17,1,15,0,0,0,"push is available, has conforms fidelity, and is eligible for assurance.",[]],["push",9,1,9,0,0,0,"push is available, has conforms fidelity, and is eligible for assurance.",[]],["pushKey",15,1,13,0,0,0,"pushKey is available, has conforms fidelity, and is eligible for assurance.",[]],["pushKeyOrdering",17,1,15,0,0,0,"pushKeyOrdering is available, has conforms fidelity, and is eligible for assurance.",[]],["pushKeyOrdering",9,1,9,0,0,0,"pushKeyOrdering is available, has conforms fidelity, and is eligible for assurance.",[]],["pushKeyOrdering",18,1,16,0,0,0,"pushKeyOrdering is available, has conforms fidelity, and is eligible for assurance.",[]],["Query",0,0,0,0,0,0,"Query is available, has conforms fidelity, and is eligible for assurance.",[]],["query",0,0,0,0,4,2,"query is available, has diverged fidelity, and is qualified for assurance.",[273,274]],["query",15,8,13,0,4,2,"query is available, has diverged fidelity, and is qualified for assurance.",[275,276]],["Query",15,8,13,0,1,1,"Query is available, has no applicable behavior claim, and has no assurance classification.",[]],["query",14,8,6,0,0,0,"query is available, has conforms fidelity, and is eligible for assurance.",[]],["query.endAt",14,1,6,0,0,0,"query.endAt is available, has conforms fidelity, and is eligible for assurance.",[]],["query.equalTo",14,1,6,0,0,0,"query.equalTo is available, has conforms fidelity, and is eligible for assurance.",[]],["query.limitToFirst",14,1,6,0,0,0,"query.limitToFirst is available, has conforms fidelity, and is eligible for assurance.",[]],["query.limitToLast",14,1,6,0,0,0,"query.limitToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["query.orderByChild",14,1,6,0,0,0,"query.orderByChild is available, has conforms fidelity, and is eligible for assurance.",[]],["query.orderByKey",14,1,6,0,0,0,"query.orderByKey is available, has conforms fidelity, and is eligible for assurance.",[]],["query.orderByPriority",14,1,6,0,0,0,"query.orderByPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["query.orderByValue",14,1,6,0,0,0,"query.orderByValue is available, has conforms fidelity, and is eligible for assurance.",[]],["query.startAt",14,1,6,0,0,0,"query.startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["query.unknown-field",14,1,6,0,4,3,"query.unknown-field is available, has diverged fidelity, and is ineligible for assurance.",[]],["QueryCompositeFilterConstraint",0,0,0,0,0,0,"QueryCompositeFilterConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryConstraint",0,0,0,0,0,0,"QueryConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryConstraint",15,8,13,0,1,1,"QueryConstraint is available, has no applicable behavior claim, and has no assurance classification.",[]],["QueryConstraintType",0,0,0,0,1,1,"QueryConstraintType is available, has no applicable behavior claim, and has no assurance classification.",[]],["QueryConstraintType",15,8,13,0,1,1,"QueryConstraintType is available, has no applicable behavior claim, and has no assurance classification.",[]],["QueryDocumentSnapshot",0,0,0,0,0,0,"QueryDocumentSnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["queryDocumentSnapshot",5,1,5,0,0,0,"queryDocumentSnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryEndAtConstraint",0,0,0,0,0,0,"QueryEndAtConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["queryEndingAtValue",18,1,16,0,0,0,"queryEndingAtValue is available, has conforms fidelity, and is eligible for assurance.",[]],["queryEqual",0,0,0,0,0,0,"queryEqual is available, has conforms fidelity, and is eligible for assurance.",[]],["queryEqualToValue",18,1,16,0,0,0,"queryEqualToValue is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryFieldFilterConstraint",0,0,0,0,0,0,"QueryFieldFilterConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryFilterConstraint",0,0,0,0,1,1,"QueryFilterConstraint is available, has no applicable behavior claim, and has no assurance classification.",[]],["QueryLimitConstraint",0,0,0,0,0,0,"QueryLimitConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["queryLimitedToFirst",18,1,16,0,0,0,"queryLimitedToFirst is available, has conforms fidelity, and is eligible for assurance.",[]],["queryLimitedToLast",18,1,16,0,0,0,"queryLimitedToLast is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryNonFilterConstraint",0,0,0,0,1,1,"QueryNonFilterConstraint is available, has no applicable behavior claim, and has no assurance classification.",[]],["QueryOrderByConstraint",0,0,0,0,0,0,"QueryOrderByConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["queryOrderedByChild",18,1,16,0,0,0,"queryOrderedByChild is available, has conforms fidelity, and is eligible for assurance.",[]],["queryOrderedByKey",18,1,16,0,0,0,"queryOrderedByKey is available, has conforms fidelity, and is eligible for assurance.",[]],["queryOrderedByValue",18,1,16,0,0,0,"queryOrderedByValue is available, has conforms fidelity, and is eligible for assurance.",[]],["QuerySnapshot",0,0,0,0,0,0,"QuerySnapshot is available, has conforms fidelity, and is eligible for assurance.",[]],["querySnapshotFromJSON",0,0,0,0,0,0,"querySnapshotFromJSON is available, has conforms fidelity, and is eligible for assurance.",[]],["querySnapshotsSequence",5,1,5,0,0,0,"querySnapshotsSequence is available, has conforms fidelity, and is eligible for assurance.",[]],["QueryStartAtConstraint",0,0,0,0,0,0,"QueryStartAtConstraint is available, has conforms fidelity, and is eligible for assurance.",[]],["queryStartingAtValue",18,1,16,0,0,0,"queryStartingAtValue is available, has conforms fidelity, and is eligible for assurance.",[]],["ReactNativeAsyncStorage",2,2,2,1,1,1,"ReactNativeAsyncStorage is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["reauthenticateWithCredential",2,2,2,0,0,0,"reauthenticateWithCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["reauthenticateWithPhoneNumber",2,2,2,3,1,1,"reauthenticateWithPhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169]],["reauthenticateWithPopup",2,2,2,0,0,0,"reauthenticateWithPopup is available, has conforms fidelity, and is eligible for assurance.",[]],["reauthenticateWithRedirect",2,2,2,0,0,0,"reauthenticateWithRedirect is available, has conforms fidelity, and is eligible for assurance.",[]],["ReCaptchaEnterpriseProvider",13,6,12,0,2,2,"ReCaptchaEnterpriseProvider is available, has unverified fidelity, and is qualified for assurance.",[277,278,203,204]],["RecaptchaParameters",2,2,2,1,1,1,"RecaptchaParameters is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["ReCaptchaV3Provider",13,6,12,0,2,2,"ReCaptchaV3Provider is available, has unverified fidelity, and is qualified for assurance.",[277,278,203,204]],["RecaptchaVerifier",2,2,2,3,1,1,"RecaptchaVerifier is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169,4]],["recursiveMatch",11,1,6,0,0,0,"recursiveMatch is available, has conforms fidelity, and is eligible for assurance.",[]],["recursiveWildcard",6,1,6,0,0,0,"recursiveWildcard is available, has conforms fidelity, and is eligible for assurance.",[]],["ref",15,8,13,0,4,2,"ref is available, has diverged fidelity, and is qualified for assurance.",[279,280,275,276]],["ref",17,1,15,0,0,0,"ref is available, has conforms fidelity, and is eligible for assurance.",[]],["ref",19,10,14,0,4,2,"ref is available, has diverged fidelity, and is qualified for assurance.",[281,282,283,284,285,286]],["refEqual",0,0,0,0,0,0,"refEqual is available, has conforms fidelity, and is eligible for assurance.",[]],["reference",5,1,5,0,0,0,"reference is available, has conforms fidelity, and is eligible for assurance.",[]],["reference",9,1,9,0,0,0,"reference is available, has conforms fidelity, and is eligible for assurance.",[]],["reference",18,1,16,0,0,0,"reference is available, has conforms fidelity, and is eligible for assurance.",[]],["referenceWithPath",18,1,16,0,0,0,"referenceWithPath is available, has conforms fidelity, and is eligible for assurance.",[]],["refFromURL",15,8,13,0,0,0,"refFromURL is available, has conforms fidelity, and is eligible for assurance.",[]],["refPath",17,1,15,0,0,0,"refPath is available, has conforms fidelity, and is eligible for assurance.",[]],["registerVersion",22,12,18,0,0,0,"registerVersion is available, has conforms fidelity, and is eligible for assurance.",[]],["registerWith",7,1,7,0,0,0,"registerWith is available, has conforms fidelity, and is eligible for assurance.",[]],["reload",2,2,2,0,0,0,"reload is available, has conforms fidelity, and is eligible for assurance.",[]],["reload",7,1,7,0,0,0,"reload is available, has conforms fidelity, and is eligible for assurance.",[]],["reload",1,1,1,0,0,0,"reload is available, has conforms fidelity, and is eligible for assurance.",[]],["reload",8,1,8,0,0,0,"reload is available, has conforms fidelity, and is eligible for assurance.",[]],["remove",15,8,13,0,0,0,"remove is available, has conforms fidelity, and is eligible for assurance.",[]],["remove",17,1,15,0,0,0,"remove is available, has conforms fidelity, and is eligible for assurance.",[]],["removeAll",11,1,6,0,0,0,"removeAll is available, has conforms fidelity, and is eligible for assurance.",[]],["removeAuthStateListener",1,1,1,0,0,0,"removeAuthStateListener is available, has conforms fidelity, and is eligible for assurance.",[]],["removedKeys",6,1,6,0,0,0,"removedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["removeEventListener",9,1,9,0,0,0,"removeEventListener is available, has conforms fidelity, and is eligible for assurance.",[]],["removeIdTokenListener",1,1,1,0,0,0,"removeIdTokenListener is available, has conforms fidelity, and is eligible for assurance.",[]],["removeObserver",18,1,16,0,0,0,"removeObserver is available, has conforms fidelity, and is eligible for assurance.",[]],["removeValue",9,1,9,0,0,0,"removeValue is available, has conforms fidelity, and is eligible for assurance.",[]],["removeValue",18,1,16,0,0,0,"removeValue is available, has conforms fidelity, and is eligible for assurance.",[]],["replace",11,1,6,0,4,3,"replace is available, has diverged fidelity, and is ineligible for assurance.",[226,227]],["replace",14,1,6,0,0,0,"replace is available, has conforms fidelity, and is eligible for assurance.",[]],["replace",6,1,6,0,0,0,"replace is available, has conforms fidelity, and is eligible for assurance.",[]],["request",11,1,6,0,0,0,"request is available, has conforms fidelity, and is eligible for assurance.",[]],["request",6,1,6,0,0,0,"request is available, has conforms fidelity, and is eligible for assurance.",[]],["request.auth",11,1,6,0,0,0,"request.auth is available, has conforms fidelity, and is eligible for assurance.",[]],["request.auth",6,1,6,0,0,0,"request.auth is available, has conforms fidelity, and is eligible for assurance.",[]],["request.auth.token",11,1,6,0,0,0,"request.auth.token is available, has conforms fidelity, and is eligible for assurance.",[]],["request.auth.token",6,1,6,0,5,3,"request.auth.token is available, has unsupported fidelity, and is ineligible for assurance.",[287,288]],["request.auth.uid",11,1,6,0,0,0,"request.auth.uid is available, has conforms fidelity, and is eligible for assurance.",[]],["request.auth.uid",6,1,6,0,0,0,"request.auth.uid is available, has conforms fidelity, and is eligible for assurance.",[]],["request.method",11,1,6,0,0,0,"request.method is available, has conforms fidelity, and is eligible for assurance.",[]],["request.method",6,1,6,0,0,0,"request.method is available, has conforms fidelity, and is eligible for assurance.",[]],["request.path",11,1,6,0,0,0,"request.path is available, has conforms fidelity, and is eligible for assurance.",[]],["request.path",6,1,6,0,0,0,"request.path is available, has conforms fidelity, and is eligible for assurance.",[]],["request.query",11,1,6,0,0,0,"request.query is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource",11,1,6,0,0,0,"request.resource is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource",6,1,6,0,0,0,"request.resource is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource.bucket",6,1,6,0,0,0,"request.resource.bucket is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource.contentType",6,1,6,0,0,0,"request.resource.contentType is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource.data",11,1,6,0,0,0,"request.resource.data is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource.id",11,1,6,0,0,0,"request.resource.id is available, has conforms fidelity, and is eligible for assurance.",[289]],["request.resource.metadata",6,1,6,0,0,0,"request.resource.metadata is available, has conforms fidelity, and is eligible for assurance.",[]],["request.resource.name",6,1,6,0,0,0,"request.resource.name is available, has conforms fidelity, and is eligible for assurance.",[290]],["request.resource.size",6,1,6,0,0,0,"request.resource.size is available, has conforms fidelity, and is eligible for assurance.",[]],["request.time",11,1,6,0,0,0,"request.time is available, has conforms fidelity, and is eligible for assurance.",[]],["request.time",6,1,6,0,0,0,"request.time is available, has conforms fidelity, and is eligible for assurance.",[]],["RequestOptions",10,3,10,0,1,1,"RequestOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["requiredFields",11,1,6,0,0,0,"requiredFields is available, has conforms fidelity, and is eligible for assurance.",[]],["reset",8,1,8,0,0,0,"reset is available, has conforms fidelity, and is eligible for assurance.",[]],["resource",11,1,6,0,0,0,"resource is available, has conforms fidelity, and is eligible for assurance.",[]],["resource",6,1,6,0,4,3,"resource is available, has diverged fidelity, and is ineligible for assurance.",[291,292]],["resource.bucket",6,1,6,0,0,0,"resource.bucket is available, has conforms fidelity, and is eligible for assurance.",[293]],["resource.cacheControl",6,1,6,0,5,3,"resource.cacheControl is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.contentDisposition",6,1,6,0,5,3,"resource.contentDisposition is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.contentEncoding",6,1,6,0,5,3,"resource.contentEncoding is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.contentLanguage",6,1,6,0,5,3,"resource.contentLanguage is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.contentType",6,1,6,0,0,0,"resource.contentType is available, has conforms fidelity, and is eligible for assurance.",[]],["resource.crc32c",6,1,6,0,5,3,"resource.crc32c is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.data",11,1,6,0,0,0,"resource.data is available, has conforms fidelity, and is eligible for assurance.",[]],["resource.etag",6,1,6,0,5,3,"resource.etag is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.generation",6,1,6,0,0,0,"resource.generation is available, has conforms fidelity, and is eligible for assurance.",[295]],["resource.id",11,1,6,0,0,0,"resource.id is available, has conforms fidelity, and is eligible for assurance.",[]],["resource.md5Hash",6,1,6,0,5,3,"resource.md5Hash is available, has unsupported fidelity, and is ineligible for assurance.",[291,292,294]],["resource.metadata",6,1,6,0,0,0,"resource.metadata is available, has conforms fidelity, and is eligible for assurance.",[]],["resource.metageneration",6,1,6,0,0,0,"resource.metageneration is available, has conforms fidelity, and is eligible for assurance.",[296]],["resource.__name__",11,1,6,0,0,0,"resource.__name__ is available, has conforms fidelity, and is eligible for assurance.",[]],["resource.name",6,1,6,0,0,0,"resource.name is available, has conforms fidelity, and is eligible for assurance.",[297]],["resource.size",6,1,6,0,0,0,"resource.size is available, has conforms fidelity, and is eligible for assurance.",[]],["resource.timeCreated",6,1,6,0,0,0,"resource.timeCreated is available, has conforms fidelity, and is eligible for assurance.",[298]],["resource.updated",6,1,6,0,0,0,"resource.updated is available, has conforms fidelity, and is eligible for assurance.",[299]],["ResponseModality",10,3,10,0,1,1,"ResponseModality is available, has no applicable behavior claim, and has no assurance classification.",[]],["restoreSession",8,1,8,0,0,0,"restoreSession is available, has conforms fidelity, and is eligible for assurance.",[]],["re-subscribe",1,1,1,0,0,0,"re-subscribe is available, has conforms fidelity, and is eligible for assurance.",[]],["RetrievalConfig",10,3,10,0,1,1,"RetrievalConfig is available, has no applicable behavior claim, and has no assurance classification.",[]],["RetrievedContextAttribution",10,3,10,1,1,1,"RetrievedContextAttribution is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["revokeAccessToken",2,2,2,0,4,2,"revokeAccessToken is available, has diverged fidelity, and is qualified for assurance.",[300,301]],["Role",10,3,10,0,1,1,"Role is available, has no applicable behavior claim, and has no assurance classification.",[]],["root",15,1,13,0,0,0,"root is available, has conforms fidelity, and is eligible for assurance.",[]],["root",17,1,15,0,0,0,"root is available, has conforms fidelity, and is eligible for assurance.",[]],["root",9,1,9,0,0,0,"root is available, has conforms fidelity, and is eligible for assurance.",[]],["root",14,1,6,0,0,0,"root is available, has conforms fidelity, and is eligible for assurance.",[]],["root",18,1,16,0,0,0,"root is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-create",11,1,6,0,0,0,"rule-kind.allow-create is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-create",6,1,6,0,0,0,"rule-kind.allow-create is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-delete",11,1,6,0,0,0,"rule-kind.allow-delete is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-delete",6,1,6,0,0,0,"rule-kind.allow-delete is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-get",11,1,6,0,0,0,"rule-kind.allow-get is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-get",6,1,6,0,0,0,"rule-kind.allow-get is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-list",11,1,6,0,0,0,"rule-kind.allow-list is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-list",6,1,6,0,0,0,"rule-kind.allow-list is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-read",11,1,6,0,0,0,"rule-kind.allow-read is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-read",6,1,6,0,0,0,"rule-kind.allow-read is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-update",11,1,6,0,0,0,"rule-kind.allow-update is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-update",6,1,6,0,0,0,"rule-kind.allow-update is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-write",11,1,6,0,0,0,"rule-kind.allow-write is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.allow-write",6,1,6,0,0,0,"rule-kind.allow-write is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.function",11,1,6,0,0,0,"rule-kind.function is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.function",6,1,6,0,0,0,"rule-kind.function is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.import",11,1,6,0,2,2,"rule-kind.import is available, has unverified fidelity, and is qualified for assurance.",[302]],["rule-kind.indexOn",14,1,6,0,0,0,"rule-kind.indexOn is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.indexOn-non-string",14,1,6,0,4,3,"rule-kind.indexOn-non-string is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.invalid-key",14,1,6,0,4,3,"rule-kind.invalid-key is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.let",11,1,6,0,0,0,"rule-kind.let is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.let",6,1,6,0,0,0,"rule-kind.let is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.location-wildcard",14,1,6,0,0,0,"rule-kind.location-wildcard is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.match",11,1,6,0,0,0,"rule-kind.match is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.match",6,1,6,0,5,3,"rule-kind.match is available, has unsupported fidelity, and is ineligible for assurance.",[269,270,271,272]],["rule-kind.non-boolean-result",14,1,6,0,4,3,"rule-kind.non-boolean-result is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.non-expression-value",14,1,6,0,4,3,"rule-kind.non-expression-value is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.non-object-child",14,1,6,0,4,3,"rule-kind.non-object-child is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.read",14,1,6,0,0,0,"rule-kind.read is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.rules_version",11,1,6,0,0,0,"rule-kind.rules_version is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.rules_version",6,1,6,0,0,0,"rule-kind.rules_version is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.sibling-wildcards",14,1,6,0,4,3,"rule-kind.sibling-wildcards is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.unknown-key",14,1,6,0,4,3,"rule-kind.unknown-key is available, has diverged fidelity, and is ineligible for assurance.",[]],["rule-kind.validate",14,1,6,0,0,0,"rule-kind.validate is available, has conforms fidelity, and is eligible for assurance.",[]],["rule-kind.write",14,1,6,0,0,0,"rule-kind.write is available, has conforms fidelity, and is eligible for assurance.",[]],["ruleset",15,9,13,0,0,0,"ruleset is available, has conforms fidelity, and is eligible for assurance.",[]],["rules_version",11,1,6,0,0,0,"rules_version is available, has conforms fidelity, and is eligible for assurance.",[]],["rules_version",6,1,6,0,0,0,"rules_version is available, has conforms fidelity, and is eligible for assurance.",[]],["runTransaction",0,0,0,0,3,3,"runTransaction is available, has bug fidelity, and is ineligible for assurance.",[303,304,305,306]],["runTransaction",3,1,3,0,2,2,"runTransaction is available, has unverified fidelity, and is qualified for assurance.",[307,22]],["runTransaction",4,1,4,0,2,2,"runTransaction is available, has unverified fidelity, and is qualified for assurance.",[307,23]],["runTransaction",5,1,5,0,0,0,"runTransaction is available, has conforms fidelity, and is eligible for assurance.",[]],["runTransaction",15,8,13,0,3,3,"runTransaction is available, has bug fidelity, and is ineligible for assurance.",[279,280,308,309,310,311,312,313,314,315,316,317]],["runTransaction",17,1,15,0,0,0,"runTransaction is available, has conforms fidelity, and is eligible for assurance.",[]],["runTransaction",9,1,9,0,0,0,"runTransaction is available, has conforms fidelity, and is eligible for assurance.",[]],["runTransactionAsync",5,1,5,0,0,0,"runTransactionAsync is available, has conforms fidelity, and is eligible for assurance.",[]],["runTransactionBlock",18,1,16,0,0,0,"runTransactionBlock is available, has conforms fidelity, and is eligible for assurance.",[]],["runTransactionWithOptions",5,1,5,0,0,0,"runTransactionWithOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["SafetyRating",10,3,10,0,1,1,"SafetyRating is available, has no applicable behavior claim, and has no assurance classification.",[]],["SafetySetting",10,3,10,0,1,1,"SafetySetting is available, has no applicable behavior claim, and has no assurance classification.",[]],["SAMLAuthProvider",2,2,2,0,0,0,"SAMLAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["Schema",10,3,10,0,4,2,"Schema is available, has diverged fidelity, and is qualified for assurance.",[318,319]],["SchemaInterface",10,3,10,0,1,1,"SchemaInterface is available, has no applicable behavior claim, and has no assurance classification.",[]],["SchemaParams",10,3,10,0,1,1,"SchemaParams is available, has no applicable behavior claim, and has no assurance classification.",[]],["SchemaRequest",10,3,10,0,1,1,"SchemaRequest is available, has no applicable behavior claim, and has no assurance classification.",[]],["SchemaShared",10,3,10,0,1,1,"SchemaShared is available, has no applicable behavior claim, and has no assurance classification.",[]],["SchemaType",10,3,10,0,1,1,"SchemaType is available, has no applicable behavior claim, and has no assurance classification.",[]],["script",10,1,10,0,0,0,"script is available, has conforms fidelity, and is eligible for assurance.",[]],["SDK_VERSION",22,12,18,0,0,0,"SDK_VERSION is available, has conforms fidelity, and is eligible for assurance.",[]],["SearchEntrypoint",10,3,10,0,1,1,"SearchEntrypoint is available, has no applicable behavior claim, and has no assurance classification.",[]],["Segment",10,3,10,0,1,1,"Segment is available, has no applicable behavior claim, and has no assurance classification.",[]],["semantic.deny-by-default",14,1,6,0,2,2,"semantic.deny-by-default is available, has unverified fidelity, and is qualified for assurance.",[]],["semantic.deny-by-default",6,1,6,0,0,0,"semantic.deny-by-default is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.error-absorption-and",11,1,6,0,0,0,"semantic.error-absorption-and is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.error-absorption-or",11,1,6,0,0,0,"semantic.error-absorption-or is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.get-budget",11,1,6,0,2,2,"semantic.get-budget is available, has unverified fidelity, and is qualified for assurance.",[]],["semantic.hierarchical-match-cascade",11,1,6,0,0,0,"semantic.hierarchical-match-cascade is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.method-argument-type",14,1,6,0,4,3,"semantic.method-argument-type is available, has diverged fidelity, and is ineligible for assurance.",[]],["semantic.method-wrong-receiver",14,1,6,0,4,3,"semantic.method-wrong-receiver is available, has diverged fidelity, and is ineligible for assurance.",[]],["semantic.parse-error",14,1,6,0,4,3,"semantic.parse-error is available, has diverged fidelity, and is ineligible for assurance.",[]],["semantic.read-cascade",14,1,6,0,0,0,"semantic.read-cascade is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.read-umbrella",6,1,6,0,0,0,"semantic.read-umbrella is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.recursive-wildcard",11,1,6,0,0,0,"semantic.recursive-wildcard is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.recursive-wildcard",6,1,6,0,0,0,"semantic.recursive-wildcard is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.regex-literal",14,1,6,0,0,0,"semantic.regex-literal is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.rules-size-limit",14,1,6,0,0,0,"semantic.rules-size-limit is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.type-dispatch",11,1,6,0,2,2,"semantic.type-dispatch is available, has unverified fidelity, and is qualified for assurance.",[320]],["semantic.validate-non-cascade",14,1,6,0,0,0,"semantic.validate-non-cascade is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.write-cascade",14,1,6,0,0,0,"semantic.write-cascade is available, has conforms fidelity, and is eligible for assurance.",[]],["semantic.write-umbrella",6,1,6,0,0,0,"semantic.write-umbrella is available, has conforms fidelity, and is eligible for assurance.",[]],["send",12,5,11,0,5,3,"send is available, has unsupported fidelity, and is ineligible for assurance.",[321,322,73,74,2,3]],["sendAuthChangesEvent",7,1,7,0,0,0,"sendAuthChangesEvent is available, has conforms fidelity, and is eligible for assurance.",[]],["sendEach",12,5,11,0,5,3,"sendEach is available, has unsupported fidelity, and is ineligible for assurance.",[321,322]],["sendEachForMulticast",12,5,11,0,0,0,"sendEachForMulticast is available, has conforms fidelity, and is eligible for assurance.",[]],["sendEmailVerification",2,2,2,0,0,0,"sendEmailVerification is available, has conforms fidelity, and is eligible for assurance.",[]],["sendMessage",10,1,10,0,4,2,"sendMessage is available, has diverged fidelity, and is qualified for assurance.",[151,152]],["sendMessageStream",10,1,10,0,4,2,"sendMessageStream is available, has diverged fidelity, and is qualified for assurance.",[323,324]],["sendPasswordResetEmail",2,2,2,0,0,0,"sendPasswordResetEmail is available, has conforms fidelity, and is eligible for assurance.",[]],["SendResponse",12,5,11,0,0,0,"SendResponse is available, has conforms fidelity, and is eligible for assurance.",[]],["sendSignInLinkToEmail",2,2,2,0,4,2,"sendSignInLinkToEmail is available, has diverged fidelity, and is qualified for assurance.",[325,326]],["serializeRtdbRules",15,9,13,0,0,0,"serializeRtdbRules is available, has conforms fidelity, and is eligible for assurance.",[]],["serverIncrement",17,1,15,0,0,0,"serverIncrement is available, has conforms fidelity, and is eligible for assurance.",[]],["serverIncrement",9,1,9,0,0,0,"serverIncrement is available, has conforms fidelity, and is eligible for assurance.",[]],["serverIncrement",18,1,16,0,0,0,"serverIncrement is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimeOffset",17,1,15,0,4,2,"serverTimeOffset is available, has diverged fidelity, and is qualified for assurance.",[195,196]],["serverTimeOffset",9,1,9,0,4,2,"serverTimeOffset is available, has diverged fidelity, and is qualified for assurance.",[197,198]],["serverTimeOffset",18,1,16,0,4,2,"serverTimeOffset is available, has diverged fidelity, and is qualified for assurance.",[199,200]],["serverTimestamp",0,0,0,0,3,3,"serverTimestamp is available, has bug fidelity, and is ineligible for assurance.",[257,258]],["serverTimestamp",3,1,3,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestamp",4,1,4,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestamp",5,1,5,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestamp",15,8,13,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestamp",17,1,15,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestamp",9,1,9,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestamp",18,1,16,0,0,0,"serverTimestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["serverTimestampPropertyWrapper",5,1,5,0,0,0,"serverTimestampPropertyWrapper is available, has conforms fidelity, and is eligible for assurance.",[]],["sessionIsolation",7,1,7,0,0,0,"sessionIsolation is available, has conforms fidelity, and is eligible for assurance.",[]],["SessionResumptionConfig",10,3,10,1,1,1,"SessionResumptionConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["set",3,1,3,0,0,0,"set is available, has conforms fidelity, and is eligible for assurance.",[]],["set",4,1,4,0,0,0,"set is available, has conforms fidelity, and is eligible for assurance.",[]],["set",15,8,13,0,3,3,"set is available, has bug fidelity, and is ineligible for assurance.",[314,315,316,317]],["set",17,1,15,0,0,0,"set is available, has conforms fidelity, and is eligible for assurance.",[]],["set.difference",11,1,6,0,0,0,"set.difference is available, has conforms fidelity, and is eligible for assurance.",[]],["set.difference",6,1,6,0,0,0,"set.difference is available, has conforms fidelity, and is eligible for assurance.",[]],["set.hasAll",11,1,6,0,0,0,"set.hasAll is available, has conforms fidelity, and is eligible for assurance.",[]],["set.hasAll",6,1,6,0,0,0,"set.hasAll is available, has conforms fidelity, and is eligible for assurance.",[327]],["set.hasAny",11,1,6,0,0,0,"set.hasAny is available, has conforms fidelity, and is eligible for assurance.",[]],["set.hasAny",6,1,6,0,0,0,"set.hasAny is available, has conforms fidelity, and is eligible for assurance.",[]],["set.hasOnly",11,1,6,0,0,0,"set.hasOnly is available, has conforms fidelity, and is eligible for assurance.",[]],["set.hasOnly",6,1,6,0,0,0,"set.hasOnly is available, has conforms fidelity, and is eligible for assurance.",[]],["set.intersection",11,1,6,0,0,0,"set.intersection is available, has conforms fidelity, and is eligible for assurance.",[]],["set.intersection",6,1,6,0,0,0,"set.intersection is available, has conforms fidelity, and is eligible for assurance.",[]],["set.size",11,1,6,0,0,0,"set.size is available, has conforms fidelity, and is eligible for assurance.",[]],["set.union",11,1,6,0,0,0,"set.union is available, has conforms fidelity, and is eligible for assurance.",[]],["set.union",6,1,6,0,0,0,"set.union is available, has conforms fidelity, and is eligible for assurance.",[]],["setData",5,1,5,0,0,0,"setData is available, has conforms fidelity, and is eligible for assurance.",[]],["setData",15,1,13,0,0,0,"setData is available, has conforms fidelity, and is eligible for assurance.",[]],["setDataMerge",5,1,5,0,0,0,"setDataMerge is available, has conforms fidelity, and is eligible for assurance.",[]],["setDataMergeFields",5,1,5,0,0,0,"setDataMergeFields is available, has conforms fidelity, and is eligible for assurance.",[]],["setDoc",0,0,0,0,3,3,"setDoc is available, has bug fidelity, and is ineligible for assurance.",[123,124,328,329,60,61,125,126]],["setIndexConfiguration",0,0,0,0,0,0,"setIndexConfiguration is available, has conforms fidelity, and is eligible for assurance.",[]],["setLanguageCode",7,1,7,0,0,0,"setLanguageCode is available, has conforms fidelity, and is eligible for assurance.",[]],["setLogLevel",22,12,18,0,0,0,"setLogLevel is available, has conforms fidelity, and is eligible for assurance.",[]],["setLogLevel",0,0,0,0,4,2,"setLogLevel is available, has diverged fidelity, and is qualified for assurance.",[330,206]],["setNull",17,1,15,0,0,0,"setNull is available, has conforms fidelity, and is eligible for assurance.",[]],["SetOptions",0,0,0,0,1,1,"SetOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["setPersistence",2,2,2,0,4,2,"setPersistence is available, has diverged fidelity, and is qualified for assurance.",[331,332]],["setPersistence",7,1,7,0,0,0,"setPersistence is available, has conforms fidelity, and is eligible for assurance.",[]],["setPriority",15,8,13,0,3,3,"setPriority is available, has bug fidelity, and is ineligible for assurance.",[246,247,250,249,263,264]],["setPriority",17,1,15,0,0,0,"setPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["setPriority",9,1,9,0,0,0,"setPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["setPriority",18,1,16,0,0,0,"setPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["setRules",0,1,0,0,4,2,"setRules is available, has diverged fidelity, and is qualified for assurance.",[333,334]],["setRules",15,1,13,0,0,0,"setRules is available, has conforms fidelity, and is eligible for assurance.",[]],["setRules",19,1,14,0,0,0,"setRules is available, has conforms fidelity, and is eligible for assurance.",[]],["SettableMetadata",19,10,14,0,1,1,"SettableMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["settings",3,1,3,0,0,0,"settings is available, has conforms fidelity, and is eligible for assurance.",[]],["settings",4,1,4,0,0,0,"settings is available, has conforms fidelity, and is eligible for assurance.",[]],["settings",5,1,5,0,0,0,"settings is available, has conforms fidelity, and is eligible for assurance.",[]],["setTokenAutoRefreshEnabled",13,6,12,0,0,0,"setTokenAutoRefreshEnabled is available, has conforms fidelity, and is eligible for assurance.",[]],["setValue",9,1,9,0,0,0,"setValue is available, has conforms fidelity, and is eligible for assurance.",[]],["setValue",18,1,16,0,0,0,"setValue is available, has conforms fidelity, and is eligible for assurance.",[]],["setValueAndPriority",18,1,16,0,0,0,"setValueAndPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["setValueNil",18,1,16,0,0,0,"setValueNil is available, has conforms fidelity, and is eligible for assurance.",[]],["setValueNull",9,1,9,0,0,0,"setValueNull is available, has conforms fidelity, and is eligible for assurance.",[]],["setValueWithPriority",9,1,9,0,0,0,"setValueWithPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["setWithPriority",15,8,13,0,0,0,"setWithPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["setWithPriority",17,1,15,0,0,0,"setWithPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["signInAnonymously",2,2,2,0,4,2,"signInAnonymously is available, has diverged fidelity, and is qualified for assurance.",[335,336,337,338]],["signInAnonymously",7,1,7,0,0,0,"signInAnonymously is available, has conforms fidelity, and is eligible for assurance.",[]],["signInAnonymously",1,1,1,0,0,0,"signInAnonymously is available, has conforms fidelity, and is eligible for assurance.",[]],["signInAnonymously",8,1,8,0,0,0,"signInAnonymously is available, has conforms fidelity, and is eligible for assurance.",[]],["SignInMethod",2,2,2,0,0,0,"SignInMethod is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithCredential",2,2,2,0,5,3,"signInWithCredential is available, has unsupported fidelity, and is ineligible for assurance.",[339,340,341,342]],["signInWithCredential",7,1,7,0,0,0,"signInWithCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithCredential",1,1,1,0,0,0,"signInWithCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithCredential",8,1,8,0,0,0,"signInWithCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithCustomToken",2,2,2,0,4,2,"signInWithCustomToken is available, has diverged fidelity, and is qualified for assurance.",[343,344]],["signInWithEmailAndPassword",2,2,2,0,4,2,"signInWithEmailAndPassword is available, has diverged fidelity, and is qualified for assurance.",[345,346,347,348]],["signInWithEmailAndPassword",7,1,7,0,0,0,"signInWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithEmailAndPassword",1,1,1,0,0,0,"signInWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithEmailAndPassword",8,1,8,0,0,0,"signInWithEmailAndPassword is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithEmailLink",2,2,2,0,0,0,"signInWithEmailLink is available, has conforms fidelity, and is eligible for assurance.",[]],["signInWithPhoneNumber",2,2,2,3,1,1,"signInWithPhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169]],["signInWithPopup",2,2,2,0,5,3,"signInWithPopup is available, has unsupported fidelity, and is ineligible for assurance.",[339,340,341,342]],["signInWithRedirect",2,2,2,0,0,0,"signInWithRedirect is available, has conforms fidelity, and is eligible for assurance.",[]],["signOut",2,2,2,0,4,2,"signOut is available, has diverged fidelity, and is qualified for assurance.",[349,350]],["signOut",7,1,7,0,0,0,"signOut is available, has conforms fidelity, and is eligible for assurance.",[]],["signOut",1,1,1,0,0,0,"signOut is available, has conforms fidelity, and is eligible for assurance.",[]],["signOut",8,1,8,0,0,0,"signOut is available, has conforms fidelity, and is eligible for assurance.",[]],["simulateRtdbRules",15,9,13,0,5,3,"simulateRtdbRules is available, has unsupported fidelity, and is ineligible for assurance.",[351,352,353,354]],["SingleRequestOptions",10,3,10,0,1,1,"SingleRequestOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["size",6,1,6,0,0,0,"size is available, has conforms fidelity, and is eligible for assurance.",[]],["SlidingWindow",10,3,10,1,1,1,"SlidingWindow is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["snapshot.arity",14,1,6,0,4,3,"snapshot.arity is available, has diverged fidelity, and is ineligible for assurance.",[]],["snapshot.child",14,1,6,0,0,0,"snapshot.child is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.exists",14,1,6,0,0,0,"snapshot.exists is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.getPriority",14,1,6,0,0,0,"snapshot.getPriority is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.hasChild",14,1,6,0,0,0,"snapshot.hasChild is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.hasChildren",14,1,6,0,0,0,"snapshot.hasChildren is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.isBoolean",14,1,6,0,0,0,"snapshot.isBoolean is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.isNumber",14,1,6,0,0,0,"snapshot.isNumber is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.isString",14,1,6,0,0,0,"snapshot.isString is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.parent",14,1,6,0,0,0,"snapshot.parent is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshot.unknown",14,1,6,0,4,3,"snapshot.unknown is available, has diverged fidelity, and is ineligible for assurance.",[]],["snapshot.val",14,1,6,0,0,0,"snapshot.val is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotChild",17,1,15,0,0,0,"snapshotChild is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotChild",9,1,9,0,0,0,"snapshotChild is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotDocumentID",5,1,5,0,0,0,"snapshotDocumentID is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotEqual",0,0,0,0,0,0,"snapshotEqual is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotKey",17,1,15,0,0,0,"snapshotKey is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotKey",9,1,9,0,0,0,"snapshotKey is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotKey",18,1,16,0,0,0,"snapshotKey is available, has conforms fidelity, and is eligible for assurance.",[]],["SnapshotListenOptions",0,0,0,0,1,1,"SnapshotListenOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["SnapshotMetadata",0,0,0,0,0,0,"SnapshotMetadata is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotMetadata",5,1,5,0,0,0,"snapshotMetadata is available, has conforms fidelity, and is eligible for assurance.",[]],["SnapshotOptions",0,0,0,0,1,1,"SnapshotOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["snapshots",7,1,7,0,0,0,"snapshots is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshots",1,1,1,0,0,0,"snapshots is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshots",3,1,3,0,0,0,"snapshots is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshots",4,1,4,0,0,0,"snapshots is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshots",9,1,9,0,0,0,"snapshots is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotsInSync",3,1,3,0,2,2,"snapshotsInSync is available, has unverified fidelity, and is qualified for assurance.",[355,22]],["snapshotsInSync",4,1,4,0,2,2,"snapshotsInSync is available, has unverified fidelity, and is qualified for assurance.",[356,23]],["snapshotState",15,1,13,0,0,0,"snapshotState is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotValue",17,1,15,0,0,0,"snapshotValue is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotValue",9,1,9,0,0,0,"snapshotValue is available, has conforms fidelity, and is eligible for assurance.",[]],["snapshotValue",18,1,16,0,0,0,"snapshotValue is available, has conforms fidelity, and is eligible for assurance.",[]],["SpeechConfig",10,3,10,1,1,1,"SpeechConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["split",11,1,6,0,4,3,"split is available, has diverged fidelity, and is ineligible for assurance.",[226,227]],["split",6,1,6,0,4,3,"split is available, has diverged fidelity, and is ineligible for assurance.",[64,65]],["startAfter",0,0,0,0,0,0,"startAfter is available, has conforms fidelity, and is eligible for assurance.",[]],["startAfter",3,1,3,0,0,0,"startAfter is available, has conforms fidelity, and is eligible for assurance.",[]],["startAfter",4,1,4,0,0,0,"startAfter is available, has conforms fidelity, and is eligible for assurance.",[]],["startAfter",5,1,5,0,0,0,"startAfter is available, has conforms fidelity, and is eligible for assurance.",[]],["startAfter",15,8,13,0,0,0,"startAfter is available, has conforms fidelity, and is eligible for assurance.",[]],["startAfterDocument",5,1,5,0,0,0,"startAfterDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",0,0,0,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",3,1,3,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",4,1,4,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",5,1,5,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",15,8,13,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",17,1,15,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAt",9,1,9,0,0,0,"startAt is available, has conforms fidelity, and is eligible for assurance.",[]],["startAtDocument",3,1,3,0,0,0,"startAtDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["startAtDocument",5,1,5,0,0,0,"startAtDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["startAudioConversation",10,3,10,3,1,1,"startAudioConversation is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[357]],["StartAudioConversationOptions",10,3,10,1,1,1,"StartAudioConversationOptions is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["startChat",10,1,10,0,3,3,"startChat is available, has bug fidelity, and is ineligible for assurance.",[97,98]],["StartChatParams",10,3,10,0,1,1,"StartChatParams is available, has no applicable behavior claim, and has no assurance classification.",[]],["StartTemplateChatParams",10,3,10,1,1,1,"StartTemplateChatParams is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["StorageError",19,10,14,0,1,1,"StorageError is available, has no applicable behavior claim, and has no assurance classification.",[]],["StorageErrorCode",19,10,14,0,1,1,"StorageErrorCode is available, has no applicable behavior claim, and has no assurance classification.",[]],["StorageObserver",19,10,14,1,1,1,"StorageObserver is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["StorageReference",19,10,14,0,1,1,"StorageReference is available, has no applicable behavior claim, and has no assurance classification.",[]],["String",11,1,6,0,0,0,"String is available, has conforms fidelity, and is eligible for assurance.",[]],["string",11,1,6,0,0,0,"string is available, has conforms fidelity, and is eligible for assurance.",[]],["String",14,1,6,0,0,0,"String is available, has conforms fidelity, and is eligible for assurance.",[]],["String",6,1,6,0,0,0,"String is available, has conforms fidelity, and is eligible for assurance.",[]],["string.beginsWith",14,1,6,0,0,0,"string.beginsWith is available, has conforms fidelity, and is eligible for assurance.",[]],["string.contains",14,1,6,0,0,0,"string.contains is available, has conforms fidelity, and is eligible for assurance.",[]],["string.endsWith",14,1,6,0,0,0,"string.endsWith is available, has conforms fidelity, and is eligible for assurance.",[]],["string.length",14,1,6,0,0,0,"string.length is available, has conforms fidelity, and is eligible for assurance.",[358]],["string.length-call",14,1,6,0,4,3,"string.length-call is available, has diverged fidelity, and is ineligible for assurance.",[]],["string.lower",11,1,6,0,0,0,"string.lower is available, has conforms fidelity, and is eligible for assurance.",[]],["string.lower",6,1,6,0,0,0,"string.lower is available, has conforms fidelity, and is eligible for assurance.",[]],["string.matches",11,1,6,0,4,3,"string.matches is available, has diverged fidelity, and is ineligible for assurance.",[226,227]],["string.matches",14,1,6,0,0,0,"string.matches is available, has conforms fidelity, and is eligible for assurance.",[]],["string.matches",6,1,6,0,5,3,"string.matches is available, has unsupported fidelity, and is ineligible for assurance.",[228,229]],["string.replace",11,1,6,0,0,0,"string.replace is available, has conforms fidelity, and is eligible for assurance.",[]],["string.replace",14,1,6,0,0,0,"string.replace is available, has conforms fidelity, and is eligible for assurance.",[]],["string.replace",6,1,6,0,0,0,"string.replace is available, has conforms fidelity, and is eligible for assurance.",[]],["string.size",11,1,6,0,0,0,"string.size is available, has conforms fidelity, and is eligible for assurance.",[]],["string.split",11,1,6,0,4,3,"string.split is available, has diverged fidelity, and is ineligible for assurance.",[226,227]],["string.split",6,1,6,0,5,3,"string.split is available, has unsupported fidelity, and is ineligible for assurance.",[64,65]],["string.toLowerCase",14,1,6,0,0,0,"string.toLowerCase is available, has conforms fidelity, and is eligible for assurance.",[]],["string.toUpperCase",14,1,6,0,0,0,"string.toUpperCase is available, has conforms fidelity, and is eligible for assurance.",[359]],["string.toUtf8",11,1,6,0,0,0,"string.toUtf8 is available, has conforms fidelity, and is eligible for assurance.",[]],["string.toUtf8",6,1,6,0,0,0,"string.toUtf8 is available, has conforms fidelity, and is eligible for assurance.",[]],["string.trim",11,1,6,0,0,0,"string.trim is available, has conforms fidelity, and is eligible for assurance.",[]],["string.trim",6,1,6,0,0,0,"string.trim is available, has conforms fidelity, and is eligible for assurance.",[]],["string.unknown",14,1,6,0,4,3,"string.unknown is available, has diverged fidelity, and is ineligible for assurance.",[]],["string.upper",11,1,6,0,0,0,"string.upper is available, has conforms fidelity, and is eligible for assurance.",[]],["string.upper",6,1,6,0,0,0,"string.upper is available, has conforms fidelity, and is eligible for assurance.",[]],["stringEscapes",11,1,6,0,0,0,"stringEscapes is available, has conforms fidelity, and is eligible for assurance.",[]],["StringFormat",19,10,14,0,1,1,"StringFormat is available, has no applicable behavior claim, and has no assurance classification.",[]],["StringSchema",10,3,10,0,1,1,"StringSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["subscribeToTopic",12,5,11,0,0,0,"subscribeToTopic is available, has conforms fidelity, and is eligible for assurance.",[]],["subscript",5,1,5,0,0,0,"subscript is available, has conforms fidelity, and is eligible for assurance.",[]],["sum",0,0,0,0,3,3,"sum is available, has bug fidelity, and is ineligible for assurance.",[31,32,5,6]],["switchLens",8,1,8,0,0,0,"switchLens is available, has conforms fidelity, and is eligible for assurance.",[]],["takeAuthMail",2,1,2,0,0,0,"takeAuthMail is available, has conforms fidelity, and is eligible for assurance.",[]],["TaskEvent",19,10,14,0,1,1,"TaskEvent is available, has no applicable behavior claim, and has no assurance classification.",[]],["TaskState",0,0,0,0,1,1,"TaskState is available, has no applicable behavior claim, and has no assurance classification.",[]],["TaskState",19,10,14,0,1,1,"TaskState is available, has no applicable behavior claim, and has no assurance classification.",[]],["TemplateChatSession",10,3,10,1,1,1,"TemplateChatSession is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["TemplateFunctionDeclaration",10,3,10,1,1,1,"TemplateFunctionDeclaration is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["TemplateFunctionDeclarationsTool",10,3,10,1,1,1,"TemplateFunctionDeclarationsTool is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["TemplateGenerativeModel",10,3,10,3,1,1,"TemplateGenerativeModel is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[180,4]],["TemplateImagenModel",10,3,10,2,1,1,"TemplateImagenModel is out-of-scope; behavior fidelity and assurance are not applicable until the surface exists.",[181,4]],["TemplateTool",10,3,10,1,1,1,"TemplateTool is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["TemplateToolConfig",10,3,10,1,1,1,"TemplateToolConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["tenant",7,1,7,0,0,0,"tenant is available, has conforms fidelity, and is eligible for assurance.",[]],["tenant",8,1,8,0,0,0,"tenant is available, has conforms fidelity, and is eligible for assurance.",[]],["tenantId",7,1,7,0,0,0,"tenantId is available, has conforms fidelity, and is eligible for assurance.",[]],["tenantId",1,1,1,0,0,0,"tenantId is available, has conforms fidelity, and is eligible for assurance.",[]],["terminate",0,0,0,0,4,2,"terminate is available, has diverged fidelity, and is qualified for assurance.",[360,361]],["terminate",3,1,3,0,0,0,"terminate is available, has conforms fidelity, and is eligible for assurance.",[]],["terminate",4,1,4,0,0,0,"terminate is available, has conforms fidelity, and is eligible for assurance.",[]],["terminate",5,1,5,0,0,0,"terminate is available, has conforms fidelity, and is eligible for assurance.",[]],["ternary",11,1,6,0,0,0,"ternary is available, has conforms fidelity, and is eligible for assurance.",[]],["ternary",14,1,6,0,0,0,"ternary is available, has conforms fidelity, and is eligible for assurance.",[]],["text",10,1,10,0,0,0,"text is available, has conforms fidelity, and is eligible for assurance.",[]],["TextPart",10,3,10,0,1,1,"TextPart is available, has no applicable behavior claim, and has no assurance classification.",[]],["ThenableReference",15,8,13,0,1,1,"ThenableReference is available, has no applicable behavior claim, and has no assurance classification.",[]],["ThinkingConfig",10,3,10,0,1,1,"ThinkingConfig is available, has no applicable behavior claim, and has no assurance classification.",[]],["ThinkingLevel",10,3,10,0,1,1,"ThinkingLevel is available, has no applicable behavior claim, and has no assurance classification.",[]],["thoughtSummary",10,1,10,0,0,0,"thoughtSummary is available, has conforms fidelity, and is eligible for assurance.",[]],["Timestamp",0,0,0,0,0,0,"Timestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["Timestamp",3,1,3,0,0,0,"Timestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["Timestamp",4,1,4,0,0,0,"Timestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp",11,4,6,0,4,3,"timestamp is available, has diverged fidelity, and is ineligible for assurance.",[17,18]],["Timestamp",11,1,6,0,0,0,"Timestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp",5,1,5,0,0,0,"timestamp is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp",6,1,6,0,4,3,"timestamp is available, has diverged fidelity, and is ineligible for assurance.",[64,65]],["timestamp.date",11,1,6,0,0,0,"timestamp.date is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.date",6,1,6,0,0,0,"timestamp.date is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.day",11,1,6,0,0,0,"timestamp.day is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.day",6,1,6,0,0,0,"timestamp.day is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.dayOfWeek",11,1,6,0,0,0,"timestamp.dayOfWeek is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.dayOfWeek",6,1,6,0,0,0,"timestamp.dayOfWeek is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.dayOfYear",11,1,6,0,0,0,"timestamp.dayOfYear is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.dayOfYear",6,1,6,0,0,0,"timestamp.dayOfYear is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.hours",11,1,6,0,0,0,"timestamp.hours is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.hours",6,1,6,0,0,0,"timestamp.hours is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.minutes",11,1,6,0,0,0,"timestamp.minutes is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.minutes",6,1,6,0,0,0,"timestamp.minutes is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.month",11,1,6,0,0,0,"timestamp.month is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.month",6,1,6,0,0,0,"timestamp.month is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.nanos",11,1,6,0,0,0,"timestamp.nanos is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.nanos",6,1,6,0,0,0,"timestamp.nanos is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.seconds",11,1,6,0,0,0,"timestamp.seconds is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.seconds",6,1,6,0,0,0,"timestamp.seconds is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.time",11,1,6,0,0,0,"timestamp.time is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.time",6,1,6,0,0,0,"timestamp.time is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.toMillis",11,1,6,0,0,0,"timestamp.toMillis is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.toMillis",6,1,6,0,0,0,"timestamp.toMillis is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.value",11,1,6,0,0,0,"timestamp.value is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.value",6,1,6,0,0,0,"timestamp.value is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.year",11,1,6,0,0,0,"timestamp.year is available, has conforms fidelity, and is eligible for assurance.",[]],["timestamp.year",6,1,6,0,0,0,"timestamp.year is available, has conforms fidelity, and is eligible for assurance.",[]],["TokenMessage",12,5,11,0,0,0,"TokenMessage is available, has conforms fidelity, and is eligible for assurance.",[]],["toObject",4,1,4,0,0,0,"toObject is available, has conforms fidelity, and is eligible for assurance.",[]],["Tool",10,3,10,0,1,1,"Tool is available, has no applicable behavior claim, and has no assurance classification.",[]],["ToolConfig",10,3,10,0,1,1,"ToolConfig is available, has no applicable behavior claim, and has no assurance classification.",[]],["TopicMessage",12,5,11,0,0,0,"TopicMessage is available, has conforms fidelity, and is eligible for assurance.",[]],["toSet",11,1,6,0,0,0,"toSet is available, has conforms fidelity, and is eligible for assurance.",[]],["toSet",6,1,6,0,0,0,"toSet is available, has conforms fidelity, and is eligible for assurance.",[]],["TotpMultiFactorAssertion",2,2,2,1,1,1,"TotpMultiFactorAssertion is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["TotpMultiFactorGenerator",2,2,2,3,1,1,"TotpMultiFactorGenerator is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169,4]],["TotpMultiFactorInfo",2,2,2,1,1,1,"TotpMultiFactorInfo is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["TotpSecret",2,2,2,3,1,1,"TotpSecret is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[169,4]],["toUtf8",6,1,6,0,0,0,"toUtf8 is available, has conforms fidelity, and is eligible for assurance.",[]],["Transaction",0,0,0,0,0,0,"Transaction is available, has conforms fidelity, and is eligible for assurance.",[]],["transaction",3,1,3,0,0,0,"transaction is available, has conforms fidelity, and is eligible for assurance.",[]],["transaction",4,1,4,0,0,0,"transaction is available, has conforms fidelity, and is eligible for assurance.",[]],["transaction",11,1,6,0,0,0,"transaction is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionAbort",17,1,15,0,0,0,"transactionAbort is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionAbort",9,1,9,0,0,0,"transactionAbort is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionAbort",18,1,16,0,0,0,"transactionAbort is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionDeleteDocument",5,1,5,0,0,0,"transactionDeleteDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionGetDocument",5,1,5,0,0,0,"transactionGetDocument is available, has conforms fidelity, and is eligible for assurance.",[]],["TransactionOptions",0,0,0,0,1,1,"TransactionOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["TransactionOptions",15,8,13,0,1,1,"TransactionOptions is available, has no applicable behavior claim, and has no assurance classification.",[]],["transactionOptionsMaxAttempts",5,1,5,0,0,0,"transactionOptionsMaxAttempts is available, has conforms fidelity, and is eligible for assurance.",[]],["TransactionResult",15,8,13,0,1,1,"TransactionResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["transactionSetData",5,1,5,0,0,0,"transactionSetData is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionSetDataMerge",5,1,5,0,0,0,"transactionSetDataMerge is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionSetDataMergeFields",5,1,5,0,0,0,"transactionSetDataMergeFields is available, has conforms fidelity, and is eligible for assurance.",[]],["transactionUpdateData",5,1,5,0,0,0,"transactionUpdateData is available, has conforms fidelity, and is eligible for assurance.",[]],["Transcription",10,3,10,1,1,1,"Transcription is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["trim",11,1,6,0,0,0,"trim is available, has conforms fidelity, and is eligible for assurance.",[]],["trim",6,1,6,0,4,3,"trim is available, has diverged fidelity, and is ineligible for assurance.",[64,65]],["TwitterAuthProvider",2,2,2,0,0,0,"TwitterAuthProvider is available, has conforms fidelity, and is eligible for assurance.",[]],["TypedSchema",10,3,10,0,1,1,"TypedSchema is available, has no applicable behavior claim, and has no assurance classification.",[]],["uid",7,1,7,0,0,0,"uid is available, has conforms fidelity, and is eligible for assurance.",[]],["uid",1,1,1,0,0,0,"uid is available, has conforms fidelity, and is eligible for assurance.",[]],["uid",8,1,8,0,0,0,"uid is available, has conforms fidelity, and is eligible for assurance.",[]],["unbound-path-variable",14,1,6,0,4,3,"unbound-path-variable is available, has diverged fidelity, and is ineligible for assurance.",[]],["unchangedKeys",6,1,6,0,0,0,"unchangedKeys is available, has conforms fidelity, and is eligible for assurance.",[]],["union",11,1,6,0,0,0,"union is available, has conforms fidelity, and is eligible for assurance.",[]],["union",6,1,6,0,0,0,"union is available, has conforms fidelity, and is eligible for assurance.",[]],["UnionToIntersection",0,0,0,0,1,1,"UnionToIntersection is available, has no applicable behavior claim, and has no assurance classification.",[]],["unknown-variable",14,1,6,0,4,3,"unknown-variable is available, has diverged fidelity, and is ineligible for assurance.",[]],["unlink",2,2,2,0,0,0,"unlink is available, has conforms fidelity, and is eligible for assurance.",[]],["Unsubscribe",13,6,12,0,1,1,"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.",[]],["Unsubscribe",2,2,2,0,1,1,"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.",[]],["Unsubscribe",0,0,0,0,1,1,"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.",[]],["Unsubscribe",23,15,11,0,1,1,"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.",[]],["Unsubscribe",15,8,13,0,1,1,"Unsubscribe is available, has no applicable behavior claim, and has no assurance classification.",[]],["unsubscribeFromTopic",12,5,11,0,0,0,"unsubscribeFromTopic is available, has conforms fidelity, and is eligible for assurance.",[]],["unsupportedBuiltins",11,1,6,0,0,0,"unsupportedBuiltins is available, has conforms fidelity, and is eligible for assurance.",[]],["update",3,1,3,0,0,0,"update is available, has conforms fidelity, and is eligible for assurance.",[]],["update",4,1,4,0,0,0,"update is available, has conforms fidelity, and is eligible for assurance.",[]],["update",15,8,13,0,0,0,"update is available, has conforms fidelity, and is eligible for assurance.",[]],["update",17,1,15,0,0,0,"update is available, has conforms fidelity, and is eligible for assurance.",[]],["updateChildren",9,1,9,0,0,0,"updateChildren is available, has conforms fidelity, and is eligible for assurance.",[]],["updateChildValues",18,1,16,0,0,0,"updateChildValues is available, has conforms fidelity, and is eligible for assurance.",[]],["updateCurrentUser",2,2,2,0,0,0,"updateCurrentUser is available, has conforms fidelity, and is eligible for assurance.",[]],["UpdateData",0,0,0,0,1,1,"UpdateData is available, has no applicable behavior claim, and has no assurance classification.",[]],["updateData",5,1,5,0,0,0,"updateData is available, has conforms fidelity, and is eligible for assurance.",[]],["updateDoc",0,0,0,0,0,0,"updateDoc is available, has conforms fidelity, and is eligible for assurance.",[]],["updateEmail",2,2,2,0,4,2,"updateEmail is available, has diverged fidelity, and is qualified for assurance.",[362,363]],["updateEmail",7,1,7,0,0,0,"updateEmail is available, has conforms fidelity, and is eligible for assurance.",[]],["updateMetadata",19,10,14,0,5,3,"updateMetadata is available, has unsupported fidelity, and is ineligible for assurance.",[364,365,163,164,165,166]],["updatePassword",2,2,2,0,0,0,"updatePassword is available, has conforms fidelity, and is eligible for assurance.",[]],["updatePassword",7,1,7,0,0,0,"updatePassword is available, has conforms fidelity, and is eligible for assurance.",[]],["updatePhoneNumber",2,2,2,3,1,1,"updatePhoneNumber is deferred; behavior fidelity and assurance are not applicable until the surface exists.",[366]],["updateProfile",2,2,2,0,0,0,"updateProfile is available, has conforms fidelity, and is eligible for assurance.",[]],["updateProfile",7,1,7,0,0,0,"updateProfile is available, has conforms fidelity, and is eligible for assurance.",[]],["updateProfile",1,1,1,0,0,0,"updateProfile is available, has conforms fidelity, and is eligible for assurance.",[]],["updateProfile",8,1,8,0,0,0,"updateProfile is available, has conforms fidelity, and is eligible for assurance.",[]],["uploadBytes",19,10,14,0,0,0,"uploadBytes is available, has conforms fidelity, and is eligible for assurance.",[]],["uploadBytesResumable",19,10,14,0,4,2,"uploadBytesResumable is available, has diverged fidelity, and is qualified for assurance.",[367,368,369,370,371,372,373,374,167,168]],["UploadMetadata",19,10,14,1,1,1,"UploadMetadata is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["UploadResult",19,10,14,0,1,1,"UploadResult is available, has no applicable behavior claim, and has no assurance classification.",[]],["uploadString",19,10,14,0,4,2,"uploadString is available, has diverged fidelity, and is qualified for assurance.",[375,376]],["UploadTask",19,10,14,0,1,1,"UploadTask is available, has no applicable behavior claim, and has no assurance classification.",[]],["UploadTaskSnapshot",19,10,14,0,1,1,"UploadTaskSnapshot is available, has no applicable behavior claim, and has no assurance classification.",[]],["upper",6,1,6,0,0,0,"upper is available, has conforms fidelity, and is eligible for assurance.",[]],["URLContext",10,3,10,0,1,1,"URLContext is available, has no applicable behavior claim, and has no assurance classification.",[]],["URLContextMetadata",10,3,10,0,1,1,"URLContextMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["URLContextTool",10,3,10,0,1,1,"URLContextTool is available, has no applicable behavior claim, and has no assurance classification.",[]],["URLMetadata",10,3,10,0,1,1,"URLMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["URLRetrievalStatus",10,3,10,0,1,1,"URLRetrievalStatus is available, has no applicable behavior claim, and has no assurance classification.",[]],["UsageMetadata",10,3,10,0,1,1,"UsageMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["useAuthEmulator",7,1,7,0,0,0,"useAuthEmulator is available, has conforms fidelity, and is eligible for assurance.",[]],["useDeviceLanguage",2,2,2,0,4,2,"useDeviceLanguage is available, has diverged fidelity, and is qualified for assurance.",[377,378]],["useEmulator",8,1,8,0,0,0,"useEmulator is available, has conforms fidelity, and is eligible for assurance.",[]],["useEmulator",5,1,5,0,0,0,"useEmulator is available, has conforms fidelity, and is eligible for assurance.",[]],["User",2,2,2,0,3,3,"User is available, has bug fidelity, and is ineligible for assurance.",[379,380,381,382,383,384]],["userChanges",7,1,7,0,0,0,"userChanges is available, has conforms fidelity, and is eligible for assurance.",[]],["UserCredential",2,2,2,0,1,1,"UserCredential is available, has no applicable behavior claim, and has no assurance classification.",[]],["UserCredential",7,1,7,0,0,0,"UserCredential is available, has conforms fidelity, and is eligible for assurance.",[]],["UserInfo",2,2,2,0,1,1,"UserInfo is available, has no applicable behavior claim, and has no assurance classification.",[]],["userInfo",8,1,8,0,0,0,"userInfo is available, has conforms fidelity, and is eligible for assurance.",[]],["UserMetadata",2,2,2,1,1,1,"UserMetadata is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["UserProfile",2,2,2,1,1,1,"UserProfile is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["userProfileChangeRequest",1,1,1,0,0,0,"userProfileChangeRequest is available, has conforms fidelity, and is eligible for assurance.",[]],["validatePassword",2,2,2,0,0,0,"validatePassword is available, has conforms fidelity, and is eligible for assurance.",[]],["valueStream",18,1,16,0,0,0,"valueStream is available, has conforms fidelity, and is eligible for assurance.",[]],["vector",0,0,0,0,0,0,"vector is available, has conforms fidelity, and is eligible for assurance.",[]],["vector",5,1,5,0,0,0,"vector is available, has conforms fidelity, and is eligible for assurance.",[]],["VectorValue",0,0,0,0,0,0,"VectorValue is available, has conforms fidelity, and is eligible for assurance.",[]],["verifyBeforeUpdateEmail",2,2,2,0,0,0,"verifyBeforeUpdateEmail is available, has conforms fidelity, and is eligible for assurance.",[]],["verifyPasswordResetCode",2,2,2,0,0,0,"verifyPasswordResetCode is available, has conforms fidelity, and is eligible for assurance.",[]],["verifyToken",20,11,12,0,3,3,"verifyToken is available, has bug fidelity, and is ineligible for assurance.",[385,386,387,388,389,390,391,392,35,36,37,38,393,394]],["VertexAIBackend",10,3,10,0,0,0,"VertexAIBackend is available, has conforms fidelity, and is eligible for assurance.",[]],["VideoMetadata",10,3,10,0,1,1,"VideoMetadata is available, has no applicable behavior claim, and has no assurance classification.",[]],["VoiceConfig",10,3,10,1,1,1,"VoiceConfig is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["waitForPendingWrites",0,0,0,0,0,0,"waitForPendingWrites is available, has conforms fidelity, and is eligible for assurance.",[]],["waitForPendingWrites",3,1,3,0,2,2,"waitForPendingWrites is available, has unverified fidelity, and is qualified for assurance.",[395,22]],["waitForPendingWrites",4,1,4,0,2,2,"waitForPendingWrites is available, has unverified fidelity, and is qualified for assurance.",[395,23]],["waitForPendingWrites",5,1,5,0,2,2,"waitForPendingWrites is available, has unverified fidelity, and is qualified for assurance.",[396,1]],["WebAttribution",10,3,10,1,1,1,"WebAttribution is unavailable; behavior fidelity and assurance are not applicable until the surface exists.",[4]],["WebGroundingChunk",10,3,10,0,1,1,"WebGroundingChunk is available, has no applicable behavior claim, and has no assurance classification.",[]],["WebpushConfig",12,5,11,0,0,0,"WebpushConfig is available, has conforms fidelity, and is eligible for assurance.",[]],["WebpushFcmOptions",12,5,11,0,0,0,"WebpushFcmOptions is available, has conforms fidelity, and is eligible for assurance.",[]],["where",0,0,0,0,3,3,"where is available, has bug fidelity, and is ineligible for assurance.",[267,268]],["where",3,1,3,0,0,0,"where is available, has conforms fidelity, and is eligible for assurance.",[]],["where",4,1,4,0,0,0,"where is available, has conforms fidelity, and is eligible for assurance.",[]],["whereArrayContains",4,1,4,0,0,0,"whereArrayContains is available, has conforms fidelity, and is eligible for assurance.",[]],["whereArrayContainsAny",4,1,4,0,0,0,"whereArrayContainsAny is available, has conforms fidelity, and is eligible for assurance.",[]],["whereEqualTo",4,1,4,0,0,0,"whereEqualTo is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldArrayContains",5,1,5,0,0,0,"whereFieldArrayContains is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldArrayContainsAny",5,1,5,0,0,0,"whereFieldArrayContainsAny is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldEqualTo",5,1,5,0,0,0,"whereFieldEqualTo is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldGreaterThan",5,1,5,0,0,0,"whereFieldGreaterThan is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldGreaterThanOrEqualTo",5,1,5,0,0,0,"whereFieldGreaterThanOrEqualTo is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldIn",5,1,5,0,0,0,"whereFieldIn is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldLessThan",5,1,5,0,0,0,"whereFieldLessThan is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldLessThanOrEqualTo",5,1,5,0,0,0,"whereFieldLessThanOrEqualTo is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldNotEqualTo",5,1,5,0,0,0,"whereFieldNotEqualTo is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFieldNotIn",5,1,5,0,0,0,"whereFieldNotIn is available, has conforms fidelity, and is eligible for assurance.",[]],["whereFilter",5,1,5,0,0,0,"whereFilter is available, has conforms fidelity, and is eligible for assurance.",[]],["WhereFilterOp",0,0,0,0,1,1,"WhereFilterOp is available, has no applicable behavior claim, and has no assurance classification.",[]],["whereGreaterThan",4,1,4,0,0,0,"whereGreaterThan is available, has conforms fidelity, and is eligible for assurance.",[]],["whereIn",3,1,3,0,0,0,"whereIn is available, has conforms fidelity, and is eligible for assurance.",[]],["whereIn",4,1,4,0,0,0,"whereIn is available, has conforms fidelity, and is eligible for assurance.",[]],["whereLessThan",4,1,4,0,0,0,"whereLessThan is available, has conforms fidelity, and is eligible for assurance.",[]],["whereNotEqualTo",4,1,4,0,0,0,"whereNotEqualTo is available, has conforms fidelity, and is eligible for assurance.",[]],["whereNotIn",3,1,3,0,0,0,"whereNotIn is available, has conforms fidelity, and is eligible for assurance.",[]],["whereNotIn",4,1,4,0,0,0,"whereNotIn is available, has conforms fidelity, and is eligible for assurance.",[]],["withConverter",0,1,0,0,0,0,"withConverter is available, has conforms fidelity, and is eligible for assurance.",[]],["WithFieldValue",0,0,0,0,1,1,"WithFieldValue is available, has no applicable behavior claim, and has no assurance classification.",[]],["WriteBatch",0,0,0,0,0,0,"WriteBatch is available, has conforms fidelity, and is eligible for assurance.",[]],["writeBatch",0,0,0,0,0,0,"writeBatch is available, has conforms fidelity, and is eligible for assurance.",[]],["writeBatch",3,1,3,0,0,0,"writeBatch is available, has conforms fidelity, and is eligible for assurance.",[]]];
18
+ export const CONFORMANCE_SUPPORTS: readonly BrowserFeatureSupport[] = SUPPORT_ROWS.map(
19
+ ([feature, surface, importPaths, evidenceSlug, availability, fidelity, assurance, summary, caveats]) => ({
20
+ feature,
21
+ surface: SURFACES[surface]!,
22
+ importPaths: [...IMPORT_PATHS[importPaths]!],
23
+ evidenceSlug: EVIDENCE_SLUGS[evidenceSlug]!,
24
+ availability: AVAILABILITY_VALUES[availability]!,
25
+ fidelity: FIDELITY_VALUES[fidelity]!,
26
+ assurance: ASSURANCE_VALUES[assurance]!,
27
+ summary,
28
+ caveats: caveats.map((index) => CAVEAT_TEXT[index]!),
29
+ }),
30
+ );
12
31
 
13
32
  export interface QueryableFeatureSupport {
14
33
  feature: string;