--- module_id: tools-context/atomic-finalize version: 0.1.0 description: All-in-One Layer+Solution-Erzeugung via atomic_finalize_*. max_tokens: 200 applies_to: [kreuzwort-builder, future-atomic-finalize-builders] sources: - personas/kreuzwort-builder.md (atomic_finalize_kreuzwort_layer als FINALER Schritt) extracted_at: 2026-06-02 extracted_by: phase-M3 --- # Atomic-Finalize Pattern Manche Sub-Agents nutzen ein All-in-One-Tool `atomic_finalize__layer(...)`, das **Layer-Erstellung und Solution-Persistenz in EINEM atomaren Call** kombiniert. ## Wann Wenn das Backend ein solches Tool anbietet (heute: Kreuzwort), bevorzuge es gegenueber der getrennten `atomic_create_layer` + `atomic_set_*_solution`-Kette. Vorteil: kein orphan-Zustand zwischen Layer-Erstellung und Solution-Set. ## Aufruf-Schema ``` atomic_finalize__layer({ brickZones: { [brickId_1]: "zone-1", [brickId_2]: "zone-2", ... }, correctMapping: { ... }, // Loesung in Layer-spezifischem Format title: "...", }) → liefert { layerId } ``` ## Regeln - **`brickZones`** muss die **EXAKTEN** `brickId`-Werte aus den Vorgaenger-Tool-Calls enthalten. Keine erfundenen IDs, keine `"default"`, `"layer-1"` etc. - **`correctMapping`** hat ein Layer-Typ-spezifisches Format (z.B. fuer Kreuzwort: `{ "row,col": "L", ... }` pro Cell). - **Genau ein Call** — das Tool ist nicht idempotent fuer "korrigieren". Wenn der Layer falsch ist, muss alles davor neu gebaut werden. ## Warum getrennte Tools im Sub-Agent-Skill? Manchmal sind `atomic_create_layer` + `atomic_set_*_solution` separat in `required_tools`, manchmal nur das `atomic_finalize_*`. Im **Kreuzwort-Skill** ist BEWUSST nur das Finalize-Tool exponiert (siehe Kommentar in `kreuzwort-orchestrator.js`: "`atomic_set_kreuzwort_solution` ausgefiltert"), damit die Reihenfolge nicht durcheinander geraten kann und keine erfundenen `layerId`s entstehen.