diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4b95c24..e246040 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,9 @@ Versionierung [semantisch](https://semver.org/lang/de/).
## [Unreleased] – 2026-07-13 · BugHunter, NetWorker & echter Lernfortschritt
### ServiceClash
+- **Auswertung repariert:** Nach dem letzten Ticket wurde die Abschlussansicht nicht
+ geöffnet, weil der Renderer noch auf ein nicht vorhandenes Folgeticket zugriff. Die
+ Abschlussprüfung erfolgt nun vor jeder Ticketzustands-Abfrage.
- **Letztes geplantes Spiel ausgeliefert:** drei Service-Desk-Schichten mit insgesamt
**24 kuratierten Tickets** aus Incident-, Request-, Change-, Monitoring-, Backup- und
Security-Szenarien. Jede Aufgabe führt verständlich durch Art, Priorität und passende
diff --git a/src/main/resources/static/js/serviceclash.js b/src/main/resources/static/js/serviceclash.js
index 827d830..6f19b90 100644
--- a/src/main/resources/static/js/serviceclash.js
+++ b/src/main/resources/static/js/serviceclash.js
@@ -1,7 +1,7 @@
(()=>{'use strict';const view=document.getElementById('scView');let catalog=[],session=null,index=0,started=0,states={};const esc=value=>String(value??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));const api=(url,opt={})=>fetch('/api/serviceclash'+url,{headers:{'Content-Type':'application/json'},...opt}).then(async r=>{const data=await r.json();if(!r.ok)throw new Error(data.message||'Serverfehler');return data});const post=(url,data)=>api(url,{method:'POST',body:JSON.stringify(data)});const seconds=()=>Math.max(1,Math.round((Date.now()-started)/1000));const current=()=>session.tickets[index];
function renderCatalog(){view.innerHTML=`
Service Desk Simulation
Welche Schicht übernimmst du?
ServiceClash erklärt die Triage direkt im Spiel: Ordne jedes Ticket zuerst als Störung oder Anfrage ein, schätze seine Dringlichkeit ein und wähle dann die beste erste Maßnahme. Du darfst Fehler machen – bei Bedarf zeigt dir „Aufdecken“ die Begründung.
${catalog.map(s=>`
${esc(s.difficulty)} · ${esc(s.examScope)}
${esc(s.title)}
${esc(s.description)}
${s.ticketCount} Tickets${s.waves} Wellen
`).join('')}
`;view.querySelectorAll('[data-shift]').forEach(b=>b.onclick=()=>brief(b.dataset.shift));}
async function brief(slug){try{session=await api('/session/'+encodeURIComponent(slug));index=0;states={};view.innerHTML=`
So spielst du: Eine Störung bedeutet, dass etwas bereits nicht funktioniert. Eine Anfrage wünscht eine geplante Leistung. Priorität hoch wählst du bei größerer Auswirkung, Sicherheitsrisiko oder Zeitkritik. Die Punkte berücksichtigen alle drei Entscheidungen.