rossoctl / rossoctl/cortex

Parity tests: Cap divergence for request and response bodies

Open
#987 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
13
Forks
40
Avg merge
12h 17m
Merged PRs (30d)
156

Description

The inbound-request-overflow fixture (#937) covers extproc + reverseproxy at their shared 1 MiB cap. Two adjacent caps have no coverage today, and each is a real divergence between deployment shapes:

Direction extproc reverseproxy forwardproxy
Request body 1 MiB 1 MiB 10 MiB
Response body 1 MiB 1 MiB 10 MiB

Why it matters

A body between 1 MiB and 10 MiB (agent egress with concatenated history + tool manifest, LLM streaming response) is accepted on the laptop path (forwardproxy) and rejected on the Kubernetes envoy-sidecar path (extproc). The two caps have grown independently in authbridge/authlib/listener/{extproc,forwardproxy}/server.go — nothing forces the operator-visible contract to be either "same cap" or "documented gap."

Anthropic Claude Code sessions produce 5 MiB request bodies (measured in PR #904); response bodies follow suit.

Fix

Two fixtures, one shape:

  1. Outbound request-body overflow — body between 1 MiB and 10 MiB, direction: pipeline.Outbound. Forwardproxy accepts (pipeline runs, wire status 200); extproc rejects (pipeline refused pre-run, wire status 413).
  2. Response-body overflow — upstream serves a body between 1 MiB and 10 MiB. Same asymmetric outcome: forwardproxy accepts, extproc + reverseproxy reject with 502.

Both are asymmetric-per-listener — not a naive assertParity call. Options:

  • Add an expectPerListener map[string]expectedBehavior field to the fixture, or
  • Use per-listener sub-tests rather than the shared harness.

Follow-up from #937.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the inbound-request-overflow fixture referenced from #937 and inspect authbridge/authlib/listener/{extproc,forwardproxy}/server.go to understand the existing caps. Add request- and response-body overflow coverage with per-listener expectations for forwardproxy, extproc, and reverseproxy. Done means bodies between 1 MiB and 10 MiB produce the specified acceptance or rejection status for each listener.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
testing
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.