Compact Flow-scoped Blob refs and make ASYNC input snapshots opt in - #480
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
longquanzheng
force-pushed
the
codex/contextual-blob-references
branch
from
September 16, 2026 00:16
5a127cb to
6ac5c0a
Compare
longquanzheng
marked this pull request as ready for review
September 16, 2026 04:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
p1|260913/ab3de7kp2xEncodedObjectin Object Blobs, removing the encoding suffix from referencesBlob reference and storage behavior
<storageId>|<YYMMDD>/<objectId>; their Value arms distinguish the types.<namespace>/<YYMMDD>$<base64url(flowId)>/<objectId>with no version directory.EncodedObject, includingjson,raw, or custom encoding metadata.blobStore.thresholdInBytesdefaults to 100: payloads through 100 bytes stay inline and payloads from 101 bytes are offloaded.blobStore.objectIdLengthdefaults to 10. Zero selects the default, negative values are rejected, and any positive value is accepted. Lengths above 50 add leading zero padding after the full SHA-256 value is represented.LoadBlobscarries the owning Flow ID per entry, and SDK caches key entries by Flow ID plus Blob reference.ASYNC Step input snapshots
blobStore.asyncStepInputSnapshotsEnableddefaults tofalse. When disabled, successful ASYNC local Step invocations do not write separate semantic-history input snapshots. This does not affect Step execution, retries, fallback, or Flow recovery.When a snapshot is unavailable, semantic history returns
input.unavailable=true. Dex Web explains that ASYNC snapshots are disabled by default, identifiesblobStore.asyncStepInputSnapshotsEnabled, and distinguishes a missing whole-method snapshot from an unavailable individual Value Blob. Terminal ASYNC failures that exhaust their short retry policy before regular fallback retain their more specific explanation.SYNC method inputs and ASYNC regular-fallback inputs continue to come from backend history.
Breaking changes
The project is pre-launch, so this directly replaces the previous wire and storage formats. There is no compatibility parser, dual read, migration shim, manifest,
/v2/prefix, encoding suffix, eight-digit date, or old reference support.Public APIs continue to reject client-supplied internal Blob references.
Validation