Skip to content

Navigation Menu

Sign in
Sign up

feat(team): close the orchestrator E2E loop — P1b-iii (6/6) - #1122

Draft
najmuzzaman-mohammad wants to merge 1 commit into
deepagents/05-broker-orchestrator-routing from
deepagents/06-orchestrator-e2e
Draft

feat(team): close the orchestrator E2E loop — P1b-iii (6/6) #1122
najmuzzaman-mohammad wants to merge 1 commit into
deepagents/05-broker-orchestrator-routing from
deepagents/06-orchestrator-e2e

Conversation

@najmuzzaman-mohammad

@najmuzzaman-mohammad najmuzzaman-mohammad commented Jun 22, 2026

Copy link
Copy Markdown
Owner

Close the E2E loop — P1b-iii (6/6 in stack)

Makes the LangGraph orchestrator path runnable end-to-end and proves it both ways.

Per-task opt-in

The orchestrator flag is plumbed through both task-create paths
(TaskPlanInput composer wire + plannedTaskInput), validated to ""|"langgraph"
at the boundary. Production wiring needs nothing new — NewLauncher already wires
the dispatch client when WUPHF_ORCHESTRATOR_URL is set (nil otherwise → default
installs unchanged).

CI-safe Go integration test (internal/team/orchestrator_e2e_test.go)

A real task is born orchestrator-owned through the real creation path, routed
through the real provider.DispatchClient over real HTTP to a stand-in for
service.py, and the returned projection is written back so the web-facing task
wire shape (pipeline_stage/review_state/status) reflects the new state. Only
the orchestrator's business logic is faked; every layer between is production code.

Live cross-language smoke (orchestrator/scripts/smoke.sh)

Boots the real Python sidecar and POSTs the exact wire shapes the Go client
sends. Verified locally (SMOKE OK):

  • a running task re-hydrates → returns a 6-field projection the Go struct decodes;
  • an unmappable record fails loud to lifecycle_state: "unknown".

Known stub gap (documented, not masked)

On the P1 FakeHarness an interrupted step still projects running, so a wired
langgraph task re-dispatches each tick. P2's real ClaudeAgentHarness returns a
real gate state and resolves this. Until then, run the E2E with a single task and
expect the stubbed turn.

Verify

go test ./internal/team/ ./internal/provider/ # includes the E2E integration test
cd orchestrator && bash scripts/smoke.sh # live cross-language proof

Base: deepagents/05-broker-orchestrator-routing (PR #1121).

🤖 Generated with Claude Code

...oss-language proof (P1b-iii)
Makes the LangGraph orchestrator path runnable end-to-end and proves it both
ways.
Per-task opt-in: the orchestrator flag is plumbed through both task-create paths
(TaskPlanInput composer wire + plannedTaskInput), validated to ''|'langgraph' at
the boundary. Production wiring needs nothing new — NewLauncher already wires the
dispatch client when WUPHF_ORCHESTRATOR_URL is set (nil otherwise, so default
installs are unchanged).
CI-safe Go integration test: a real task is born orchestrator-owned through the
real creation path, routed through the REAL provider.DispatchClient over REAL
HTTP to a stand-in for service.py, and the returned projection is written back
so the web-facing task wire shape (pipeline_stage/review_state/status) reflects
the new state. Only the orchestrator's business logic is faked; every layer
between is production code.
Live cross-language smoke (orchestrator/scripts/smoke.sh): boots the real Python
sidecar and POSTs the exact wire shapes the Go client sends. Verified: a running
task re-hydrates and returns a 6-field projection the Go struct decodes, and an
unmappable record fails loud to lifecycle_state=unknown. SMOKE OK.
Known stub gap (documented, not masked): on the P1 FakeHarness an interrupted
step still projects 'running', so a wired langgraph task re-dispatches each tick.
P2's real ClaudeAgentHarness returns a real gate state and resolves this.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 55ad02b5-c92b-418a-858b-8435c731a933

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch deepagents/06-orchestrator-e2e

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /