Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
4aee3ae
Better Engine
st0o0 Mar 30, 2026
3a31d43
TASK-021-001: Add ExpectContinue and Edge Case Routes to Routes.cs
st0o0 Mar 30, 2026
e114fc4
TASK-021-005: Add HTTP/2 connection and multiplexing integration tests
st0o0 Mar 30, 2026
d98eda4
TASK-021-006: TLS Uniform Coverage Part 1 (Compression + Cookie + Red…
st0o0 Mar 30, 2026
ce8ad3b
TASK-021-007: TLS Uniform Coverage Part 2 (Cache + ErrorHandling + Co…
st0o0 Mar 30, 2026
e285073
# TASK-021-008: ExpectContinue Integration Tests (All Versions)
st0o0 Mar 30, 2026
cabdad5
TASK-021-009: Edge Case Integration Tests (Per Version)
st0o0 Mar 30, 2026
f87bbb5
# TASK-021-010: Concurrency and Stress Tests (Per Version)
st0o0 Mar 30, 2026
b72a509
fix Docs
st0o0 Mar 30, 2026
1958eaa
TASK-023-001: Builder extensions + resilience/compression server routes
st0o0 Mar 30, 2026
73993f4
# TASK-023-002: Feature Interaction Tests – HTTP/1.1
st0o0 Mar 30, 2026
0282622
# TASK-023-003: Feature Interaction Tests – H10 + H2 + TLS
st0o0 Mar 30, 2026
c5b07fb
# TASK-023-004: Resilience Tests – HTTP/1.1 (Reference Implementation)
st0o0 Mar 30, 2026
15bc797
# TASK-023-005: Resilience Tests – H10 + H2 + TLS
st0o0 Mar 30, 2026
57556fa
# TASK-023-006: Request Compression Tests – HTTP/1.1 (Reference Imple…
st0o0 Mar 30, 2026
99c1bb5
# TASK-023-007: Request Compression Tests – H10 + H2 + TLS
st0o0 Mar 30, 2026
980eeef
# TASK-023-008: Custom Handler Pipeline Tests – H11 + H2
st0o0 Mar 30, 2026
73f9690
TASK-023-009: Verification Gate
st0o0 Mar 31, 2026
54f02df
Fix Tests
st0o0 Mar 31, 2026
1291185
TASK-038-001: Fix RedirectBidiStage — Transaction Guard + _inFlightCo…
st0o0 Mar 31, 2026
8a56acd
TASK-038-002: Rewrite Http1XCorrelationStage — Strict One-Request-In-…
st0o0 Mar 31, 2026
ccc5237
TASK-038-003: Verify and mark completion of dead InReset wiring removal
st0o0 Mar 31, 2026
1f26e84
TASK-038-004: Add Http1XCorrelation Back-Pressure Stream Tests
st0o0 Mar 31, 2026
dd7dcde
TASK-038-005: Verification Gate — Feature 038 Complete and Green
st0o0 Apr 1, 2026
ccd13a0
TASK-024-001: Create Shared Benchmark Infrastructure
st0o0 Apr 1, 2026
a030474
TASK-024-002: Set Up Minimal Kestrel Test Server
st0o0 Apr 1, 2026
38d9f28
TASK-024-003: Implement HttpClient Benchmarks
st0o0 Apr 1, 2026
5a1f173
TASK-024-004: Implement TurboHttp Benchmarks
st0o0 Apr 1, 2026
83a5f96
TASK-024-005: Implement BenchmarkComparisonReport markdown report gen…
st0o0 Apr 1, 2026
b9b7194
Many Perf changes
st0o0 Apr 2, 2026
e662f9f
more perf
st0o0 Apr 4, 2026
210d8fe
more perf
st0o0 Apr 4, 2026
a558035
fix namespaces
st0o0 Apr 7, 2026
56b3b59
Fixed
st0o0 Apr 7, 2026
25d9c28
Many fixes
st0o0 Apr 8, 2026
bf13997
Update docs
st0o0 Apr 8, 2026
0cf0858
quick wins
st0o0 Apr 8, 2026
e56af1d
TASK-030-001: Record BenchmarkDotNet baseline before performance fixes
st0o0 Apr 9, 2026
33bce5f
TASK-030-002: HPACK/QPACK Dynamic Table — LinkedList → List (CRITICAL)
st0o0 Apr 9, 2026
6579388
TASK-030-003: HTTP/2 Request Body — Eliminate Triple-Copy (CRITICAL)
st0o0 Apr 9, 2026
d51e259
TASK-030-004: QPACK Encoder — ArrayPool for UTF-8 Encoding (CRITICAL)
st0o0 Apr 9, 2026
d7e5582
TASK-030-005: VersionDispatchStage — Flow Caching per Version
st0o0 Apr 9, 2026
47edff8
TASK-030-006: QUIC — Remove Sequential Stream-Opening Lock (CRITICAL)
st0o0 Apr 9, 2026
d8b8f00
TASK-030-007: HTTP/2 Receive Window — Default to 1MB+
st0o0 Apr 9, 2026
8a18b44
TASK-030-008: HTTP/2 Stream State Pool — Match maxConcurrentStreams
st0o0 Apr 9, 2026
1466e7f
TASK-030-009: HPACK/QPACK — Cache UTF-8 Byte Length at Insertion
st0o0 Apr 9, 2026
d97091e
TASK-030-009: HPACK/QPACK — Cache UTF-8 Byte Length at Insertion
st0o0 Apr 9, 2026
e8d6629
TASK-030-010: HTTP/3 FrameDecoder — ArrayPool Instead of new byte[]
st0o0 Apr 9, 2026
1ebe68f
TASK-030-011: HTTP/1.0 Decoder — Eliminate Excessive ToArray()
st0o0 Apr 9, 2026
d166c26
TASK-030-012: HuffmanCodec — Span-Based Encode/Decode
st0o0 Apr 9, 2026
e9f5dfc
TASK-030-013: Batch Weight — Increase HTTP/2 Default to 256KB
st0o0 Apr 9, 2026
b053534
TASK-030-014: MemoryStream Allocations — RecyclableMemoryStreamManager
st0o0 Apr 9, 2026
5d1a09e
TASK-030-015: Per-Request Collection Allocations — ArrayPool-Backed L…
st0o0 Apr 9, 2026
46acb96
TASK-030-016: TcpConnectionStage — Eliminate Task.Run per Connection
st0o0 Apr 9, 2026
ca34315
TASK-030-017: QPACK Encoder Instruction Blocking — Remove Serialization
st0o0 Apr 9, 2026
f87e905
TASK-030-018: QpackStringCodec — Avoid Huffman Encode just for Length
st0o0 Apr 9, 2026
8e869f5
TASK-030-019: ConnectionManagerActor — Cache DateTime.UtcNow in Evict…
st0o0 Apr 9, 2026
6a01455
TASK-030-020: GroupByRequestEndpointStage — Avoid List Alloc in Remov…
st0o0 Apr 9, 2026
e08ca9e
TASK-030-021: IClientProvider — Expose Socket Buffer Size Configuration
st0o0 Apr 9, 2026
2027839
TASK-030-022: HuffmanCodec — Static Initializer Instead of volatile (…
st0o0 Apr 9, 2026
a953a29
TASK-030-023: NetworkBuffer Pool — Add Capacity Cap
st0o0 Apr 9, 2026
bd6a1bd
TASK-031-001: Create per-protocol option types and update TurboClient…
st0o0 Apr 9, 2026
07687e6
TASK-031-002: Create TransportRegistry with Fluent Builder
st0o0 Apr 9, 2026
e7e0d08
TASK-031-003: Rename VersionDispatchStage to EndpointDispatchStage
st0o0 Apr 9, 2026
fe9b2eb
TASK-031-004: Extract FeaturePipelineBuilder from Engine
st0o0 Apr 9, 2026
dff9ae9
TASK-031-005: Extract ProtocolCoreBuilder from Engine
st0o0 Apr 9, 2026
17aff8e
TASK-031-006: Rewrite Engine as Thin Orchestrator + Update Test Call …
st0o0 Apr 9, 2026
36348f4
TASK-031-007: Update ARCHITECTURE.md to reflect Engine refactoring
st0o0 Apr 9, 2026
40cda03
TASK-032-001: Introduce ConnectionState + Delete Handler Classes
st0o0 Apr 9, 2026
fedacad
TASK-032-002: Migrate HTTP/3 handler tests to Stage-Behaviour-Tests
st0o0 Apr 9, 2026
09d48c5
TASK-032-003: Delete Http3ResponseDecoder + Migrate Tests
st0o0 Apr 9, 2026
5633703
TASK-032-004: Add explicit null filter in Http30DecoderStage
st0o0 Apr 9, 2026
1ecbc30
TASK-032-005: Add Http3SettingsIdentifier constants to Http3Frame.cs
st0o0 Apr 9, 2026
43e5b6f
TASK-033-001: QpackIntegerCodec — IBufferWriter → ref Span<byte>
st0o0 Apr 9, 2026
93a2275
TASK-033-002: HuffmanCodec — Verify Span-only API (no ArrayPool overl…
st0o0 Apr 9, 2026
9841f12
TASK-033-003: QpackStringCodec — IBufferWriter + ArrayPool → ref Span…
st0o0 Apr 9, 2026
7b12696
TASK-033-004: HpackEncoder — IBufferWriter + ArrayPool → ref Span<byte>
st0o0 Apr 9, 2026
151497c
TASK-033-005: QpackEncoderInstructionWriter — IBufferWriter + ArrayPo…
st0o0 Apr 9, 2026
0233a36
TASK-033-006: QpackDecoderInstructionWriter, QpackEncoder, QpackTable…
st0o0 Apr 9, 2026
c5e314f
TASK-033-007: Http3FrameEncoder — Remove IBufferWriter overloads
st0o0 Apr 9, 2026
77d2f11
TASK-033-008: Http2RequestEncoder — ArrayBufferWriter + ArrayPool → M…
st0o0 Apr 9, 2026
39f6773
TASK-033-009: Http3RequestEncoder — MemoryStream → MemoryPool + ref S…
st0o0 Apr 9, 2026
a594ca7
TASK-033-010: Http10Decoder — ArrayPool remainder → MemoryPool
st0o0 Apr 9, 2026
7e4e2af
TASK-033-011: Http11Decoder — verify MemoryPool migration complete
st0o0 Apr 9, 2026
7f4ad90
TASK-033-012: Http3FrameDecoder + QpackInstructionDecoder — verify Me…
st0o0 Apr 9, 2026
bd1eee4
TASK-033-013: ContentEncoding — ArrayPool → Stream-based API
st0o0 Apr 9, 2026
4f05846
TASK-033-014: Streaming Stage Integration — MemoryPool migration comp…
st0o0 Apr 10, 2026
08ec24d
TASK-033-015: Final Cleanup + Verification — eliminate last stackallo…
st0o0 Apr 10, 2026
d27aed0
TASK-034-001: Introduce ITransportFactory Interface
st0o0 Apr 10, 2026
d577696
TASK-034-002: Refactor TransportRegistry to Use ITransportFactory
st0o0 Apr 10, 2026
f50ad05
TASK-034-003: Make ProtocolCoreBuilder Transport-Agnostic
st0o0 Apr 10, 2026
efc7c4e
TASK-034-004: Unify Engine to Single Overload with TransportRegistry
st0o0 Apr 10, 2026
633bf95
TASK-034-005: Register Transports in ClientStreamOwner
st0o0 Apr 10, 2026
6b3014d
TASK-034-007: Update ARCHITECTURE.md to Reflect Post-031 and Post-034…
st0o0 Apr 10, 2026
3147ed1
TASK-035-001: Rename project folders, solution, and csproj files from…
st0o0 Apr 10, 2026
3f525cb
TASK-035-002: Update solution file and csproj references for TurboHTT…
st0o0 Apr 10, 2026
16f0e48
TASK-035-003: Rename all C# namespaces and using statements from Turb…
st0o0 Apr 10, 2026
f627fd3
TASK-035-004: Update documentation files for TurboHTTP branding
st0o0 Apr 10, 2026
d46cc79
TASK-035-005: Update agent definitions for TurboHTTP branding
st0o0 Apr 10, 2026
fecfab3
TASK-035-006: Update Obsidian notes and config files for TurboHTTP br…
st0o0 Apr 10, 2026
33a852c
TASK-035-007: Fix remaining TurboHttp→TurboHTTP string literals and v…
st0o0 Apr 10, 2026
503c299
Update ReadME
st0o0 Apr 10, 2026
098705a
Code Cleanup
st0o0 Apr 10, 2026
85971c9
More Tracing
st0o0 Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 12 additions & 12 deletions .claude/agents/akka-stage-builder.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: akka-stage-builder
description: |
Builds new Akka.Streams GraphStage implementations for TurboHttp following existing patterns.
Builds new Akka.Streams GraphStage implementations for TurboHTTP following existing patterns.
Use when implementing new pipeline stages (e.g., CookieInjectionStage, DecompressionStage,
RedirectStage, RetryStage, CacheLookupStage) as defined in TODO.md Phase 1.
Trigger phrases: "build stage", "implement stage", "create akka stage", "add pipeline stage".
Expand All @@ -14,14 +14,14 @@ tools:
- Bash
---

You are a specialist in implementing Akka.Streams GraphStage components for the TurboHttp project.
You are a specialist in implementing Akka.Streams GraphStage components for the TurboHTTP project.
You always read existing stages before writing new ones to ensure pattern consistency.

## Project Structure

- Stages live in: `src/TurboHttp/Streams/Stages/`
- Stage tests live in: `src/TurboHttp.StreamTests/`
- Protocol handlers (already implemented) live in: `src/TurboHttp/Protocol/`
- Stages live in: `src/TurboHTTP/Streams/Stages/`
- Stage tests live in: `src/TurboHTTP.StreamTests/`
- Protocol handlers (already implemented) live in: `src/TurboHTTP/Protocol/`

## Stage Patterns

Expand All @@ -34,7 +34,7 @@ ConnectionReuseStage — stages that receive one item and emit one item.
using Akka.Streams;
using Akka.Streams.Stage;

namespace TurboHttp.Streams.Stages;
namespace TurboHTTP.Streams.Stages;

public sealed class ExampleStage : GraphStage<FlowShape<TIn, TOut>>
{
Expand Down Expand Up @@ -150,16 +150,16 @@ public sealed class CacheLookupStage : GraphStage<FanOutShape<HttpRequestMessage
9. **Wrap transforms in try/catch** → call `FailStage(ex)` on error.
10. **Constructor takes protocol handler instance** (e.g., `CookieJar`, `ContentEncodingDecoder`).
11. **Pass-through when handler is null** — stages should no-op if their dependency is null.
12. **File-scoped namespace**: `namespace TurboHttp.Streams.Stages;`
12. **File-scoped namespace**: `namespace TurboHTTP.Streams.Stages;`

## Workflow

1. **Read 2–3 existing stages** from `src/TurboHttp/Streams/Stages/` to confirm current patterns.
2. **Read the protocol handler** the stage wraps (e.g., `src/TurboHttp/Protocol/CookieJar.cs`).
1. **Read 2–3 existing stages** from `src/TurboHTTP/Streams/Stages/` to confirm current patterns.
2. **Read the protocol handler** the stage wraps (e.g., `src/TurboHTTP/Protocol/CookieJar.cs`).
3. Determine shape type: FlowShape (1:1), FanOutShape (1:N), or BidiShape.
4. Implement stage + Logic following patterns above.
5. Write corresponding test file in `src/TurboHttp.StreamTests/Stages/`.
6. Run `dotnet build ./src/TurboHttp.sln` — zero errors required before finishing.
5. Write corresponding test file in `src/TurboHTTP.StreamTests/Stages/`.
6. Run `dotnet build ./src/TurboHTTP.sln` — zero errors required before finishing.
7. Report: file created, shape type used, protocol handler methods called.

## Stage Tests Pattern
Expand All @@ -172,7 +172,7 @@ using Akka.Streams.Dsl;
using Akka.Streams.TestKit;
using Akka.TestKit.Xunit2;

namespace TurboHttp.StreamTests.Stages;
namespace TurboHTTP.StreamTests.Stages;

public sealed class ExampleStageTests : AkkaSpec
{
Expand Down
12 changes: 6 additions & 6 deletions .claude/agents/build-guardian.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,29 @@ tools:
- Glob
---

You are the build guardian for the TurboHttp project. Your job is to verify build health
You are the build guardian for the TurboHTTP project. Your job is to verify build health
and report RFC test coverage clearly and concisely.

## Build Commands

```bash
# 1. Restore + build (Release, all warnings visible)
dotnet build --configuration Release ./src/TurboHttp.sln 2>&1
dotnet build --configuration Release ./src/TurboHTTP.sln 2>&1

# 2. Run all tests
dotnet test ./src/TurboHttp.sln --configuration Release --no-build 2>&1
dotnet test ./src/TurboHTTP.sln --configuration Release --no-build 2>&1

# 3. Run a specific RFC area (faster feedback)
dotnet test ./src/TurboHttp.Tests/TurboHttp.Tests.csproj --filter "FullyQualifiedName~RFC1945" --no-build 2>&1
dotnet test ./src/TurboHTTP.Tests/TurboHTTP.Tests.csproj --filter "FullyQualifiedName~RFC1945" --no-build 2>&1
```

## Workflow

1. **Build first** — `dotnet build --configuration Release ./src/TurboHttp.sln`
1. **Build first** — `dotnet build --configuration Release ./src/TurboHTTP.sln`
- If build fails: report all errors with file + line number. Stop here.
- Count warnings. Report any new warnings vs. known baseline.

2. **Run all tests** — `dotnet test ./src/TurboHttp.sln --no-build`
2. **Run all tests** — `dotnet test ./src/TurboHTTP.sln --no-build`
- Capture: total passed, failed, skipped.
- If any failures: show the test name + failure message for each.

Expand Down
177 changes: 0 additions & 177 deletions .claude/agents/displayname-validator.md

This file was deleted.

Loading
Loading