Skip to content

fix(f117): restore unified delivery with Redis array preservation - #223

Merged
mindfn merged 2 commits into
develop_basefrom
fix/f117-redis-request-targets
Oct 10, 2026
Merged

mindfn merged 2 commits into
develop_basefrom
fix/f117-redis-request-targets

Conversation

@mindfn

@mindfn mindfn commented Oct 10, 2026

Copy link
Copy Markdown
Owner

After #222, messages without an explicit target could remain queued, and Steer could return an internal error. Redis cjson encoded an empty payload.requestedTargetCats array as {} during ledger transitions; hydration then rejected the row, including already-claimed rows.

This PR restores #222 after its emergency revert and fixes all six Redis row mutation paths using a shared encoder. The reader accepts the specific empty-object artifact left by the earlier writer while continuing to reject malformed nonempty objects and other invalid types. Existing target, policy, permission and message-ID semantics remain intact.

Two commits separate the previously reviewed #222 implementation from the new Redis correction. The fork retains the #221 CI-plugin baseline. Production storage has not been deleted or repaired; no runtime restart has been performed by the agent.

Validation: the original owned-Redis reproduction failed 4/5 before the fix; API build and 229 targeted tests pass afterward, including claim, prefix claim, restore, commit, reconcile, expansion, replay and legacy-row reads. No process logs or reproduction copies are added to the product diff.

Draft: the new Redis correction still requires independent review and the operator’s runtime verification. After merge, synchronize/build the runtime checkout before the operator restarts it. Upstream zts212653#1398 remains Draft pending renewed acceptance.

Source: 90ef6e418a5e4799835e7fe3c75f2f693efdfc38; fork publication HEAD: 3563a79060a0917e0803349b562b0aa2d15292fa. Normalizing the existing fork-only baseline produces the exact validated source tree.

Why: Restore the reviewed #222 delivery implementation after its emergency rollback; the following commit repairs its Redis empty-array regression before runtime activation.
Why: Redis cjson turns empty requestedTargetCats arrays into objects during row transitions, breaking automatic drain and Steer. Normalize all six row writers and recognize the existing empty-object artifact on read.

Source: 90ef6e418a5e4799835e7fe3c75f2f693efdfc38
Validation: owned Redis red reproduction, API build, 229 targeted tests passing. Independent review pending.
@mindfn
mindfn marked this pull request as ready for review October 10, 2026 13:55
@mindfn
mindfn merged commit b5f62c9 into develop_base Oct 10, 2026
mindfn added a commit that referenced this pull request Oct 10, 2026
mindfn added a commit that referenced this pull request Oct 10, 2026
…very

Why: restore the reviewed common send and drain after the #222/#223 rollback, correcting Redis empty target encoding and preserving guidance until the exact native parent dispatcher is ready. Add composed Redis and HTTP Steer regression coverage.

Source: fd09784d3f4aea51b365258251639badbab90a9e
Source-tree: 6babe29
Fork-base: c29dba7
Fork-only #221 plugin changes and pre-existing evidence retained.
Runtime acceptance and soak remain pending; no process or storage changes.
mindfn added a commit that referenced this pull request Oct 11, 2026
…very (#224)

Why: restore the reviewed common send and drain after the #222/#223 rollback, correcting Redis empty target encoding and preserving guidance until the exact native parent dispatcher is ready. Add composed Redis and HTTP Steer regression coverage.

Source: fd09784d3f4aea51b365258251639badbab90a9e
Source-tree: 6babe29
Fork-base: c29dba7
Fork-only #221 plugin changes and pre-existing evidence retained.
Runtime acceptance and soak remain pending; no process or storage changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant