Repository navigation
Conversation
casselc
merged commit Sep 5, 2026
dcb3016
into
codex/cooperative-aspect-annotations-current
2 of 4 checks passed
This was referenced Sep 5, 2026
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.
Emit one last chunk for an empty known-length body
Summary
Make
jolt.http.body/chunk-writeremit exactly one HTTP last-chunk when anexplicitly chunked, known-length response body has length zero.
The ordinary three-stage writer emits a chunk header, body, chunk terminator,
and final last-chunk. At length zero, the chunk header and its following CRLF
already form a last-chunk, so continuing to the normal terminator emits a second
one. RFC 9112 permits exactly one last-chunk before the trailer section.
Fix
Use the existing five-byte
empty-chunkwriter for length zero. Positive bodylengths retain the existing partial-buffer state machine unchanged.
Add a deterministic regression that checks output capacities 1 through 5, so
the last-chunk must remain exact across every partial-copy boundary. Correct the
existing generated property's zero-length oracle, which previously repeated the
implementation's faulty header/body/end formula, and retain the independent
HTTP response decoder property.
Red to green evidence
Base:
casselc/jolt-http@fb596ea1a7d1899fd437d21c9da4fbfab0e436a2The deterministic test fails on the unchanged base at every capacity with ten
wire bytes instead of five. After the fix, that test and both chunk-writer
properties pass.
Validation
PASS
failures
Provenance
Tracked as
jolt-aspect-packs#80.
The reproducer and fix require no aspect compiler or instrumentation.
CI propagation repair
The first hosted run exposed a stale compiler pin rather than a body-framing failure. Both POSIX jobs used
c666a2d0175923cb7edeb36fb99c7e2c657af375, which predates the Jolt 0.8 scalarjolt.ffi/writecall shape required by the already-pinned transport graph. The suite consequently produced cascading wrong-arity failures across both platforms before exercising the PR honestly.The workflow now performs a full-history checkout of canonical aspect compiler
73b801e73e6441a2912fbc9ce22c529bd226c6f1and fails closed unless its provenance lock derivesjolt v0.8.1-34-g73b801e7. That compiler tip independently passed its tests, flake, and aspect-provenance workflows. Production HTTP and transport code are unchanged by this follow-up.Updated exact head:
739728c929da6e4fd2715b6b393b9cce6d0ad2d0Validation before push:
actionlint: passv0.8.1-34-g73b801e7