-
Notifications
You must be signed in to change notification settings - Fork 285
Transition to Git-Native Workflow (Branch-per-Track & Worktrees) #55
Copy link
Copy link
Open
Labels
area:implementRelated to conductor:implement commandRelated to conductor:implement commandarea:newTrackRelated to conductor:newTrack commandRelated to conductor:newTrack commanddiscussionProposals or architectural changes that require consensus or further research.Proposals or architectural changes that require consensus or further research.featureNew feature or requestNew feature or requestmaintainer onlyReserved for project maintainers. Not open for external contributionsReserved for project maintainers. Not open for external contributionsp2Normal priority. Scheduled for the standard backlogNormal priority. Scheduled for the standard backlog
Metadata
Metadata
Assignees
Labels
area:implementRelated to conductor:implement commandRelated to conductor:implement commandarea:newTrackRelated to conductor:newTrack commandRelated to conductor:newTrack commanddiscussionProposals or architectural changes that require consensus or further research.Proposals or architectural changes that require consensus or further research.featureNew feature or requestNew feature or requestmaintainer onlyReserved for project maintainers. Not open for external contributionsReserved for project maintainers. Not open for external contributionsp2Normal priority. Scheduled for the standard backlogNormal priority. Scheduled for the standard backlog
Type
Fields
Give feedbackNo fields configured for issues without a type.
Context & Problem
Currently, Conductor operates as a file-based state manager. When a user creates a new track, the artifacts (
spec.md,plan.md) and the implementation changes all live in the current working directory (underconductor/tracks/).This presents a few limitations:
Proposal: Git-Native Architecture
The proposal is to move Conductor to a Branch-per-Track model, where every "Track" is synonymous with a specific Git branch.
1. Branch-per-Track
When running
/conductor:newTrack, the extension should:conductor/track-<id>-<slug>).spec.mdandplan.mdinside that branch.This ensures that the "Planning" phase becomes part of the feature's commit history, and the main branch remains clean of work-in-progress artifacts.
2. Experimental: Git Worktree Support
To enable true parallelism, we should explore supporting Git Worktrees.
Instead of just switching branches (which updates the current directory), Conductor could offer a mode to spin up a worktree.
This would create a sibling directory (e.g.,
../project-track-01) checked out to that track's branch. This allows a user to run one track in the worktree folder while continuing to work on another track in the main folder.Open Design Questions
The biggest challenge with this approach is Discovery/Registry.
Currently,
conductor/tracks.mdacts as a central registry of all work. If we move to a branch-based model, themainbranch will technically not know thattrack-02exists on a divergent branch.Possible solutions to discuss:
/conductor:statuscommand stops readingtracks.mdand instead scansgit branch --list conductor/*, parsing the metadata from the tip of those branches.mainwhen a track is created, even if the work happens elsewhere.Discussion points:
I am looking for feedback on: