You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v6.5.7: Reuse bounded Git sessions for small streaming reads #115
Small bounded payloads requested through the streaming persistence contract reuse the repository-scoped git cat-file --batch-command session. Large payloads retain the existing genuine streaming path. This removes process-per-patch startup from downstream git-warp and Think reads without changing the public API, object identity, manifests, refs, or retention policy.
Current truth
GitPersistenceAdapter.readBlob() already uses the persistent cat-file session. [cite: src/infrastructure/adapters/GitPersistenceAdapter.js#185-223@00661b07271d8ca7166c0b62beeb1408d72a3706]
GitPersistenceAdapter.readBlobStream() always delegates to one-shot executeStream(["cat-file", "blob", oid]). [cite: src/infrastructure/adapters/GitPersistenceAdapter.js#238-245@00661b07271d8ca7166c0b62beeb1408d72a3706]
Asset restore prefers readBlobStream() and buffers each verified chunk before returning it. [cite: src/domain/services/ChunkRepository.js#97-167@00661b07271d8ca7166c0b62beeb1408d72a3706]
A fresh 6.5.6 process census observed 12 repeated readBlob() calls opening one persistent session, while 12 repeated readBlobStream() calls launched 12 one-shot streams.
Repeated small readBlobStream() calls use one persistent cat-file child, not one child per blob.
An object above the configured bound remains on the streamed one-shot path and is not buffered.
Content, chunk integrity, SHA-1/SHA-256 behavior, and error contracts remain identical.
Adapter close leaves no active session or stream.
Full release verification passes across Node, Bun, and Deno.
Release gate impact
This is an externally meaningful performance correction and requires a v6.5.7 changelog/release note, durable process-count witness, full release verification, npm provenance, signed tag, and downstream git-warp consumer checkpoint.
v6.5.7 is shipped and independently verified. Implementation PR #116 merged normally as 1e30740; release PR #117 merged normally as eebc6e3. Signed tag v6.5.7 (tag object 74ce49dc415365b966b39bf6d2a8a0e2e0d9b846) peels to that release merge. Release workflow 32637934268 published npm latest 6.5.7 with publish and SLSA attestations plus the final GitHub Release. A clean-room npm install reported CLI 6.5.7+eebc6e3. Publication-truth PR #118 merged normally as cc5028a, and post-merge main CI run 32639019898 passed lint, unit, and Node/Bun/Deno integration matrices. The next publication gate is downstream: git-warp consumes v6.5.7 and reruns its process census before Think upgrades both dependencies.
Release milestone
v6.5.7Outcome
Small bounded payloads requested through the streaming persistence contract reuse the repository-scoped
git cat-file --batch-commandsession. Large payloads retain the existing genuine streaming path. This removes process-per-patch startup from downstream git-warp and Think reads without changing the public API, object identity, manifests, refs, or retention policy.Current truth
GitPersistenceAdapter.readBlob()already uses the persistent cat-file session. [cite:src/infrastructure/adapters/GitPersistenceAdapter.js#185-223@00661b07271d8ca7166c0b62beeb1408d72a3706]GitPersistenceAdapter.readBlobStream()always delegates to one-shotexecuteStream(["cat-file", "blob", oid]). [cite:src/infrastructure/adapters/GitPersistenceAdapter.js#238-245@00661b07271d8ca7166c0b62beeb1408d72a3706]readBlobStream()and buffers each verified chunk before returning it. [cite:src/domain/services/ChunkRepository.js#97-167@00661b07271d8ca7166c0b62beeb1408d72a3706]readBlob()calls opening one persistent session, while 12 repeatedreadBlobStream()calls launched 12 one-shot streams.Scope
Out of scope
Slices
Design doc
docs/design/0058-bounded-stream-session-reads/bounded-stream-session-reads.mdRequired proof
readBlobStream()calls use one persistent cat-file child, not one child per blob.Release gate impact
This is an externally meaningful performance correction and requires a v6.5.7 changelog/release note, durable process-count witness, full release verification, npm provenance, signed tag, and downstream git-warp consumer checkpoint.