Repository navigation
feat(aidd-orchestrator): add an interactive SDLC mode #910
Description
Problem
aidd-orchestrator:01-sdlc currently exposes only an autonomous delivery contract. Teams also need a supervised path for decisions that should remain human-owned without manually interrupting the pipeline.
Product decision
Reintroduce an optional interactive mode. Autonomous mode remains the default.
This deliberately revisits the single autonomous contract introduced by #517. It is not a regression to the former behavior: the new mode adds a small number of decision gates while keeping internal implementation and repair loops autonomous.
Modes
- Autonomous: current behavior remains unchanged.
- Interactive: selected by starting the request with the whole word
interactive, for exampleinteractive implement #123; no dedicated CLI flag is required. Mentioning interactive behavior elsewhere in the request or source does not select this mode.
Interactive gates
- Contract gate: after Frame produces the delivery contract.
- Plan gate: after
aidd-dev:01-planproduces or revises the implementation plan. Reuse that skill’s approval point; do not add a duplicate gate. - Final evidence gate: after Check and applicable QA clear, before creating the draft pull request.
At each gate, present the artifact, material risks, the pending decision, and the next stage.
A rejection sends the feedback back to the artifact owner, then presents the revised gate again. Approved artifacts are resumed without regeneration. Pause and resumption telemetry is tracked separately in #970.
Acceptance criteria
- A request whose first whole word is
interactiveselects interactive mode. - A request that does not begin with the whole word
interactivekeeps the current autonomous behavior. - Interactive mode pauses only at the three defined gates.
- Rejected artifacts are revised by their owning stage and presented again.
- Approved artifacts are reused when the pipeline resumes.
- Implementation, test, review-repair, and QA-repair loops remain autonomous between gates.
- The final gate occurs before draft pull request creation.
- Existing autonomous SDLC tests remain green and interactive-mode coverage is added.
- User-facing SDLC documentation explains both modes and their default.
Prior art
- Interactive orchestration previously existed in commit
8f9e245. - refactor(orchestrator): replace SDLC actions with protocols #517 and commit
ed816044intentionally removed it in favor of one autonomous contract. - This issue is the explicit product decision to restore supervised delivery with a narrower gate model.
Out of scope
- Approval after every implementation phase.
- A separate training or tutorial SDLC.
- Changing the autonomous default.
- Pause and resumption telemetry, followed up in feat(aidd-telemetry): record orchestration pauses and resumptions #970.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Projects
- StatusShow more project fieldsDone
Activity
docs(orchestrator): the user-facing pages name both modes again
feat(aidd-orchestrator): add an interactive SDLC mode (#967)
blafourcade commentedon Oct 7, 2026
Shipped in #967, squashed onto
nextasc5ac56be.What landed. The mode lives in one reference,
plugins/aidd-orchestrator/skills/01-sdlc/references/mode.md: autonomous unless the request's first whole word isinteractive, three pauses — contract, plan, outcome — one per artifact, with the producing steps sharing an artifact's single pause. Implementation, validation, review and repair run untouched between them. A refusal at a pause is a finding routed by artifact; an approval ships what was presented, with any correction it carries. No skill downstream changed.Four defects were found while proving it and fixed where they belonged: Frame's spec and Check's review had no committer, so neither artifact reached the branch; the journey requirement and the planning-ready test rested on the agent's judgement; a finding recurring after a pass had acted on it looped forever in autonomous mode; and a finding carried onto the request as a note tripped that same stop, because nothing ordered the two rules.
Two of this issue's acceptance criteria were deliberately not met.
run the SDLC interactivelyas the example. Under what shipped, that phrasing selects autonomous: the mode word must be the request's first whole word. The keyword form was the decision taken while building it, measured against the alternative —build an interactive diff viewer for the review panelmust not become a supervised run, and it does not. This issue's example is what needs updating, not the rule.aidd-telemetryjournals tool events through hooks and a pause is not one, so representing it needs a record type and something to emit it. That is its own change, not a line in this one.How it was proved. 64 decision edges of the orchestration, each covered by an observed run; 44 headless runs in one campaign and 29 more on the reviewed text, grouped to measure dispersion rather than presence; every text change that resolved an ambiguity re-read by three independent readers. Then two Codex runs on the same issue from the same commit, one per mode, and finally a supervised run with someone actually answering the three gates — approve, approve with a correction, refuse, refuse again — which is the one thing a headless run cannot do without inventing the approval the gate exists to collect. Evidence under
aidd_docs/tasks/2026_09/2026_09_17_sdlc-interactive-mode/.That last run also closed a hole in the campaign: every headless
interactiverun had used a planning-ready source and gone through Frame directly, so the clarify-then-formalize path was never counted end to end. It waited four times, not three. The count is now an invariant rather than something inferred step by step.Still resting on the reader's judgement, stated rather than hidden: whether a refused outcome goes to Deliver or to Frame, and whether a reworded finding is the same finding.
03-check.mdleaves the same distinction open for its own three routes.