Weg 2 in geschärfter Form, umgesetzt in #168 (8.0.0-beta.24, Commit d8224ee, CI-Läufe #499/#500 grün). Es gibt keinen Modellwechsel mehr innerhalb einer Session. Die Phasen Design / Bau / Abschluss sind auf drei Skills verteilt (stack-dev, stack-build, stack-close) und übergeben über Zustände im Tracker.
stack-build und stack-close sind per disable-model-invocation: true nur als Slash-Kommando des Betreibers aufrufbar.
Jeder Phasenübergang ist damit ein echter Stopp. An genau dieser Stelle entscheidet der Betreiber: weiter in derselben Session, /clear oder anderes Modell.
Das Modell wird pro Session gewählt, nicht pro Phase. Auch /effort wird nicht mitten in der Session gewechselt, denn eine Effort-Änderung invalidiert den Message-Cache genauso.
Weg 1 (AskUserQuestion) wäre ein weiterer Roundtrip innerhalb der Session gewesen, und ein Modellwechsel mitten in der Session verwirft den Prompt-Cache. Weg 3 hätte den Zustand nur ehrlich beschrieben, statt eine Stelle zu schaffen, an der eine Wahl tatsächlich möglich ist.
Geschlossen mit #168; Umsetzung und Akzeptanzkriterien stehen dort.
Befund
stack-dev Schritt 3 und stack-close Schritt 1 boten je einen Modellwechsel an. Beide waren ausdrücklich nicht blockierend formuliert:
You cannot make this switch yourself … Offer it once and keep working either way; a session that argues about its own model has already cost more than the difference.
Never block on the answer. The change is already published; a session that stops here leaves exactly the state this skill exists to prevent.
Damit war der Break strukturell keine Entscheidungsstelle, sondern eine Zeile im Ausgabestrom. Die Sitzung sprach das Angebot aus und arbeitete in derselben Antwort weiter. Der Betreiber hätte in genau diesem Moment mitlesen und mit Ctrl+C unterbrechen müssen, damit ein Wechsel überhaupt zustande kommt. Passierte das nicht – der Normalfall –, war der Punkt vorbei, bevor jemand ihn als Punkt wahrnehmen konnte.
Beleg 1: Sitzung vom 2026-09-04 zu #43/#48/#49
Auslieferung 4.7.0/4.7.1; die erste kalte Sitzung, die stack-close benutzt hat.
Der Skill-Schnitt aus #47 E hat gehalten.stack-dev endete am Publish, stack-close lief vollständig und fand zwei echte Lücken, die kein Check fängt.
Der Wechsel selbst hat nicht stattgefunden. Beide Breaks wurden ausgesprochen, gewechselt wurde nie. Grund: Es gab keinen Moment, in dem eine Antwort erwartet wurde. Alle drei Phasen liefen auf Opus.
Der umgekehrte Fall ist der teure. Eine auf Sonnet gestartete Sitzung durchläuft Design und Abschluss auf dem billigen Modell, also genau die zwei Phasen ohne mechanische Absicherung.
Die erste kalte Sitzung, nachdem dieses Issue angelegt war.
Schritt 3 wurde wörtlich ausgesprochen.
Der Betreiber antwortete auf den fachlichen Teil der Antwort, nicht auf das Modellangebot. Das Angebot wurde übergangen, nicht abgelehnt.
Alle drei Phasen liefen auf Opus.
Kumuliert: zwei kalte Sitzungen, vier Angebote, null Wechsel.
Betrachtete Wege
Einmal wirklich fragen, mit AskUserQuestion: verworfen, siehe Entscheidung.
Die Entscheidung an den Sitzungsanfang ziehen: gewählt, in der Form aus #168.
Akzeptieren und die Prosa ehrlich machen: verworfen. Die Handover-Pflicht aus #47 D bleibt aber und ist in #168 erweitert (Modell, Effort, Session-Grenze und Überlauf pro Phase).
Akzeptanzkriterien
Entscheidung zwischen 1, 2 und 3 getroffen und im Body begründet (Weg 2, siehe oben)
stack-dev, stack-close und docs/model-and-effort-selection.md sagen dasselbe (erledigt in #168: Modellwahl pro Session in instructions/dev/stack-mode.md § Sessions and models, alle drei Skills verweisen dorthin, die Doku-Seite trägt die Begründung)
Was in einem Harness ohne den Mechanismus passiert, ist benannt (Codex, Copilot und Vibe ignorieren disable-model-invocation, dort bleibt die Prosa; steht in stack-mode.md)
Nächste kalte stack-dev-Sitzung als Beleg nachgetragen (Beleg 2)
Dritte kalte Sitzung ist nicht mehr nötig (zwei von zwei war Muster genug)
Vorgeschichte
#47 (geschlossen 2026-09-04): Vorgänger dieses Issues. Hat die zwei Breakpoints aus 4.3.3 überarbeitet, den Skill-Schnitt gebaut und sich den fehlenden Wirksamkeitsbeleg selbst notiert.
## Entscheidung (2026-10-02)
**Weg 2 in geschärfter Form, umgesetzt in #168** (`8.0.0-beta.24`, Commit `d8224ee`, CI-Läufe #499/#500 grün). Es gibt keinen Modellwechsel mehr *innerhalb* einer Session. Die Phasen Design / Bau / Abschluss sind auf drei Skills verteilt (`stack-dev`, `stack-build`, `stack-close`) und übergeben über Zustände im Tracker.
- `stack-build` und `stack-close` sind per `disable-model-invocation: true` nur als Slash-Kommando des Betreibers aufrufbar.
- Jeder Phasenübergang ist damit ein echter Stopp. An genau dieser Stelle entscheidet der Betreiber: weiter in derselben Session, `/clear` oder anderes Modell.
- Das Modell wird pro Session gewählt, nicht pro Phase. Auch `/effort` wird nicht mitten in der Session gewechselt, denn eine Effort-Änderung invalidiert den Message-Cache genauso.
Weg 1 (`AskUserQuestion`) wäre ein weiterer Roundtrip innerhalb der Session gewesen, und ein Modellwechsel mitten in der Session verwirft den Prompt-Cache. Weg 3 hätte den Zustand nur ehrlich beschrieben, statt eine Stelle zu schaffen, an der eine Wahl tatsächlich möglich ist.
Geschlossen mit #168; Umsetzung und Akzeptanzkriterien stehen dort.
## Befund
`stack-dev` Schritt 3 und `stack-close` Schritt 1 boten je einen Modellwechsel an. Beide waren ausdrücklich **nicht blockierend** formuliert:
> **You cannot make this switch yourself** … Offer it once and keep working either way; a session that argues about its own model has already cost more than the difference.
> **Never block on the answer.** The change is already published; a session that stops here leaves exactly the state this skill exists to prevent.
Damit war der Break **strukturell keine Entscheidungsstelle**, sondern eine Zeile im Ausgabestrom. Die Sitzung sprach das Angebot aus und arbeitete in derselben Antwort weiter. Der Betreiber hätte in genau diesem Moment mitlesen *und* mit Ctrl+C unterbrechen müssen, damit ein Wechsel überhaupt zustande kommt. Passierte das nicht – der Normalfall –, war der Punkt vorbei, bevor jemand ihn als Punkt wahrnehmen konnte.
## Beleg 1: Sitzung vom 2026-09-04 zu #43/#48/#49
Auslieferung `4.7.0`/`4.7.1`; die erste kalte Sitzung, die `stack-close` benutzt hat.
- **Der Skill-Schnitt aus #47 E hat gehalten.** `stack-dev` endete am Publish, `stack-close` lief vollständig und fand zwei echte Lücken, die kein Check fängt.
- **Der Wechsel selbst hat nicht stattgefunden.** Beide Breaks wurden ausgesprochen, gewechselt wurde nie. Grund: Es gab keinen Moment, in dem eine Antwort erwartet wurde. Alle drei Phasen liefen auf Opus.
- **Der umgekehrte Fall ist der teure.** Eine auf Sonnet gestartete Sitzung durchläuft Design *und* Abschluss auf dem billigen Modell, also genau die zwei Phasen ohne mechanische Absicherung.
## Beleg 2: Sitzung zu #81, 2026-09-10
Die erste kalte Sitzung, nachdem dieses Issue angelegt war.
- Schritt 3 wurde wörtlich ausgesprochen.
- Der Betreiber antwortete auf den fachlichen Teil der Antwort, nicht auf das Modellangebot. Das Angebot wurde übergangen, nicht abgelehnt.
- Alle drei Phasen liefen auf Opus.
Kumuliert: zwei kalte Sitzungen, vier Angebote, null Wechsel.
## Betrachtete Wege
1. **Einmal wirklich fragen, mit `AskUserQuestion`:** verworfen, siehe Entscheidung.
2. **Die Entscheidung an den Sitzungsanfang ziehen:** gewählt, in der Form aus #168.
3. **Akzeptieren und die Prosa ehrlich machen:** verworfen. Die Handover-Pflicht aus #47 D bleibt aber und ist in #168 erweitert (Modell, Effort, Session-Grenze und Überlauf pro Phase).
## Akzeptanzkriterien
- [x] Entscheidung zwischen 1, 2 und 3 getroffen und im Body begründet *(Weg 2, siehe oben)*
- [x] `stack-dev`, `stack-close` und `docs/model-and-effort-selection.md` sagen dasselbe *(erledigt in #168: Modellwahl pro Session in `instructions/dev/stack-mode.md` § Sessions and models, alle drei Skills verweisen dorthin, die Doku-Seite trägt die Begründung)*
- [x] Was in einem Harness ohne den Mechanismus passiert, ist benannt *(Codex, Copilot und Vibe ignorieren `disable-model-invocation`, dort bleibt die Prosa; steht in `stack-mode.md`)*
- [x] Nächste kalte `stack-dev`-Sitzung als Beleg nachgetragen *(Beleg 2)*
- [x] Dritte kalte Sitzung ist nicht mehr nötig *(zwei von zwei war Muster genug)*
## Vorgeschichte
- **#47** (geschlossen 2026-09-04): Vorgänger dieses Issues. Hat die zwei Breakpoints aus 4.3.3 überarbeitet, den Skill-Schnitt gebaut und sich den fehlenden Wirksamkeitsbeleg selbst notiert.
- **Belege:** `4.7.0` (`3916cb9`), `4.7.1` (`24593c5`), `5.0.0-beta.8` (`f8111d0`).
Changelog: Zweiten Beleg nachgetragen — Sitzung zu #81, 2026-09-10, die erste stack-dev-Sitzung seit Anlage dieses Issues. Ergebnis identisch zum ersten Beleg: Angebot ausgesprochen, kein Wechsel, alle drei Phasen auf demselben Modell. Neu diesmal: der Betreiber reagierte direkt im Anschluss an das Angebot inhaltlich auf den Plan, ging aber nicht auf die Modellfrage ein — das stützt Weg 2 (Entscheidung an den Sitzungsanfang ziehen) leicht stärker als vorher. Akzeptanzkriterium 5 abgehakt; ein neues Kriterium 6 vermerkt, dass eine dritte Sitzung bestätigend, aber nicht mehr entscheidungsnotwendig wäre. Die Entscheidung zwischen den drei Wegen bleibt offen.
**Changelog:** Zweiten Beleg nachgetragen — Sitzung zu #81, 2026-09-10, die erste `stack-dev`-Sitzung seit Anlage dieses Issues. Ergebnis identisch zum ersten Beleg: Angebot ausgesprochen, kein Wechsel, alle drei Phasen auf demselben Modell. Neu diesmal: der Betreiber reagierte direkt im Anschluss an das Angebot inhaltlich auf den Plan, ging aber nicht auf die Modellfrage ein — das stützt Weg 2 (Entscheidung an den Sitzungsanfang ziehen) leicht stärker als vorher. Akzeptanzkriterium 5 abgehakt; ein neues Kriterium 6 vermerkt, dass eine dritte Sitzung bestätigend, aber nicht mehr entscheidungsnotwendig wäre. Die Entscheidung zwischen den drei Wegen bleibt offen.
Changelog: Entschieden: Weg 2 in der Form aus #168. Die Phasenübergänge werden Slash-Kommandos des Betreibers (disable-model-invocation), und es gibt keinen Modellwechsel innerhalb einer Session mehr. Belege gekürzt. kind/decision → kind/build, status/blocked auf #168: Die Umsetzung liegt dort, dieses Issue wird mit ihr geschlossen.
**Changelog:** Entschieden: Weg 2 in der Form aus #168. Die Phasenübergänge werden Slash-Kommandos des Betreibers (`disable-model-invocation`), und es gibt keinen Modellwechsel innerhalb einer Session mehr. Belege gekürzt. `kind/decision` → `kind/build`, `status/blocked` auf #168: Die Umsetzung liegt dort, dieses Issue wird mit ihr geschlossen.
Changelog: Geschlossen mit #168 (8.0.0-beta.24, d8224ee, CI #499/#500 grün). Zweites Kriterium abgehakt; Befund in die Vergangenheitsform gesetzt; /effort in die Entscheidung aufgenommen (Effort-Änderung invalidiert den Message-Cache ebenso).
**Changelog:** Geschlossen mit #168 (`8.0.0-beta.24`, `d8224ee`, CI #499/#500 grün). Zweites Kriterium abgehakt; Befund in die Vergangenheitsform gesetzt; `/effort` in die Entscheidung aufgenommen (Effort-Änderung invalidiert den Message-Cache ebenso).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Entscheidung (2026-10-02)
Weg 2 in geschärfter Form, umgesetzt in #168 (
8.0.0-beta.24, Commitd8224ee, CI-Läufe #499/#500 grün). Es gibt keinen Modellwechsel mehr innerhalb einer Session. Die Phasen Design / Bau / Abschluss sind auf drei Skills verteilt (stack-dev,stack-build,stack-close) und übergeben über Zustände im Tracker.stack-buildundstack-closesind perdisable-model-invocation: truenur als Slash-Kommando des Betreibers aufrufbar./clearoder anderes Modell./effortwird nicht mitten in der Session gewechselt, denn eine Effort-Änderung invalidiert den Message-Cache genauso.Weg 1 (
AskUserQuestion) wäre ein weiterer Roundtrip innerhalb der Session gewesen, und ein Modellwechsel mitten in der Session verwirft den Prompt-Cache. Weg 3 hätte den Zustand nur ehrlich beschrieben, statt eine Stelle zu schaffen, an der eine Wahl tatsächlich möglich ist.Geschlossen mit #168; Umsetzung und Akzeptanzkriterien stehen dort.
Befund
stack-devSchritt 3 undstack-closeSchritt 1 boten je einen Modellwechsel an. Beide waren ausdrücklich nicht blockierend formuliert:Damit war der Break strukturell keine Entscheidungsstelle, sondern eine Zeile im Ausgabestrom. Die Sitzung sprach das Angebot aus und arbeitete in derselben Antwort weiter. Der Betreiber hätte in genau diesem Moment mitlesen und mit Ctrl+C unterbrechen müssen, damit ein Wechsel überhaupt zustande kommt. Passierte das nicht – der Normalfall –, war der Punkt vorbei, bevor jemand ihn als Punkt wahrnehmen konnte.
Beleg 1: Sitzung vom 2026-09-04 zu #43/#48/#49
Auslieferung
4.7.0/4.7.1; die erste kalte Sitzung, diestack-closebenutzt hat.stack-devendete am Publish,stack-closelief vollständig und fand zwei echte Lücken, die kein Check fängt.Beleg 2: Sitzung zu #81, 2026-09-10
Die erste kalte Sitzung, nachdem dieses Issue angelegt war.
Kumuliert: zwei kalte Sitzungen, vier Angebote, null Wechsel.
Betrachtete Wege
AskUserQuestion: verworfen, siehe Entscheidung.Akzeptanzkriterien
stack-dev,stack-closeunddocs/model-and-effort-selection.mdsagen dasselbe (erledigt in #168: Modellwahl pro Session ininstructions/dev/stack-mode.md§ Sessions and models, alle drei Skills verweisen dorthin, die Doku-Seite trägt die Begründung)disable-model-invocation, dort bleibt die Prosa; steht instack-mode.md)stack-dev-Sitzung als Beleg nachgetragen (Beleg 2)Vorgeschichte
4.7.0(3916cb9),4.7.1(24593c5),5.0.0-beta.8(f8111d0).Changelog: Zweiten Beleg nachgetragen — Sitzung zu #81, 2026-09-10, die erste
stack-dev-Sitzung seit Anlage dieses Issues. Ergebnis identisch zum ersten Beleg: Angebot ausgesprochen, kein Wechsel, alle drei Phasen auf demselben Modell. Neu diesmal: der Betreiber reagierte direkt im Anschluss an das Angebot inhaltlich auf den Plan, ging aber nicht auf die Modellfrage ein — das stützt Weg 2 (Entscheidung an den Sitzungsanfang ziehen) leicht stärker als vorher. Akzeptanzkriterium 5 abgehakt; ein neues Kriterium 6 vermerkt, dass eine dritte Sitzung bestätigend, aber nicht mehr entscheidungsnotwendig wäre. Die Entscheidung zwischen den drei Wegen bleibt offen.Changelog: Entschieden: Weg 2 in der Form aus #168. Die Phasenübergänge werden Slash-Kommandos des Betreibers (
disable-model-invocation), und es gibt keinen Modellwechsel innerhalb einer Session mehr. Belege gekürzt.kind/decision→kind/build,status/blockedauf #168: Die Umsetzung liegt dort, dieses Issue wird mit ihr geschlossen.Changelog: Geschlossen mit #168 (
8.0.0-beta.24,d8224ee, CI #499/#500 grün). Zweites Kriterium abgehakt; Befund in die Vergangenheitsform gesetzt;/effortin die Entscheidung aufgenommen (Effort-Änderung invalidiert den Message-Cache ebenso).