Files
Masterarbeit/Versuche/Versuch_02/README.md
T
Christoph SchwörerandClaude Opus 5 3d5b691bfa Iteration 3: Modell- und Modusraster erweitert, Skill 7.0.0, V2/V3 vorbereitet
Neue gueltige Zellen in Iteration 3
- claude-opus-5/solo/high: 363 Anforderungen, 99,7 % mit Primaerbeleg,
  Belege je Anforderung Median 2,0, 38,1 Mio. Tokens
- claude-fable-5/solo/high: 241 Anforderungen, 98,3 % mit Primaerbeleg,
  89,0 % PRIMAER-Anteil, vollstaendig regelkonform, 30,6 Mio. Tokens

Damit sind 6 von 12 Zellen des Rasters belegt. Zwei Befunde daraus:

Die Belegdichte folgt dem Modell, nicht dem Effort. Opus erreicht Median 2,0
auch auf high; alle 44 Sonnet-Laeufe lagen bei 1,0. max hebt Opus auf 3,0.
Die frueher dem Effort zugeschriebene Verdopplung ist damit eingegrenzt.

Die Fable-Modellverletzung ist reproduziert und abgegrenzt. Bei builtin laufen
die Subagenten auf claude-opus-5[1m] statt Fable (zweiter Fall nach Iteration 1),
bei solo dagegen sauber. Nicht das Modell ist die Ursache, sondern Fable in
Kombination mit Delegation.

Fehlmessungen, vollstaendig protokolliert
- vier 429-Abbrueche (Session-Kontingent) aus dem Parallelblock 19:59;
  drei davon mit Teilbestand, einer ohne Ergebnis
- opus-5/builtin/high zum dritten Mal gescheitert: 790,7 Mio. Tokens ueber drei
  Anlaeufe ohne Artefakt. Zelle mit dieser Prompt-Version nicht messbar.

Skill 7.0.0 (MAJOR)
- Isolationsmechanismus modusabhaengig: --safe-mode schaltet MCP-Server und
  Custom-Agenten ab und ist mit V2/V3 unvereinbar. Smoke-Test verifiziert:
  mit Flag spawned=0, ohne Flag spawned=2. Ersatz fuer custom/MCP:
  --strict-mcp-config plus --disallowedTools Skill WebSearch WebFetch SlashCommand.
- 6.1.0: Pflichtpruefung leeres Ergebnisverzeichnis = Fehlmessung unabhaengig von
  is_error; CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0; Protokollfeld Gueltigkeit
- extract-subagenten.py: Start-Quittung wird nicht mehr als Ertragsmass ausgewiesen

Versuch 2 und 3 vorbereitet
- Prompt-Kette V1 -> V2 (02-A, angepasst an Agentendateien) -> V3 (02-B, MCP)
- V2: acht Rollen inkl. nicht delegierendem ISO-29148-Orchestrator
- V3: elf Rollen, fuenf Werkzeugserver, neue Belegklasse LAUFZEIT

Ablaufprotokoll um Phase 6 und 7 sowie die Vorbereitung von V2/V3 ergaenzt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 08:03:00 +02:00

148 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Versuch 02 – Agentengestützt (V2)
Rollenspezialisierte Agentendateien statt eines einzelnen Threads. Agentenmodus des Skills:
`custom`; die Rollen werden per `--agents` übergeben.
## Dateien
| Datei | SHA-256 | Zweck |
|---|---|---|
| `01_Prompt.md` | `DCDC0E3F…B71BCF` | Analyseanweisung, Prompt-Version **02-A** |
| `01_Agents.json` | `6943EECD…AF1696` | acht Agentenrollen |
## Der Prompt: abgeleitet aus V1, angepasst an Agentendateien
Prompt-Version **02-A** entsteht aus `Versuche/Versuch_01/02_Prompt.md`
(`F9B2A1AA…0D7849`) durch **eine** Ergänzung: den Abschnitt **Arbeitsteilung**. Alles Übrige –
Auftrag, Scope, Vorgehensschritte 0 bis 6, Blockformat, Belegklassifikation, Prüfidee,
Tracelinks, Konsolidierungsbegriff, Ergebnisstruktur – ist unverändert.
**Warum die Ergänzung nötig ist.** Prompt-Version 02 unterstellt an mehreren Stellen
stillschweigend, dass *ein* Bearbeiter die gesamte Kette durchläuft: Sie ordnet Schritte zeitlich
(erst Inventar, dann Mindestabdeckung, dann Vertiefung), vergibt fortlaufende IDs und verlangt am
Ende einen Konsistenzcheck über das Ergebnis. Wird die Arbeit auf Rollen verteilt, ist nichts
davon mehr von selbst erfüllt: IDs kollidieren, die Reihenfolge läuft rollenweise auseinander,
und eine Prüfung des eigenen Beitrags ist keine Prüfung des Ganzen.
Der Abschnitt nennt **keine Rolle** und schreibt **keinen Zuschnitt** vor – welche Rollen es
gibt, stellt der Versuchsaufbau bei. Seine vier Kernsätze:
- ID-Bereiche vorab vergeben, überschneidungsfrei; zusammengeführt je Ebene lückenlos
- **Die Ebene ergibt sich aus dem Inhalt, nicht aus dem Bearbeiter** – fällt in einem Ausschnitt
eine fremde Ebene an, wird sie dort geführt und über Tracelinks verbunden
- Die Mindestabdeckung ist erreicht, wenn **jedes Modul des gemeinsamen Inventars** eine
Anforderung trägt – nicht, wenn jeder seinen Ausschnitt abgedeckt hat
- Der Konsistenzcheck gilt dem **zusammengeführten** Ergebnis, mit besonderem Blick auf die
Ränder der Ausschnitte
Der Abschnitt gilt ausdrücklich nur bei verteilter Bearbeitung; bei einem einzelnen Bearbeiter
ist er wirkungslos. Damit bleibt der Prompt auch für einen `solo`-Lauf gültig und der fachliche
Auftrag über V1, V2 und V3 identisch.
## Die acht Rollen
| Rolle | Aufgabe | Schreibt Anforderungen? |
|---|---|---|
| `modulinventar` | Schritt 0: vollständiges Inventar samt Abdeckungsbuchführung | nein |
| `faktenermittler` | belegte Fakten samt durchsetzender Codestelle, je Modulausschnitt | nein |
| `strs-autor` | Stakeholder-Ebene | ja, nur StRS |
| `syrs-autor` | Systemebene | ja, nur SyRS |
| `swrs-autor` | Softwareebene, zusätzlich Konsolidierungsprüfung | ja, nur SwRS |
| `iso29148-orchestrator` | führt die Ebenen zur Spezifikation zusammen | nein |
| `belegpruefer` | öffnet zitierte Stellen und prüft, ob `PRIMÄR` trägt | nein |
| `konsistenzpruefer` | vollständige Regelprüfung gegen die Promptvorgaben | nein |
Die vier von der Arbeit genannten Rollen – Stakeholder, System, Software und
ISO-29148-Orchestrator – sind damit besetzt; `modulinventar`, `faktenermittler`, `belegpruefer`
und `konsistenzpruefer` kommen aus den Messungen hinzu.
**Der Orchestrator delegiert nicht.** Er startet keine Subagenten und schreibt keine
Anforderungen, sondern stellt her, was erst am zusammengeführten Bestand entstehen kann:
durchgängige Nummerierung samt mitgezogener Verweise, beidseitig geschlossene Traceability, eine
aus dem Gesamtbestand erzeugte Hypothesenliste, die Abdeckungstabelle über das gemeinsame
Inventar. Ein delegierender Orchestrator erzeugte eine zweite Ebene, deren Subagenten-Prompts
nicht protokollierbar sind – in Versuch 1 blieben so 18 von 31 Aufrufen unerfassbar.
## Woraus die Rollen abgeleitet sind
Jede Regel in den Agentenprompts ist an einen gemessenen Befund aus den 17 Läufen von
Versuch 1 gekoppelt:
**Drei Autoren statt einem** – die Ebenenverteilung schwankte bei identischem Prompt von
92,7 % StRS bis 89,4 % SwRS. Ursache: Der Prompt verlangt in Schritt 0b je Modul eine
Anforderung, sagt aber nicht, auf welcher Ebene. Getrennte Autoren machen die Verteilung
strukturell statt emergent.
**Der `faktenermittler` ist aus den Läufen abgeschrieben.** Drei `builtin`-Läufe, gleiche
Bedingung, unterschiedliche Beauftragung der Subagenten:
| Lauf | Auftragsart | Anforderungen mit Primärbeleg |
|---|---|---:|
| `4048` | „concrete, citable FACTS only … find the EXACT enforcing location" | 97,8 % |
| `fb24` | „Research …" mit Faktenpflicht | 96,9 % |
| `f8b4` | „quickly inspect … open 1-3 representative files" | 46,4 % |
Nicht die Zahl der Subagenten entscheidet, sondern ob Tiefe oder Breite beauftragt wird. Das
Stichproben-Verbot im Prompt der Rolle folgt direkt daraus.
**Der `belegpruefer` ist neu.** Die Primärbelegquote schwankte über 17 Läufe zwischen 34,6 % und
100 %. Eine hohe Quote ist wertlos, wenn die Einstufung nicht trägt – geprüft wurde sie bis dahin
nie.
**Der `konsistenzpruefer` adressiert den am häufigsten verfehlten Prüfpunkt.** Die risikobasierte
Priorisierung scheiterte in 9 von 16 gültigen Läufen, im schlimmsten Fall bei 18 von 49
Anforderungen. In einem Lauf meldete der Agent „alle 36 gedeckt", während die maschinelle Prüfung
51 risikorelevante Anforderungen fand – er hatte gegen einen zu engen eigenen Risikobegriff
geprüft. Die Rolle muss ihren Risikobegriff deshalb offenlegen.
## Ausführung
Der Skill `run-experiment` übernimmt das im Modus `custom`. Ablage der Läufe:
`<Iteration>/<ModellID>/custom/<Effort>/`.
## Wichtig: `--safe-mode` ist hier nicht verwendbar
`--safe-mode` schaltet ausweislich der CLI-Hilfe „all customizations (CLAUDE.md, skills, plugins,
hooks, **MCP servers, custom commands and agents**, output styles, …)" ab – also genau das, was
dieser Versuch untersucht. Smoke-Test am 2026-08-26 (CLI 2.1.246, identischer Aufruf, nur das
Flag variiert):
| Konfiguration | `spawned` | `by_type` |
|---|---:|---|
| mit `--safe-mode` | **0** | leer – „die Rollen sind nicht in der Agent-Registry registriert" |
| ohne `--safe-mode` | **2** | `{"modulinventar": 1, "konsistenzpruefer": 1}` |
**Ohne diesen Test wäre der erste Lauf stillschweigend als V1-Lauf gemessen worden**: `--agents`
hätte keine Wirkung gehabt, der Lauf hätte fehlerfrei durchlaufen und Anforderungen erzeugt – nur
eben ohne die Rollen, die den Versuch ausmachen.
**Der Ersatz** (Skill 7.0.0): kein `--safe-mode`, stattdessen `--strict-mcp-config` und
`--disallowedTools Skill WebSearch WebFetch SlashCommand` zusätzlich zur 33er-Denylist.
Gegengeprüft mit derselben Werkzeugabfrage: `VORGELADEN: NICHTS VORGELADEN` · `SKILLS: KEINE` ·
`WEB: KEIN WEBZUGRIFF` · alle Rollen verfügbar. Ohne die Sperre lädt die CLI **16 global
installierte Skills** (darunter `code-review`, `security-review`, `run`, `init`);
`--setting-sources ''` unterdrückt sie nicht.
**Was der Ersatz nicht abdeckt:** Plugins, Hooks und Output-Styles. Auf der Versuchsmaschine ist
davon nichts konfiguriert, das ist aber eine Eigenschaft der Umgebung und keine Garantie. Der
Skill verlangt deshalb vor jedem Lauf eine Umgebungsprüfung, deren Ergebnis ins Protokoll geht.
**Folge für die Vergleichbarkeit:** Läufe dieses Versuchs sind hinsichtlich der Isolation nicht
unmittelbar mit den `solo`- und `builtin`-Läufen aus Versuch 1 vergleichbar. Der Unterschied ist
benannt und begrenzt – er betrifft Plugins, Hooks und Output-Styles, nicht CLAUDE.md, Skills,
Webzugriff oder MCP.
## Offene Punkte vor dem ersten Lauf
1. **`extract-subagenten.py` ist nicht gegen `custom`-Typen geprüft.** Es erwartet die
eingebauten Typen `Explore` und `general-purpose`; mit `--agents` heißen sie
`faktenermittler`, `strs-autor` und so fort.
2. **Die Modellbedingung ist bei Delegation über `--model` allein nicht herstellbar.** Zwei
dokumentierte Fälle aus Versuch 1: bei Fable liefen die Subagenten auf `claude-opus-5[1m]`,
bei Opus entfielen 18,5 Mio. Tokens (4,72 %) auf `claude-sonnet-5`. Nach jedem Lauf
`modelUsage` prüfen und die Modellbedingung nicht als gesichert annehmen.
3. **Hintergrund-Subagenten und Zeitlimit.** Der Skill setzt seit 6.1.0
`CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0`; ohne diese Einstellung bricht der Headless-Modus
nach 600 s ab und meldet dabei `is_error: false` bei null Ergebnisdateien.
4. **Umgebungsprüfung** auf Hooks, Plugins und Output-Styles im User-Profil – siehe oben.