Skip to content

docs(proxy): verified SC-001 end to end; correct RuntimeRequest shape, SERVE_URL hostname requirement - #349

Merged
enricopiovesan merged 1 commit into
mainfrom
claude/proxy-verified-sc001
Sep 5, 2026
Merged

docs(proxy): verified SC-001 end to end; correct RuntimeRequest shape, SERVE_URL hostname requirement#349
enricopiovesan merged 1 commit into
mainfrom
claude/proxy-verified-sc001

Conversation

@enricopiovesan

Copy link
Copy Markdown
Contributor

Summary

Ran proxy/README.md's full runbook for real against a live Oracle Cloud VM and got spec 020 SC-001: a genuine capability execution, through the deployed Worker, with zero credentials supplied by the caller.

Two real gaps found and fixed in the runbook while doing it:

  1. Step 4's example request body was wrong. It sent the flat capability input directly as request, but serve's /v1/entrypoints/execute requires the full traverse-runtime::RuntimeRequest envelope (kind/schema_version/request_id/intent/input/lookup/context/governing_spec), with intent.capability_id/intent.capability_version matching the outer envelope exactly and no version_range. Corrected the example and documented the shape requirement.
  2. SERVE_URL must be a hostname, never a bare IP. A Worker's outbound fetch() to a raw IP fails closed with Cloudflare edge error 1003 ("Direct IP Access Not Allowed") — confirmed against Cloudflare's own docs and community reports. Documented the fix (one DNS-only A record) and recorded the real value now in use (serve.traverse-framework.com).

Also noted: FR-003 rate limiting didn't trigger on 6 rapid calls immediately after a fresh deploy — flagged for a retest, not blocking SC-001.

Governing Spec

  • 020-public-execution-proxy

Project Item

Closes the registry-side of #328 — the runbook now reflects exactly what a real deployment needs, verified against a real running instance, not assumed.

Definition of Done

  • proxy/README.md Step 4 has a correct, working example request.
  • SERVE_URL-must-be-a-hostname requirement documented with the fix.
  • wrangler.toml reflects the real, live SERVE_URL.
  • FR-003 caveat noted.

Validation

Live verification (not from a test fixture): POST https://registry-execution-proxy.enricopiovesan.workers.dev/execute with the corrected body → {"status":"completed","output":{"allowed":true,"new_status":"in_progress","reason_code":"ok",...}}, no Authorization header from the caller. Also confirmed: unknown/deprecated capability → capability_not_found (404, SC-002); no response ever contains the ADMIN_JWT value (FR-005).

🤖 Generated with Claude Code

…, SERVE_URL hostname requirement

Ran the full pipeline for real against a live Oracle Cloud VM (serve.traverse-framework.com):
browser-style client -> Worker (no credentials) -> serve -> a signed public
capability -> real execution result. Two things learned the hard way, now
documented:

- README Step 4's example request body was the flat capability-input shape,
  not a real traverse-runtime::RuntimeRequest envelope (kind/schema_version/
  request_id/intent/input/lookup/context/governing_spec). serve rejects the
  flat shape with invalid_runtime_request. Corrected the example and the
  intent/context field requirements (capability_id/version must match the
  outer envelope exactly, requested_target must be a placement the paired
  serve's executor set supports -- "local" for a plain CLI host).
- wrangler.toml's SERVE_URL must be a hostname, never a bare IP -- a
  Worker's outbound fetch() to a raw IP fails closed with Cloudflare edge
  error 1003 (confirmed against multiple Cloudflare community reports, not
  guessed). Documented the fix (one DNS-only A record) and recorded the
  real, live SERVE_URL now in use.
- FR-003 rate limiting did not trigger on 6 rapid calls immediately after a
  fresh deploy; flagged as needing a retest after the binding has had time
  to propagate, not blocking SC-001.

Registry side of registry#328 is done: the runbook now reflects exactly
what a real deployment needs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@enricopiovesan
enricopiovesan enabled auto-merge (squash) September 5, 2026 03:59
@enricopiovesan
enricopiovesan merged commit 866bd93 into main Sep 5, 2026
11 checks passed
@enricopiovesan
enricopiovesan deleted the claude/proxy-verified-sc001 branch September 5, 2026 03:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant