Firebase Functions RTDB integration compatibility
This page tracks an integration contract: unchanged Firebase code run through a Pyric runtime seam, so there is no separate Firebase public API to measure. The rows below are its signed behavior inventory.
Status legend
Conforming — unchanged source matches production under replay
Unverified — production target or local replay is incomplete
onValueCreated delivery and event contract
onValueCreated(ref, handler)A write that changes an exact matched RTDB location from absent to present invokes the handler once with a create CloudEvent and a DataSnapshot containing the created value.
oracle:
functions-rtdb-onvaluecreated-exact-create.json (firebase-functions 7.2.5); production exact-create behavior. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#1.onValueCreated(ref, handler)After the initial create delivery, changing or deleting that same matched value does not invoke an onValueCreated handler.
oracle:
functions-rtdb-onvaluecreated-exact-create.json; update/delete produced no additional delivery in the bounded production scenario. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#2.onValueCreated(ref, handler)A value that already exists when the trigger is deployed does not produce a historical create delivery.
oracle:
functions-rtdb-onvaluecreated-startup-existing.json; pre-seeded value, zero delivery in the observation window. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#3.onValueCreated(ref, handler)A named single-segment wildcard matches a created child and exposes the matched segment through event.params.
oracle:
functions-rtdb-onvaluecreated-wildcard-batches.json; production populated caseId and itemId. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#4.onValueCreated(ref, handler)Creating an ancestor object invokes the wildcard handler once for each newly-present matching descendant.
oracle:
functions-rtdb-onvaluecreated-wildcard-batches.json; one ancestor set delivered alpha and beta. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#5.onValueCreated(ref, handler)When an ancestor write creates an exact matched descendant, the event snapshot is projected to that descendant rather than the ancestor object.
oracle:
functions-rtdb-onvaluecreated-descendant-projection.json; leaf snapshot excluded its sibling. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#6.onValueCreated(ref, handler)One multi-location update that creates multiple wildcard-matched children produces one create delivery for each child.
oracle:
functions-rtdb-onvaluecreated-wildcard-batches.json; one update delivered delta and gamma. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#7.DatabaseEvent.dataThe delivered DataSnapshot exposes the created value, key, existence, JSON projection, child lookup, child count, and child enumeration.
oracle:
functions-rtdb-onvaluecreated-exact-create.json; frozen val/key/exists/toJSON/child enumeration shape. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#8.DatabaseEvent.data.refThe snapshot ref is an Admin DatabaseReference rooted at the matched path and can perform an awaited write from the handler.
oracle:
functions-rtdb-onvaluecreated-exact-create.json; matched Admin ref completed the awaited sibling write. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#9.DatabaseEvent.authType / authIdFor the production Admin SDK write, the event exposes authType unknown and authId null.
oracle:
functions-rtdb-onvaluecreated-exact-create.json. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#10.onValueCreated(ref, async handler)A Promise returned by the handler keeps the execution open through delayed asynchronous work and its awaited Admin write.
oracle:
functions-rtdb-onvaluecreated-exact-create.json; capture logged only after the delayed Admin write completed. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#11.onValueCreated(ref, handler)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.onValueCreated(ref, handler)Sequential creates are all delivered; their observed arrival order is evidence, not an ordering guarantee.
oracle:
functions-rtdb-onvaluecreated-wildcard-batches.json; all three arrived in observed order 2, 1, 3. Local replay: packages/cli/test/functions-rtdb/oracle-conformance.test.ts assertion set functions-rtdb#13.Current gaps
Unverified
Tracked behavior whose available evidence does not yet establish the production result.
onValueCreated(ref, handler)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.