feat(harness): multi-harness bridge with DSH loopback redirect hardening #9

Closed
opened 2026-09-09 10:08:48 +00:00 by larandar · 1 comment
Owner

Proposal

Dispatch workflows through DSH and external agent harnesses without weakening loopback transport or accepting unsafe redirects.

Design

Use DSH loopback HTTP without an Origin header under ADR 0003. Disable redirects with redirect::Policy::none(), reject URL userinfo, support Claude, Pi, and Codex CLI transports, and map validation failures to ToolFailureKind::invalid-args.

Tasks

  • 5.1 Implement DSH loopback HTTP transport without Origin.
  • 5.2 Apply ADR 0003 transport rules.
  • 5.3 Disable redirects and reject URL userinfo.
  • 5.4 Add Claude, Pi, and Codex CLI transports.
  • 5.5 Map validation failures to ToolFailureKind::invalid-args.

Gherkin Specification Delta

must.contracts.ting-workflows.executor.multi-harness-dispatch

Scenario: Dispatch safely across supported harnesses

  • GIVEN a valid workflow dispatch request for DSH, Claude, Pi, or Codex
  • WHEN the bridge sends the request
  • THEN DSH uses loopback HTTP without Origin and external harnesses use their CLI transports
  • AND redirects and URLs containing userinfo are rejected
  • AND validation failures map to ToolFailureKind::invalid-args.
## Proposal Dispatch workflows through DSH and external agent harnesses without weakening loopback transport or accepting unsafe redirects. ## Design Use DSH loopback HTTP without an Origin header under ADR 0003. Disable redirects with `redirect::Policy::none()`, reject URL userinfo, support Claude, Pi, and Codex CLI transports, and map validation failures to `ToolFailureKind::invalid-args`. ## Tasks - 5.1 Implement DSH loopback HTTP transport without Origin. - 5.2 Apply ADR 0003 transport rules. - 5.3 Disable redirects and reject URL userinfo. - 5.4 Add Claude, Pi, and Codex CLI transports. - 5.5 Map validation failures to `ToolFailureKind::invalid-args`. ## Gherkin Specification Delta ### must.contracts.ting-workflows.executor.multi-harness-dispatch **Scenario: Dispatch safely across supported harnesses** - **GIVEN** a valid workflow dispatch request for DSH, Claude, Pi, or Codex - **WHEN** the bridge sends the request - **THEN** DSH uses loopback HTTP without Origin and external harnesses use their CLI transports - **AND** redirects and URLs containing userinfo are rejected - **AND** validation failures map to `ToolFailureKind::invalid-args`.
Author
Owner

Superseded by 1-feature deliverable decomposition per freeholder ruling (issues #11+).

Superseded by 1-feature deliverable decomposition per freeholder ruling (issues #11+).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
Ting/workflows#9
No description provided.