RUNBRIDGEAG-UI / SDK MIGRATION
RUNBRIDGE / FIELD NOTES / 0.0.59 → 1.0.2

A missing field and a null value are different changes.

Follow the field from captured wire input to the subscriber record. A value missing before capture cannot be blamed on the client.

Reviewed October 15, 2026 · Pinned npm clients 0.0.59 and 1.0.2 · Original local fixtures

Move an observed custom field deliberately

Our metadata fixture contains attemptRef: "attempt-demo-7" at the root of a step event. It also already has metadata.caseId and metadata.optionalNote: null. The measured modern output loses the root field and emits a diagnostic; the legacy output retains it.

↓ Reproduce the custom-field case

The proposed patch is offered only when event correspondence and the observed SDK diagnostic support that root-field loss. It clones the input, moves the value into metadata and refuses a collision with an existing key. It does not overwrite metadata that is null, an array or a different value.

// The corresponding application change is still yours.
// Before: event.attemptRef
// After:  event.metadata?.attemptRef

This follows the official extension channel, but a subscriber-reading change cannot be performed by editing a captured event. AG-UI migration guidance.

Do not recursively delete null

The second fixture includes snapshot.email: null, TOOL_CALL_START.parentMessageId: null and RUN_FINISHED.outcome: null. In our pinned runs, both clients preserve the state value and omit the two optional fields. The measured difference is two warnings in 1.0.2.

↓ Reproduce optional null versus application null

The patcher supports only those two demonstrated whole-field cases. It leaves nested state and metadata values alone. Other optional-null shapes may need a separate application change; absence of a proposed patch is not evidence that the capture is conformant.

Expected after review: both runs resolve, the two targeted warnings disappear, and final state still contains email: null. A patch that turns it into an absent field is not the same result.

Keep a reproducible comparison

Inspect the actual wire input as well as subscriber events before exporting. The ZIP retains the original capture, selected plan, exact branch inputs and both outputs. It contains unredacted data, so review it before sharing. The replay guide explains the files and why generated IDs are normalized only in the comparison.