* docs(#15): propose convergence flag naming and doc-only test-gate exception * docs(#15): define convergence config and allowed AI selection
7.9 KiB
Cross-AI Plan Convergence via Existing Orchestration Commands
- Status: Proposed
- Date: 2026-05-24
- Issue: #15
Current orchestration commands (/gsd-autonomous and /gsd-progress --next --auto) route planning through gsd-plan-phase and only use local/Claude subagent review paths. The cross-AI convergence path already exists (/gsd-plan-review-convergence, /gsd-review, review.default_reviewers, review.models.*) but is not wired into these orchestrators. This creates a gap: users can configure cross-AI reviewers yet still get local-only planning in autonomous/auto-chain execution.
Decision
Do not add a new command. Add convergence as an orchestration policy in existing commands, with /gsd-progress as the primary operator surface.
- Add a shared plan strategy seam for orchestration workflows:
plan_strategy=local|convergelocalmaps togsd-plan-phaseconvergemaps togsd-plan-review-convergence
- Expose the strategy via existing entry points:
/gsd-progress --next --auto --converge(primary)/gsd-autonomous --converge(parity path for users who prefer autonomous directly)- keep
--cross-aias a compatibility alias for--converge
- Reuse existing reviewer selection semantics from
/gsd-reviewand/gsd-plan-review-convergence:- explicit reviewer flags (
--codex,--gemini,--claude,--opencode,--ollama,--lm-studio,--llama-cpp) --allreview.default_reviewersandreview.models.*config
- explicit reviewer flags (
- Add pass-through flags (no new command surface):
--converge(primary)--cross-ai(alias)- reviewer selector flags listed above
--max-cycles N(forwarded per phase)
- Keep convergence behind existing feature gate:
- if
workflow.plan_review_convergence=falseand--converge(or alias) is requested, fail fast with actionable enable instructions.
- if
- Keep post-execution review behavior unchanged in this slice (
gsd-code-reviewandgsd-ui-reviewstay as-is). Cross-AI code-review fanout is deferred. - Define convergence eligibility and allowed AIs via config (no new command):
- enable gate:
workflow.plan_review_convergence=true - allowed reviewer set:
review.default_reviewers(for no-flag converge runs) - per-reviewer model selection:
review.models.*
- enable gate:
Interface Contract
Existing CLI Surfaces (No New Command)
/gsd-progress --next --auto [--converge|--cross-ai] [reviewer flags] [--max-cycles N]/gsd-autonomous [existing flags] [--converge|--cross-ai] [reviewer flags] [--max-cycles N]
Planning Step Routing
plan_strategy=local:- orchestrator step uses
gsd-plan-phase(current behavior).
- orchestrator step uses
plan_strategy=converge:- orchestrator step uses
gsd-plan-review-convergence. - convergence workflow remains owner of HIGH counting (
CYCLE_SUMMARY), stall detection, and escalation.
- orchestrator step uses
Failure Policy
- If
--converge(or--cross-ai) is requested but convergence gate is disabled:- stop before planning dispatch
- emit exact enable command:
gsd config-set workflow.plan_review_convergence true
- no silent downgrade to
localstrategy.
Configuration Contract (Enable + Allowed AIs)
Convergence is configurable without introducing new config namespaces.
- Enable convergence:
workflow.plan_review_convergence: true
- Define which AIs are allowed by default for convergence runs:
review.default_reviewers: ["codex", "gemini"](example)
- Optionally pin models per allowed reviewer:
review.models.codex,review.models.gemini, etc.
Precedence for reviewer selection in converge mode:
- Explicit CLI reviewer flags (
--codex,--gemini,--all, etc.) review.default_reviewers- If neither resolves to any reviewer, fail fast with actionable message.
Example config:
{
"workflow": {
"plan_review_convergence": true
},
"review": {
"default_reviewers": ["codex", "gemini"],
"models": {
"codex": "gpt-5.4",
"gemini": "gemini-2.5-pro"
}
}
}
Flag Naming
Issue #15 asks for a flag such as --converge or --cross-ai on autonomous execution. --converge is the better primary term because it names the behavior (plan-review convergence loop), not the transport (external AI) or mode label (autonomous).
- Primary:
--converge - Alias:
--cross-ai - Avoid: introducing
--autonomous-*variants (the command already defines that mode)
Options Considered
-
Autonomous-only flag (
/gsd-autonomous --cross-ai)- Files:
commands/gsd/autonomous.md,workflows/autonomous.md - Problem: solves issue #15 directly but leaves
/gsd-progress --next --autoinconsistent. - Benefit: smallest blast radius.
- Drawback: two orchestration modes diverge in behavior.
- Files:
-
Progress-primary + autonomous parity (Chosen)
- Files:
commands/gsd/progress.md,workflows/progress.md,workflows/next.md, plus autonomous wiring - Problem: must keep two orchestrators aligned.
- Solution: one shared plan-strategy seam consumed by both commands.
- Benefit: better locality; users who already drive from
progress --next --autoget convergence without switching workflows.
- Files:
-
Config-only global toggle (no per-run flag)
- Files: config schema + both orchestrators
- Benefit: minimal CLI syntax expansion.
- Drawback: less control per run; harder to do targeted high-cost convergence only when needed.
- Decision: defer; keep explicit runtime flag.
Rubber-Duck Design Notes
Expected behavior: the two existing orchestration entry points should be able to opt into cross-AI plan convergence without adding another top-level command.
Actual behavior: both orchestration entry points always take the local planning route, so external reviewers are never reached unless the user abandons orchestration flow and runs convergence manually.
Wrong assumptions surfaced:
- "Enabling
workflow.plan_review_convergencechanges orchestration behavior." It does not unless the convergence command is explicitly routed. - "Cross-AI config propagates automatically into autonomous/next flows." It only applies where convergence/review workflows are invoked.
- "Adding a separate command is required." Existing orchestration commands are sufficient if they expose a strategy seam and clear flag naming.
Root architectural gap: orchestration flows lack a plan strategy seam (local vs converge).
Scope
In scope
- Plan strategy seam shared by existing orchestration commands.
--cross-aipass-through contract on existing commands.--convergeprimary flag naming and--cross-aicompatibility alias.- Feature-gate behavior contract for convergence strategy.
- Config contract for enabling convergence and selecting allowed AIs.
- Documentation updates tied to command/config behavior.
Out of scope
- New top-level command creation.
- Reworking
gsd-code-reviewinto cross-AI convergence loop. - New reviewer config schema (reuse existing
review.*keys). - Changing default planning strategy without explicit opt-in.
- Altering
gsd-plan-review-convergenceinternal loop semantics.
Consequences
- No new command tax on docs, routing, and long-term maintenance.
- Existing orchestration habits (
progress --next --autoand autonomous) can opt into convergence consistently. - Existing review configuration gets leverage without new schema.
- Backward compatibility is preserved by default.
- Explicit failure on disabled gate avoids silent false-confidence automation.
References
- Issue: #15
commands/gsd/progress.mdget-shit-done/workflows/progress.mdget-shit-done/workflows/next.mdcommands/gsd/autonomous.mdget-shit-done/workflows/autonomous.mdcommands/gsd/plan-review-convergence.mdget-shit-done/workflows/plan-review-convergence.mdcommands/gsd/review.mddocs/COMMANDS.md(/gsd-plan-review-convergence,/gsd-review)docs/CONFIGURATION.md(workflow.plan_review_convergence,review.default_reviewers,review.models.*)