Skip to content

feat(aidd-orchestrator): add an interactive SDLC mode #910

Closed

Description

@blafourcade

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 example interactive implement #123; no dedicated CLI flag is required. Mentioning interactive behavior elsewhere in the request or source does not select this mode.

Interactive gates

  1. Contract gate: after Frame produces the delivery contract.
  2. Plan gate: after aidd-dev:01-plan produces or revises the implementation plan. Reuse that skill’s approval point; do not add a duplicate gate.
  3. 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 interactive selects interactive mode.
  • A request that does not begin with the whole word interactive keeps 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

Out of scope

Activity

  1. added theissue type on Sep 23, 2026
  2. changed the issue type fromtoon Sep 24, 2026
  3. blafourcade commented on Oct 7, 2026

    @blafourcade
    ContributorAuthor

    Shipped in #967, squashed onto next as c5ac56be.

    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 is interactive, 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.

    • "Explicit interactive intent selects interactive mode", with run the SDLC interactively as 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 panel must not become a supervised run, and it does not. This issue's example is what needs updating, not the rule.
    • "Telemetry must represent pauses and resumptions." Nothing does. aidd-telemetry journals 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 interactive run 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.md leaves the same distinction open for its own three routes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    Priority

    Medium

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions