/solcom-lfg realisiert die autonome Pipeline als in-session Skill-Orchestrator

ADR-0049 · 2026-05-29 · Status: accepted

Kontext

Der User will einen einzigen autonomen Befehl ab dem Punkt, an dem ein refined PRD existiert: decompose → build → dogfood → review → fix → CI → MR-ready → learn. Grilling und PRD-Schreiben bleiben menschlich; der finale Merge ebenfalls (siehe Konsequenzen). Anlass: der lfg-Skill aus EveryInc/compound-engineering-plugin.

Verifizierter Befund: scripts/workflows/adscaile.mjs (aus ADR-0048) ist KEIN lauffähiges Runtime — es nutzt undefinierte freie Globals (args/agent/phase/log/Workflow) ohne Import, es gibt kein Workflow-Tool und keinen Runner im Repo; die API-Form ist der Drittanbieter-Dialekt @ai-hero/sandcastle, nicht Claude-Code-nativ. ADR-0048 deklarierte adScaile zum Nachfolger von scripts/ralph.sh, aber diese Supersession wurde nie realisiert (Nachfolger ohne Runtime).

scripts/ralph.sh (ADR-0037) ist der real lauffähige Bash-Mass-Loop über ready-for-agent-Stories (detached, Cron-fähig). Reale In-Session-Arbeit lief über das Implement-Triple (implementsolcom-reviewauto-review-fix), getrieben via /goal + Persistent Monitor.

Das Original-lfg ist selbst kein Bash-Runner, sondern eine SKILL.md, die Claude in-session liest und Sub-Skills sequenziell mit STOP-GATEs aufruft.

Entscheidung

/solcom-lfg wird als dünner, in-session Skill-Orchestrator gebaut (.claude/skills/solcom-lfg/SKILL.md), strukturiert wie das Original-lfg: gated sequenzielle Skill-Invocation, re-implementiert nichts.

Kette: solcom-to-issues (Decompose) → implement (Build + Azure-DevOps-PR) → solcom-dogfood (Frontend-User-Journey-QA via agent-browser) → solcom-review --persistauto-review-fix ohne --merge (Fix + CI, PR bleibt review-ready offen; nutzt intern fix-ci) → Learn (Auto-Memory / docs/wiki/-Vorschlag) → <promise>DONE</promise>.

Autonom ohne Zwischen-Gate während der Pipeline (User-Entscheidung 2026-05-29); das menschliche Review fand upstream im Grilling/PRD statt. Der finale Merge bleibt aber menschlich — die Pipeline endet am review-ready MR, die KI merged nie selbst (Korrektur 2026-05-29, siehe Konsequenzen).

Model-Policy: Sonnet ist Hauptschläger (Bau-/Review-/Merge-Phasen erben das aus den Sub-Skills), Opus steht nur als Buddy daneben — Trade-off-Vorab-Brief in implement plus ambiger-Finding-Consult Agent(model:"opus") in der Review-Phase.

Designed für /goal als persistenten Driver; die Persistent-Monitor-Mechanik kommt aus den Sub-Skills, /solcom-lfg setzt keinen eigenen zweiten Monitor.

Verworfene Alternativen

(a) lfg.sh auf dem ralph.sh-Bash-Plumbing

Verworfen: die ralph.sh-Choreographie ist ADR-0037 (plan → contract → contract-eval → implement → review → merge), genau das Design, das adScaile ablösen wollte; und die in-session-Skills existieren bereits und sind erprobt, also kein neues Bash-Runtime nötig. scripts/ralph.sh bleibt für den detached Mass-Loop (AFK, Cron) gültig.

(b) Agent-SDK-Runner (query())

Verworfen: braucht ANTHROPIC_API_KEY plus npm-Infra (beides nicht vorhanden) plus API-Billing; das in-session-Subscription-Modell ist kostenfrei.

(c) adscaile.mjs lauffähig machen

Verworfen: @ai-hero/sandcastle-Dialekt, kein CC-natives Runtime; bleibt als Design-Spec / Referenz (docs/agents/adscaile.html).

Konsequenzen

  • KI merged nicht — Pipeline endet am MR (Korrektur 2026-05-29): Die ursprüngliche „Fix + CI + Merge"-Formulierung dieses ADR ist überstimmt. /solcom-lfg bringt den PR nur bis review-ready (CI grün, alle Findings adressiert); der Merge ist eine menschliche Entscheidung. auto-review-fix bekommt dafür Default-no-merge plus opt-in --merge (das /solcom-lfg nie setzt). Rationale: kein KI-Code geht ohne menschlichen Merge-Blick nach develop auf einem Shared-Repo mit Go-Live-Deadline. Memory feedback_ki_merged_nicht_bis_mr.
  • Amendet ADR-0048: die dort deklarierte Supersession von ralph.sh durch adScaile wird im Geist realisiert — aber als in-session Skill-Orchestrator, NICHT als JS-Workflow-Runtime. adscaile.mjs, docs/agents/adscaile.html und scripts/prompts/ bleiben Referenz-Spec.
  • Zwei autonome Pfade koexistieren, klar getrennt: /solcom-lfg = in-session, Single-PRD, ein Befehl (dieser ADR); scripts/ralph.sh = detached Bash-Mass-Loop über viele ready-for-agent-Stories (ADR-0037, weiterhin gültig).
  • Frontend-Achse abgedeckt: Dogfood-Phase via solcom-dogfood (User-Journey-Matrix, fährt agent-browser intern), Findings durabel im PR-Body (analog zum lfg-Pattern „residual handoff to PR body").
  • Learn-Phase als ce-compound-Analog: Session-Learnings landen in der Auto-Memory; bei ≥3 Strang-Verweisen folgt ein docs/wiki/-Promote-Vorschlag.
  • Kein customer-lens-reviewer-Gate: dies ist eine Workflow-/Tooling-Entscheidung, keine Komponenten-Topologie (Figma/SDC/Theme), für die diese Lens gedacht ist.
  • Offene Design-Frage (spätere Iteration): das genaue Opus-Buddy-Routing (wie der Sonnet-Reviewer ambige Findings strukturiert flaggt); v1 macht das ad-hoc im Review-Step.