New Run as a wizard: detect OpenSpec and git flow, narrow the pipelines, and name them properly #88
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The New Run page (
ui/src/components/NewRun.tsx) is one flat form today: Entry, Repository, Issue/Brief, Pipeline, Base branch. Every built-in pipeline is offered whatever the repository looks like, so a repo with nodevelopbranch is still offeredgit-flow, and a repo that has never seen OpenSpec is offereddefault(which proposes an OpenSpec change) with nothing saying so.Research, design and implement a wizard-like New Run: a short series of choices where each answer narrows what comes next, ending on a small set of pipelines that fit.
The flow
openspec/directory (openspec/config.yaml,openspec/specs/).developbranch next tomain, and/orfeature/*,release/*,hotfix/*branches, or git-flow config.Show what was detected so the operator can see why they're being asked what they're asked.
quick-fix, and a feature-branch pipeline without OpenSpec).Degrade the way the pickers already do: if detection can't answer (no mirror of the repo yet, forge down), say so and fall back to offering everything, without blocking the run.
Naming
defaultisn't a name: it is really OpenSpec on git feature branches. For exampleminimalist→ "Abridged OpenSpec with git feature branching and automated testing". The picker shows the short name with the full name next to it (the one-line summary we have now becomes the full name, or sits next to it).defaulttouches.osf/pipeline.yaml(read asdefault), theosf:runlabel (runsdefault), recorded runs whose pipeline isdefault, andtools/drive.py. The design needs to keep old runs and repos working, e.g. by keepingdefaultas an alias.Gaps to look at while designing
openspec initor createdevelopas its first step, or is that a separate prologue likenew_project's?.osf/pipelines/*.yamlneed to say (or have detected) whether they use OpenSpec / git flow so they can be filtered too.Related: #43 (a methodology tier above graphs, picking a graph per task). This issue is the operator-facing front of that: choosing the methodology when the run starts.
Shipped in
e50c3a9onmain(feature37af2bd, archived asopenspec/changes/archive/2026-09-27-new-run-wizard).New Run is now a wizard. Headed New Run, it asks Entry → Repository → Methodology → Pipeline, folding each answer to one line with change, then the issue or brief and the base branch.
GET /api/repo-profile?repo=reports whether a repository hasopenspec/on its default branch and adevelopbranch. It asks the Forgejo API for a forge repository and git for a local path. When it can't tell, it answersnullwith a reason, and the wizard says so and narrows nothing.openspec initscaffolding. Introducing git flow sendsadopt_git_flow, and admission then createsdevelopfrom the base branch (on the forge, never moving an existing one) instead of blocking.git-flow*pipelines; without it, none of them.Naming
defaultis nowthorough.defaultstill works everywhere: old runs,osf:default,drive.py --pipeline default,.osf/pipeline.yaml.minimalist: Abridged OpenSpec with feature branches and automated testing. A pipeline can declaretitle:anduses: {openspec, git_flow}; when it doesn't,usesis inferred from the graph.git-flow-minimalistandgit-flow-quick-fixfill the git-flow side of the matrix.Schema: version 5 adds
run.adopt_git_flow, applied byosfd migrateon deploy.Verification:
e2e/new-run-wizard.spec.ts.developyet, and openspec-flow, soundcheck and a dozen others have OpenSpec.Related: #43, which picks a graph per task at run time, is still open.