feat: Symphony handoff target — emit WORKFLOW.md aligned with OpenAI's spec#5
Merged
Conversation
…s spec Adds a third handoff target alongside filesystem and Linear: Symphony, the OpenAI open-source orchestration spec (https://github.com/openai/symphony) released April 2026. Symphony turns project work into autonomous coding-agent runs by polling an issue tracker and dispatching Codex sessions into isolated per-issue workspaces. Our system becomes the planning + outcomes layer; Symphony becomes the execution layer; Linear (or a future filesystem tracker extension) is the wire between them. What this PR ships (slice 1 of a 3-slice plan): - `server/src/handoff/symphony.ts` — spec-compliant WORKFLOW.md renderer. YAML front matter with tracker/polling/workspace/hooks/agent/codex blocks per §5.3. Liquid prompt template embedding standing decisions, scope, and per-issue instructions that point the agent at our dr/ context. - `dr_export_symphony` MCP tool — writes WORKFLOW.md, optionally pushes tasks to Linear first, finalizes handoff with target='symphony'. - Orchestrator wires Symphony as the preferred option when LINEAR_API_KEY is set. CLI flow stays backward-compatible when it isn't. - HandoffRecordSchema gains target='symphony' + a workflow_path field. - 11 new tests (5 unit, 6 flow) — total now 100 (83 unit + 17 flow). - Docs: how-to/handoff-to-symphony.md, explanation/symphony-alignment.md capturing the 3-slice roadmap, updates to research-notes, mcp-tools, README. Slice 2 (filesystem tracker extension upstream to Symphony) and slice 3 (status surface consuming /api/v1/state) are documented but not yet built. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (11)
WalkthroughThis PR introduces Symphony orchestration integration by adding a ChangesSymphony handoff workflow
🎯 3 (Moderate) | ⏱️ ~25 minutes ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a third handoff target alongside
filesystemandlinear: Symphony, the OpenAI open-source orchestration spec released April 2026. Symphony turns project work into autonomous coding-agent runs by polling an issue tracker and dispatching Codex sessions into isolated per-issue workspaces.The architecture: our system becomes the planning + outcomes layer; Symphony becomes the execution layer; Linear (or a future filesystem-tracker extension) is the wire between them. This is slice 1 of a 3-slice plan toward a full project management app — see
docs/explanation/symphony-alignment.mdfor the full roadmap.What this PR ships
server/src/handoff/symphony.ts— spec-compliantWORKFLOW.mdrenderer. YAML front matter withtracker/polling/workspace/hooks/agent/codexblocks per Symphony spec §5.3. Liquid prompt template embedding our standing decisions, scope, and per-issue instructions that point the agent at the repo'sdr/context.dr_export_symphonyMCP tool — writesWORKFLOW.md, optionally pushes tasks to Linear first (so the WORKFLOW.md can target the resulting Linear project), finalizes handoff withtarget='symphony'.LINEAR_API_KEYis set. Falls back to Linear-only or filesystem when the user declines. CLI flow stays backward-compatible when LINEAR_API_KEY is absent.HandoffRecordSchemagainstarget='symphony'and aworkflow_pathfield.docs/how-to/handoff-to-symphony.md,docs/explanation/symphony-alignment.md(the 3-slice roadmap), updates toresearch-notes.md,mcp-tools.md,README.md, and the docs index.The 3-slice roadmap (sequenced, only slice 1 in this PR)
dr/tasks/directly instead of going through Linear. No external system required.GET /api/v1/stateand render running/retrying/done state alongside decisions and outcomes in ourdr/index.html. Closes the operator loop.What this delivers operationally
dr/tasks/task, (b) loaddecision_refsfromdr/decisions/, (c) honordepends_on, (d) implement, (e) satisfyacceptance_criteria, (f) test, (g) open a PR. Explicit guard rails: don't modifydr/decisions/, don't mark partial work as done, don't leave the workspace.workflow_pathso downstream tooling knows where the live WORKFLOW.md sits.Test plan
npx tsc --noEmit— cleannpm run test:unit— 83 tests pass (was 77; +6 new inunit-symphony)npm run test:flow— 17 tests pass (was 11; +6 new inflow-symphony)npm run build— both bundles buildFiles
server/src/handoff/symphony.ts— new renderer moduleserver/src/tools/handoff.ts—dr_export_symphonytool registrationserver/src/cli/orchestrator.ts— Symphony as third handoff optionserver/src/schemas/index.ts—HandoffRecordSchemaextendeddocs/how-to/handoff-to-symphony.md,docs/explanation/symphony-alignment.md— newdocs/explanation/research-notes.md,docs/reference/mcp-tools.md,docs/README.md,README.md— updates🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation