docs(research): record POC-3 outcome — phase 0 gates all pass
- pocs.md: POC-3 marked complete/proceed with result summary; sequencing status updated - alk-stack.md: verify item 2 (HTTP smart protocol shape) resolved, pointing at poc3-findings.md
This commit is contained in:
1 parent
8ef833430e
commit
70815e22a0
2 files changed
+18
-2
No files matched your search
@@ -87,6 +87,13 @@ door produced the stream.
|
|||||||
2. **HTTP smart protocol shape**: confirm alkhttp's streaming response body
|
2. **HTTP smart protocol shape**: confirm alkhttp's streaming response body
|
||||||
can carry a pack (chunked) and that request bodies stream in without
|
can carry a pack (chunked) and that request bodies stream in without
|
||||||
buffering the whole POST in memory (receive-pack can be gigabytes).
|
buffering the whole POST in memory (receive-pack can be gigabytes).
|
||||||
|
**Verified (POC-3, 2026-09-21)**: real git 2.43 clones/fetches
|
||||||
|
fsck-clean over `Connection → HttpAdapter → axum custom routes`;
|
||||||
|
request bodies stream (`BodyDataStream`, one hyper-read chunk per
|
||||||
|
`poll_next` — measured with a dribble probe and git's forced-chunked
|
||||||
|
POST path); pack responses stream under back pressure (bounded mpsc →
|
||||||
|
`Body::from_stream`, O(counts) RSS on a 60k-object clone). See
|
||||||
|
`poc3-findings.md`.
|
||||||
3. **alkcall backpressure/limits vs git sessions**: large clones are
|
3. **alkcall backpressure/limits vs git sessions**: large clones are
|
||||||
long-lived, high-throughput, single-direction streams; confirm channels
|
long-lived, high-throughput, single-direction streams; confirm channels
|
||||||
buffer limits (ADR-040) don't fight pack streaming, or route git sessions
|
buffer limits (ADR-040) don't fight pack streaming, or route git sessions
|
||||||
|
|||||||
+11
-2
@@ -81,6 +81,15 @@ whole pack in memory for large repos — record memory behavior for a
|
|||||||
|
|
||||||
## POC-3: smart-http shape through alkhttp
|
## POC-3: smart-http shape through alkhttp
|
||||||
|
|
||||||
|
**Status**: complete (2026-09-21) — **proceed**. See `poc3-findings.md`.
|
||||||
|
Real git 2.43 clones/fetches/tag-checkouts over `http://` through the full
|
||||||
|
alkcall → alkhttp path (`Connection::from_bidi(http/1.1)` → `HttpAdapter`
|
||||||
|
→ axum custom routes); request bodies stream (measured via dribble probe +
|
||||||
|
git's forced-chunked path), pack responses stream under back pressure with
|
||||||
|
O(counts) memory on a 60k-object clone. Key protocol correction: http V2
|
||||||
|
responses end at the flush — the `0002` response-end pkt is synthesized by
|
||||||
|
the client's transport helper, never sent on the wire.
|
||||||
|
|
||||||
**Hypothesis**: alkhttp can serve `GET /info/refs` and stream a POST body
|
**Hypothesis**: alkhttp can serve `GET /info/refs` and stream a POST body
|
||||||
(ingest without full buffering) for `git-receive-pack`.
|
(ingest without full buffering) for `git-receive-pack`.
|
||||||
|
|
||||||
@@ -99,8 +108,8 @@ POC-1 first (the BiStream/packetline fit is the load-bearing assumption).
|
|||||||
POC-2 next (the crux of fetch). POC-3 last (http shape). Each POC updates
|
POC-2 next (the crux of fetch). POC-3 last (http shape). Each POC updates
|
||||||
the corresponding research doc with results and a proceed/pivot/block note.
|
the corresponding research doc with results and a proceed/pivot/block note.
|
||||||
|
|
||||||
**Status**: POC-1 and POC-2 complete and proceed; POC-3 is the remaining
|
**Status**: POC-1, POC-2, and POC-3 complete and proceed — phase 0 gates
|
||||||
gate for phase 0 completion.
|
all pass.
|
||||||
|
|
||||||
## Modes applied to these POCs
|
## Modes applied to these POCs
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user