Flags ohne Setzer, Zustände ohne Leser: toter Code in CORE, INPUT und GAME (Folgebefund zu #9) #21
Labels
No labels
accessibility
bug
cleanup
consistency
crash
critical
game-feel
gameplay
high
input
level-generation
low
maintainability
medium
pause
physics
responsive
security
spec-gap
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gilli/pulse-sprint#21
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Flags ohne Setzer, Zustände ohne Leser: toter Code in CORE, INPUT und GAME (Folgebefund zu #9) #21"
By gilli — Open
cleanup
low
maintainability
0 comments
Behoben in
e4952a0, Doku in86a481d(issues/README.md, Befund 21).Gestrichen (jeder Bezeichner jetzt 0-mal im Dokument, geprüft in
tests/issue9.mjs):o.deadaus beiden Kollisionsschleifen;hitTest()delegiert auftestBox(…, 0)– eine Geometrie, ein Ortbody.dead(makeBody-Initialisierung und Sturz-Zweig) –ev.fellbleibt; die Tests (harness, issue2, issue14, issue15, issue17) lesen jetztev.fellbzw.y > K.FALL_DEATH_Ystatt des toten FeldesS.paused(Pausenzustand istS.state),S.newRecord(dreimal geschrieben,isRecordwird lokal entschieden)ev.releaseTheta,ev.leftGround(gesetzt, nie gelesen)gen.stats.attempted(immer dieselbe Zahl wietried)gen.lastPitHook(gesetzt, nie gelesen)pit.double(kein Leser)hooks.onPointer-Aufrufstellen (Vertrag, den niemand erfüllt) und der dadurch totetoLogical-Aufruf inendPointersimStep(K.FIXED_TIMESTEP, false)reduced ? "GREIFEN" : "GREIFEN"-Zweig;hintGrabträgt den Parameter gar nicht mehr (der Aufrufer zeichnet beireducedohnehin keinen Text)Behalten als gebundene Test-API, im Code dokumentiert:
pit.platform–tests/soak.mjsliest es für die Grubenbreiten-Invariante (Plattform-Gruben dürfen per Design breiter als jeder Sprung sein). Der Befund „kein Leser“ trifft nurpit.double.INPUT.state.anyPointerDown– dokumentierter Test-Beobachter fürtests/browser_issue8.py(„kein halboffener Zeiger“);tests/issue9.mjsprüft jetzt sein beobachtbares Verhalten.Hook-Vertrag: die Doku-Zeile von
INPUT.initnennt jetzt den tatsächlichen Satz{onPause, onRestart, onMute, onFocus, onPrimary, onGesture, onHookPoint(logischer Punkt)}–onGesturewar undokumentiert und wird ungeschützt gerufen;tests/issue9.mjsbeweist denTypeErrorbei fehlendem Hook und dass der dokumentierte Satz sauber läuft.ev.assistedLandingbleibt: seit #22 hat es einen Produktleser (landAssistedim Solver,verifyContentverwirft assistierte Ketten-Landungen) und eine Prüfung intests/issue22.mjs– der Befund galt für den Stand von42f3cce.Verifikation:
tests/issue9.mjs22 → 41 Prüfungen (12 gestrichene Bezeichner 0-mal, Gegenprobe, dass keine lebenden Event-Felder erwischt wurden:ev.rollEnd/landed/fell/grabbed/grabCancelled/released/slack/jumped/rollStart/assistedLanding). Vorher waren issue2/issue14/issue15/issue17 rot (sie lasenbody.dead) und der Soak rot (pit.doubleüber die weggefallene Plattform-Markierung); danach alle 15 Node-Suiten und alle 12 Browser-Suiten grün (browser_flow-Einzelwert einmal über der bildratenabhängigen Schranke – bekanntes Messartefakt, 3/3 Wiederholungen grün, die verbindliche deterministische Referenztests/issue2.mjsgrün).Behoben in
e4952a0, Doku in86a481d(issues/README.md, Befund 21).Gestrichen (jeder Bezeichner jetzt 0-mal im Dokument, geprüft in
tests/issue9.mjs):o.deadaus beiden Kollisionsschleifen;hitTest()delegiert auftestBox(…, 0)– eine Geometrie, ein Ortbody.dead(makeBody-Initialisierung und Sturz-Zweig) –ev.fellbleibt; die Tests (harness, issue2, issue14, issue15, issue17) lesen jetztev.fellbzw.y > K.FALL_DEATH_Ystatt des toten FeldesS.paused(Pausenzustand istS.state),S.newRecord(dreimal geschrieben,isRecordwird lokal entschieden)ev.releaseTheta,ev.leftGround(gesetzt, nie gelesen)gen.stats.attempted(immer dieselbe Zahl wietried)gen.lastPitHook(gesetzt, nie gelesen)pit.double(kein Leser)hooks.onPointer-Aufrufstellen (Vertrag, den niemand erfüllt) und der dadurch totetoLogical-Aufruf inendPointersimStep(K.FIXED_TIMESTEP, false)reduced ? "GREIFEN" : "GREIFEN"-Zweig;hintGrabträgt den Parameter gar nicht mehr (der Aufrufer zeichnet beireducedohnehin keinen Text)Behalten als gebundene Test-API, im Code dokumentiert:
pit.platform–tests/soak.mjsliest es für die Grubenbreiten-Invariante (Plattform-Gruben dürfen per Design breiter als jeder Sprung sein). Der Befund „kein Leser“ trifft nurpit.double.INPUT.state.anyPointerDown– dokumentierter Test-Beobachter fürtests/browser_issue8.py(„kein halboffener Zeiger“);tests/issue9.mjsprüft jetzt sein beobachtbares Verhalten.Hook-Vertrag: die Doku-Zeile von
INPUT.initnennt jetzt den tatsächlichen Satz{onPause, onRestart, onMute, onFocus, onPrimary, onGesture, onHookPoint(logischer Punkt)}–onGesturewar undokumentiert und wird ungeschützt gerufen;tests/issue9.mjsbeweist denTypeErrorbei fehlendem Hook und dass der dokumentierte Satz sauber läuft.ev.assistedLandingbleibt: seit #22 hat es einen Produktleser (landAssistedim Solver,verifyContentverwirft assistierte Ketten-Landungen) und eine Prüfung intests/issue22.mjs– der Befund galt für den Stand von42f3cce.Verifikation:
tests/issue9.mjs22 → 41 Prüfungen (12 gestrichene Bezeichner 0-mal, Gegenprobe, dass keine lebenden Event-Felder erwischt wurden:ev.rollEnd/landed/fell/grabbed/grabCancelled/released/slack/jumped/rollStart/assistedLanding). Vorher waren issue2/issue14/issue15/issue17 rot (sie lasenbody.dead) und der Soak rot (pit.doubleüber die weggefallene Plattform-Markierung); danach alle 15 Node-Suiten und alle 12 Browser-Suiten grün (browser_flow-Einzelwert einmal über der bildratenabhängigen Schranke – bekanntes Messartefakt, 3/3 Wiederholungen grün, die verbindliche deterministische Referenztests/issue2.mjsgrün).Behoben in
e4952a0, Doku in86a481d– Details im Kommentar oben; tests/issue9.mjs führt die Schreib-/Lesekontrolle (41 Prüfungen).body.deadexistiert seit #21 nicht mehr – „5 Minuten Spielzeit ohne Tod“ kann nicht mehr fehlschlagen #25