Repository navigation
Conversation
… request opened The lane's first full run stopped at its first store request: every PROPFIND got an empty reply while GET and OPTIONS worked. Substrate's egress gateway is agentgateway in AUTO mode, which decides whether a plaintext connection is HTTP from its first bytes and knows only nine standard methods there, so a PROPFIND, MKCOL, LOCK or UNLOCK that opens a connection is taken for opaque TCP and dropped. The run failed closed as designed: no lease, no writes. After the first request the gateway parses every request on the connection as HTTP, whatever its method. The run message now defines a `dav` helper that opens each connection with an OPTIONS and sends the WebDAV method next on it, and uses it for every PROPFIND, MKCOL, LOCK and UNLOCK. A new CI test runs the gateway image Substrate 1.0.0 deploys, with its AUTO bind, in front of the store's pinned rclone. It proves a WebDAV method that opens a connection gets no reply, and that the run message's own helper reaches all four methods with their real replies. It fails when Substrate's chart moves, until its gateway pin follows. Refs devantler-tech/monorepo#4910 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅
|
✅
|
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Nice work! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |

What happened
The lane's first full run (started with "run now" on 2026-11-11) stopped at step 1a, as designed for an unexpected reply. It took no lease, wrote nothing, and changed nothing on GitHub.
PROPFINDto the lane store got no HTTP reply at all (curl: (52) Empty reply from server), onmemory/and on the store root alike.GETandOPTIONSthrough the same gateway worked, and the store answered them.Root cause
A run reaches the store only through Substrate's egress gateway: agentgateway v1.7.0, whose internal bind runs in
AUTOmode.AUTOdecides whether a plaintext connection is HTTP by matching its first bytes against nine hard-coded methods (crates/agentgateway/src/proxy/gateway.rs,METHODS): GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE and PATCH.PROPFIND,MKCOL,LOCKorUNLOCKis handed to the opaque-TCP path. There is no TCP route there, so it is closed.GETandOPTIONSrequests to the store all appear, and itsPROPFINDs never reach the HTTP layer at all.mainstill has the same list.Detection happens once per connection. After the first request, hyper parses every request on the keep-alive connection as HTTP, whatever its method.
The change
davhelper. The helper opens each connection with anOPTIONSand sends the WebDAV method next on the samecurlconnection (--next). EveryPROPFIND,MKCOL,LOCKandUNLOCKgoes through it.GETandPUTare standard methods and go out directly. The lease and fencing rules are unchanged.scripts/tests/test-agentic-engineer-lane-store-gateway.sh): it runs the exact gateway image Substrate 1.0.0 deploys (pinned by digest) with anAUTObind, in front of the store's own pinned rclone. It proves:PROPFINDthat opens a connection gets no reply (curl exit 52). That is the reason for the helper. If the gateway ever passes it, the test fails and says the helper can go.PROPFIND404 then 207,MKCOL201,LOCK200 with a Lock-Token and the holder named, refresh 200,MKCOLwith the token 201,UNLOCK204.PUTthat carries the lease token lands.The lease test's run-message checks follow the new wording. The lane stays paused. The next "run now" from the kagent UI will use this message.
Refs devantler-tech/monorepo#4910. An upstream fix in agentgateway (detect any method token, not nine) is the real cure; this works until it lands.
🤖 Generated with Claude Code