diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3cf62..2f65693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -258,6 +258,7 @@ die Versionierung folgt (in der aktuellen Doku-Phase) dem Dokumentationsstand de sie belegt keine Verbesserung. ### Geändert +- **Sanitäter in die Planung aufgenommen, passive Reparaturzone in den Designdokumenten nachgezogen (Refs #56).** Neuer Abschnitt „Sanitäter“ in `Infantry.md` (MS-1-Stand gegen Vollspielziel, Abgrenzung zur Zone aus #55, Stapelregel, Umsetzungsform, Fraktionsfrage nach D-027.4, Namensfrage ohne Vorgriff auf #15); `ArmorSystem.md`, `Economy.md` und `Buildings.md` berichtigt bzw. ergänzt, Q-048 gekürzt. Reine Dokumentation, keine neue Einheit, kein Code, keine Zahlen dupliziert. - **Verteidigungsplattformen fallen bei Strommangel aus (#67, D-122).** Ein Besitzer im Defizit (`PlayerEconomyState.IsLowPower`) verliert die Feuerkraft seiner Gebäuderollen: `CombatSystem` erfasst keine Ziele, feuert nicht und diff --git a/docs/gamedesign/ArmorSystem.md b/docs/gamedesign/ArmorSystem.md index 7bde125..4e8cb53 100644 --- a/docs/gamedesign/ArmorSystem.md +++ b/docs/gamedesign/ArmorSystem.md @@ -1,6 +1,6 @@ # Panzerungssystem (Armor System) -**Version:** 0.5.0 | **Status:** Entwurf – Matrix führend nach D-074, Reparaturwert nach D-104 | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 16 +**Version:** 0.6.0 | **Status:** Entwurf – Matrix führend nach D-074, Reparaturwert nach D-104 | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 16 ## Zweck @@ -90,13 +90,13 @@ Evolvierte-Einheiten und -Gebäude regenerieren statt repariert zu werden: ## Reparatur (Allianz & Legion) -Allianz und Legion heilen nicht passiv; Reparatur ist aktive, kostenpflichtige Aktion: +Allianz und Legion heilen nicht passiv und nicht am Einsatzort; Reparatur im Feld ist aktive, kostenpflichtige Aktion. **Ausnahme MS-1:** Kaserne und Fahrzeugfabrik reparieren beschädigte eigene Einheiten der Rollen, die sie produzieren können, passiv und kostenlos in einer kleinen Zone um ihren Footprint (#55, Commit `c1a5ebf`; Rate und Radius in `ConstructionSystem.PassiveRepairRateHpPerTick` und `PassiveRepairRadiusCells`, bei Low Power nur jeder zweite Tick). Die Zone gilt für beide aktiven Fraktionen, auch für die Legion: | Weg | Regel (Richtwerte v0.1) | |---|---| -| Repair-Fahrzeug / Repair-Drohne (D-014) | Reparaturstrahl: ~3–5 % Max-HP/s auf ein Ziel, Reichweite Nahbereich, nur Fahrzeuge/Gebäude, keine Infanterie | +| Repair-Fahrzeug / Repair-Drohne (D-014) | Reparaturstrahl: ~3–5 % Max-HP/s auf ein Ziel, Reichweite Nahbereich, nur Fahrzeuge/Gebäude, keine Infanterie. Vollspielziel, nicht MS-1; in MS-1 deckt die Fahrzeugfabrik-Zone Fahrzeuge ab | | Gebäudereparatur (Bau-Menü) | Repariert sich selbst auf Befehl: ~1 % Max-HP/s, Kosten ~0.5 AE pro HP (Richtwert, Feinjustage in Economy.md) | -| Infanterie | Nicht reparierbar; Allianz: Medic-Einheit heilt Infanterie (separates Heil-Profil, analog 3 %/s); Legion: **keine Infanterie-Heilung** (D-027.4 – Masse-Identität, Ausgleich über günstige Neuproduktion: Ersatz statt Erhalt) | +| Infanterie | Kein Repair-Strahl und keine Builder-Reparatur. **MS-1:** heilt nur die passive Kasernen-Zone (siehe oben), auch für die Legion. **Vollspielziel:** Allianz: Medic-Einheit heilt Infanterie im Feld (eigenes Heil-Profil, Rate offen und deutlich über der Zone anzusetzen, der frühere Richtwert 3 %/s liegt darunter; Planung in [Infantry.md](./Infantry.md), Abschnitt Sanitäter); Legion: **keine aktive Infanterie-Heilung** (D-027.4 – Masse-Identität, Ausgleich über günstige Neuproduktion: Ersatz statt Erhalt), die Zone ist keine Einheit | | Evolvierte | Keine Reparatur-Mechanik (D-011); Bio-Heiler heilt nur Infanterie | Kostenprinzip: Reparatur kostet in MS-1 kumulativ **30 % der Baukosten** für @@ -130,3 +130,4 @@ als Q-047 nach der ersten gespielten Runde zu prüfen. | 0.3.0 | 2026-07-21 | Feinschliff Sprint 2 Runde 2 (D-031) | Lead Gameplay Designer | | 0.4.0 | 2026-07-26 | Autoritätsvermerk nach D-074 ergänzt: die 6 × 6-Matrix ist alleinige kanonische Quelle und in `Nova.Simulation.Combat.DamageMatrix` implementiert; Lokaltabellen in Infantry.md/Vehicles.md aufgehoben. **Keiner der 36 Werte geändert** | Agent (unter Inhaber-Delegation, D-074) | | 0.5.0 | 2026-08-09 | D-104: die widersprüchliche 50-%-Faustregel auf den implementierten kumulativen MS-1-Startwert von 30 % vereinheitlicht; Q-047 bleibt als Balancingfrage offen | Project Owner / Agent (unter Delegation) | +| 0.6.0 | 2026-10-17 | #56: Reparaturabschnitt gegen die passive Produktionszone (#55) berichtigt – „nicht reparierbar“ und „keine Infanterie-Heilung der Legion“ gelten nur noch für aktive Heilung; Medic-Rate als überholt markiert, Verweis auf Infantry.md | Orchestrator | diff --git a/docs/gamedesign/Buildings.md b/docs/gamedesign/Buildings.md index 7843778..2158092 100644 --- a/docs/gamedesign/Buildings.md +++ b/docs/gamedesign/Buildings.md @@ -1,6 +1,6 @@ # Gebäude – alle Fraktionen -**Version:** 0.9.0 | **Status:** Entwurf – MS-1-Override verbindlich | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 16 +**Version:** 0.10.0 | **Status:** Entwurf – MS-1-Override verbindlich | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 16 ## Zweck @@ -276,6 +276,8 @@ Module werden auf dem fertigen Podest installiert (nicht als separates Gebäude) 30 % ohne Rundungsdrift oder zusätzliches Zustandsfeld. Fehlendes AE lehnt Abbuchung und Heilung atomar ab; pro Ziel wirkt nur der erste valide, erreichbare Auftrag in stabiler Reihenfolge. +- **Passive Produktionszone (#55, Commit `c1a5ebf`):** Kaserne und Fahrzeugfabrik heilen beschädigte eigene Einheiten der von ihnen produzierbaren Rollen kostenlos in einer kleinen Zone um den Footprint. Rate, Radius und Low-Power-Verhalten stehen nur im Code (`ConstructionSystem.PassiveRepairRateHpPerTick`, `PassiveRepairRadiusCells`); Einordnung in [Economy.md](./Economy.md) (Reparatur- und Verkaufsregeln). +- **Sanitäter:** keine Einheit in MS-1; Planung und Abgrenzung zur Zone in [Infantry.md](./Infantry.md), Abschnitt Sanitäter. - Repair-Drohnen und die Vollspiel-Zielrate von ungefähr 2 % TP/s sind nicht Teil des ausgelieferten MS-1. @@ -329,3 +331,4 @@ Entschieden und entfernt im Korrekturlauf Sprint 4: HQ-Grundenergie (+30 führen | 0.8.0 | 2026-08-10 | D-104-MS-1-Override ergänzt: einheitliche 3×3-Footprints, footprintbasierte Einfluss-, Gelände-, Gebäude- und Feldabstände sowie kumulative 30-%-Reparaturkosten mit 10/5 TP pro Tick; nicht implementierte Vollspielziele klar abgegrenzt | Agent (unter Delegation) / Dennis Westermann | | 0.8.1 | 2026-08-10 | Paket 16.10 nachgezogen: der Bauknopf erklärt All-of-Voraussetzungen, AE, Energie und Baustellenlimit; Energie bleibt informativ und blockiert den Platzierungsmodus nicht | Codex / Dennis Westermann | | 0.9.0 | 2026-10-17 | #67/D-122 (Entwurf): Verteidigungsplattformen fallen bei Strommangel aus (Grundprinzip „Energiebilanz“ und Abschnitt Verteidigungsplattform berichtigt; Vollspielziel nur noch für Forschung und Superwaffen) | Agent (Issue-Lauf 2026-10-17, unter Delegation) | +| 0.10.0 | 2026-10-17 | #56: Abschnitt 7 um zwei Verweiszeilen ergänzt (passive Produktionszone aus #55, Sanitäter-Planung); keine Zahlen dupliziert | Orchestrator | diff --git a/docs/gamedesign/Economy.md b/docs/gamedesign/Economy.md index 3c08ce0..a301d3e 100644 --- a/docs/gamedesign/Economy.md +++ b/docs/gamedesign/Economy.md @@ -1,6 +1,6 @@ # Wirtschaftssystem (Economy) -**Version:** 0.7.0 | **Status:** Entwurf – MS-1-Override verbindlich | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 16 +**Version:** 0.8.0 | **Status:** Entwurf – MS-1-Override verbindlich | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 16 ## Zweck @@ -112,6 +112,7 @@ nach ~4–6 min, Tier 3 nach ~12–15 min erreichbar – passend zur Ziel-Matchd |---|---| | Reparatur (Allianz/Legion, Gebäude) | **MS-1: kumulativ 30 %** der Baukosten für 0→100 % HP (D-104), anteilig über `S(h)`, ohne Rundungsdrift; Rate 10 HP/Tick, bei Low Power 5 HP/Tick | | Reparatur (Fahrzeuge) | Über Repair-Drohne (D-014) oder Werft-Funktion der Fahrzeugfabrik; bis zur Umsetzung gilt derselbe 30-%-Startwert aus D-104 | +| Passive Produktionszone (MS-1, #55) | Kaserne und Fahrzeugfabrik heilen beschädigte eigene Einheiten der von ihnen produzierbaren Rollen in einer kleinen Zone um den Footprint: **0 AE**, kein Konto wird belastet, bei Low Power halbe mittlere Rate. Rate und Radius nur im Code (`ConstructionSystem.PassiveRepairRateHpPerTick`, `PassiveRepairRadiusCells`), keine Zahl hier (D-047) | | Evolvierte | Keine aktive Reparatur: Regeneration ~1 % HP/s kostenlos, doppelt so schnell auf/nahe **lebender** Aetherium-Felder (D-011; Einschränkung auf lebende Felder gemäß D-027); kein AE-Abzug – Ausgleich über langsamere Rate | | Verkauf | 50 % der investierten AE zurück (Basiswert, keine Reparatur-Rückerstattung); 5 s Abwickel-Phase, Gebäude in dieser Zeit verwundbar und funktionslos; Evolvierte "Rückbau" übernimmt dieselbe 50-%-Regel (Resorption) | @@ -169,3 +170,4 @@ Leitplanke: Gesamt-AE-Fluss pro Spieler über ein typisches 25-min-Match ≈ 25. | 0.5.0 | 2026-08-10 | MS-1-Start auf 3.000 AE (D-077) nachgezogen und D-106 präzisiert: eine HQ-Basis je Konto, +2.000 je fertigem Lager, harte Einzahlungskappung sowie zustandsloser 25-%-Abbau des aktuellen Überhangs pro Sekunde | Codex / Dennis Westermann | | 0.6.0 | 2026-08-10 | D-104: Reparaturkosten für MS-1 auf den implementierten kumulativen Startwert von 30 % vereinheitlicht; ganzzahlige `S(h)`-Abrechnung und Low-Power-Rate präzisiert | Project Owner / Agent (unter Delegation) | | 0.7.0 | 2026-10-17 | #67/D-122 (Entwurf): MS-1-Stand der Low-Power-Regel ergänzt – Verteidigungsplattformen offline (Ziel verwerfen, Cooldown läuft weiter, ein Tick Latenz), Spielerfalle durch nicht reservierte Baustellen benannt | Agent (Issue-Lauf 2026-10-17, unter Delegation) | +| 0.8.0 | 2026-10-17 | #56: Zeile zur kostenlosen passiven Produktionszone (#55) in die Reparatur- und Verkaufsregeln aufgenommen; nur Verweis auf Code-Konstanten | Orchestrator | diff --git a/docs/gamedesign/Infantry.md b/docs/gamedesign/Infantry.md index 56ee15c..23e50f7 100644 --- a/docs/gamedesign/Infantry.md +++ b/docs/gamedesign/Infantry.md @@ -1,6 +1,6 @@ # Infanterie – Einheiten-Design (24 Einheiten) -**Version:** 0.5.0 | **Status:** Entwurf – MS-1-Override verbindlich | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 4 +**Version:** 0.6.0 | **Status:** Entwurf – MS-1-Override verbindlich | **Verantwortungsbereich:** Lead Gameplay Designer | **Sprint:** 4 ## Zweck @@ -150,6 +150,87 @@ Designlinie: Alle Evolvierten-Infanterie **regeneriert** HP langsam außerhalb d Begründung der Asymmetrie: Allianz löst Konter über Reichweite/Qualität (höchste Einzelkosten), Legion über Zahl und Fläche (niedrigste Kosten, höchste Stückzahlen), Evolvierte über Nähe und Nachhaltigkeit (Regeneration kompensiert schwächere Fernkampfwerte). Die Anti-Luft-Abdeckung per Infanterie bleibt bei allen Fraktionen auf T2 beschränkt (einzige Ausnahme: der T3-Kristallmagier der Evolvierten als mobile Flugabwehr, D-026), damit das Flugfeld (D-008) als Anti-Luft-Quelle relevant bleibt. +## Sanitäter (Planung, Refs #56) + +Dieser Abschnitt ist reine Planung. Er fügt keine Einheit hinzu, ändert keinen +Code und keine Definition; der Betatest-Wunsch („Sanitäter zunächst nur in die +Planung aufnehmen“) ist damit abgedeckt. Die Allianz-Zeile *Medic* und die +Evolvierte-Zeile *Bio-Heiler* in den Tabellen oben bleiben die Rollenskizze des +Vollspiels; hier steht, was dazu **noch zu klären** ist und wie es sich zu dem +verhält, was MS-1 heute tut. + +**MS-1-Stand gegen Vollspielziel** + +| Aspekt | MS-1 (ausgeliefert) | Vollspielziel (Planung) | +|---|---|---| +| Heilung eigener Infanterie | Passive Reparaturzone an der Kaserne (#55, Commit `c1a5ebf`): kostenlos, heilt auch im Gefecht, ist aber auf Erholung zwischen Gefechten ausgelegt, für beide aktiven Fraktionen einschließlich der Legion | Zusätzlich aktive Heileinheit (Allianz *Medic*, Evolvierte *Bio-Heiler*) | +| Reparatur von Gebäuden | Builder, kostenpflichtig (D-104) | unverändert, plus Repair-Drohnen (D-014) | +| Reparatur von Fahrzeugen | nur die Fahrzeugfabrik-Zone | Reparaturfahrzeuge (siehe [Vehicles.md](./Vehicles.md)); keine Infanterie | +| Evolvierte-Regeneration | nicht in MS-1 | Fraktionsmechanik gemäß D-011 | +| Sanitäter-Einheit | keine; `UnitRole` und `SimDefinitions` kennen keine Heilrolle | offen, erst wenn der Einheitenbestand ohnehin angefasst wird | + +Die Konstanten der Zone stehen ausschließlich im Code +(`ConstructionSystem.PassiveRepairRateHpPerTick`, +`ConstructionSystem.PassiveRepairRadiusCells`, Tickrate `SimClock.TicksPerSecond`); +dieses Dokument nennt keine Zahlen dazu (D-047, jeder Wert existiert genau einmal). +Unter Low Power heilt die Zone nur noch auf geraden Ticks, also mit halber +mittlerer Rate. + +**Abgrenzung zur passiven Reparaturzone (#55)** + +Beide heilen, dürfen sich aber nicht doppeln. Die Zone ist die Grundversorgung +*zuhause*: ortsgebunden, kostenlos, langsam, zwischen den Gefechten. Ein +Sanitäter wäre die Versorgung *im Feld*: mobil, an eine Produktionskette +gebunden, schneller als die Zone, dafür mit Kosten und einem Platz unter dem +Einheitendeckel des MVP-Manifests. Daraus folgt für die Planung: + +- Die Heilrate des Sanitäters muss deutlich über der Zonenrate liegen, sonst + ist er überflüssig. Der frühere Richtwert aus [ArmorSystem.md](./ArmorSystem.md) + (ca. 3 % Max-HP/s) liegt nach heutigem Code für MS-1-Infanterie (Max-HP aus `SimDefinitions`) **unter** der + kostenlosen Zone und ist deshalb nicht mehr tragfähig. Neue Rate: Platzhalter, + festzulegen im Balancing-Pass nach einer gespielten Runde. +- Die Zone bleibt, was sie ist: Sie ersetzt keinen Sanitäter und wird durch ihn + nicht abgeschafft. +- Wer das Feldprofil wählt (Kanalheilung auf ein Ziel, Flächenheilung oder + Sofortheilung mit Cooldown), ist offen. + +**Stapelregel (offen).** Vorbild ist die Zone: Dort gewinnt das erste passende +Zonen-Gebäude, es gibt keine Addition. D-027.6 regelt dagegen nur „aktive +Heilung stapelt nicht auf passive Regeneration“ der Evolvierten und ist hier +nicht direkt übertragbar. Zu entscheiden: Stapelt Sanitäter-Heilung auf die +Zone, stapeln mehrere Sanitäter, oder wirkt je Ziel nur die stärkste Quelle? +Empfehlung für die Entscheidung: je Ziel und Tick nur eine Quelle, die +stärkste; das hält die Heilung vorhersagbar und verhindert Sanitäter-Klumpen. + +**Umsetzungsform (offen).** D-056 schließt in MS-1 ein generisches +Auren-, Status- und Kanalsystem aus. Ein Sanitäter wäre daher, solange dieses +System fehlt, nur als fest verdrahtete Einzelregel denkbar (Zielwahl, Reichweite +und Heilrate im System selbst, wie bei der Zone), nicht als Fähigkeit im +Sinne der Tabellen oben. Reichweite: Platzhalter, in Zellen anzugeben (die +Tabelle nennt 8 m als Skizze); Werte bei Umsetzung aus `SimDefinitions` ableiten. + +**Fraktionsfrage.** D-027.4 gilt: Die Legion bleibt bewusst ohne +Infanterie-Heiler (Ausgleich über günstige Neuproduktion). Das widerspricht der +MS-1-Zone nicht, denn die Zone ist keine Einheit; sie heilt die Legion mit, und +ob diese Annäherung der Masse-Identität schadet, prüft die gespielte Runde. +Das „Legion repariert eher“ aus dem Issue steckt in den Reparaturfahrzeugen +(siehe [Vehicles.md](./Vehicles.md)), die keine Infanterie reparieren. Soll die +Legion doch eine Heilmöglichkeit im Feld bekommen, braucht das eine neue +Entscheidung, die D-027.4 ausdrücklich ersetzt. Allianz *Medic* und Evolvierte +*Bio-Heiler* sind das ausgewiesene Vollspielziel. + +**Namensfrage.** Der Anzeigename der Einheit wird nicht hier festgelegt. Die +Einheitennamen stehen insgesamt zur Überarbeitung an (#15, Namensdoktrin in +[06_Narrative.md](../production/hashkrieg/06_Narrative.md)); ein Sanitäter soll +dort mitgedacht werden, damit er nicht in dieselbe Falle läuft (doppelt +vergebene oder nicht zur Fiktion passende Namen). Anzeigenamen fließen nicht in +den Definitions-Hash ein, die Rolle (`UnitRole`) und ihre ID-Vergabe schon; +eine neue Rolle bräuchte daher eine eigene ID-Planung. + +**Nicht Teil dieser Planung:** Umsetzung in der Simulation, Eintrag in +`SimDefinitions.cs`, Art-Bestellung und Werte-Tuning. Die offene Frage steht +als Q-048 in [OpenQuestions.md](../production/OpenQuestions.md). + ## Offene Punkte - **Anti-Luft per Infanterie (Status: teilweise entschieden):** Die Evolvierte-Lücke ist durch D-026 geschlossen (Kristallmagier, Zielklasse `Both`). Offen bleibt die langfristige Frage, ob die dual-role Raketen-Infanterie von Allianz/Legion (Fahrzeug + Luft) eigenständig bleibt oder zugunsten von Flugfeld/Flak-Modulen (D-008) abgeschwächt wird – Beobachtung im Balancing-Pass v0.2, Entscheidung Game Director. @@ -174,3 +255,4 @@ Bereinigt im Korrekturlauf Sprint 4: Alpha-Mutant-Doppelwerte (Kosten/HP/DPS/Fä | 0.3.0 | 2026-07-21 | Korrekturlauf Sprint 4 (D-043–D-052, Review-Findings): Alpha-Mutant-Werte/-Fähigkeiten durch Verweis auf Vehicles.md ersetzt (D-047-Grundsatzregel, keine Doppelpflege) | Lead Gameplay Designer | | 0.4.0 | 2026-07-24 | MS-1 auf Basis- und Panzerabwehrinfanterie von Allianz und Legion begrenzt; aktive Fähigkeiten gemäß D-056 deaktiviert | Lead Gameplay Designer | | 0.5.0 | 2026-07-26 | Lokale 6 × 4-Schadensmatrix nach D-074 aufgehoben und durch Verweis auf [./ArmorSystem.md](./ArmorSystem.md) ersetzt; „Kristall" als Schadensart gestrichen (in den ScopeLedger verschoben). Einheitentabellen, Rollen und Konter-Matrix unverändert | Agent (unter Inhaber-Delegation, D-074) | +| 0.6.0 | 2026-10-17 | #56 (Planung): Abschnitt „Sanitäter“ ergänzt – MS-1-Stand gegen Vollspielziel, Abgrenzung zur passiven Reparaturzone (#55), Stapelregel, Umsetzungsform, Fraktionsfrage (D-027.4) und Namensfrage; Werte als Platzhalter, keine neue Einheit | Orchestrator | diff --git a/docs/production/OpenQuestions.md b/docs/production/OpenQuestions.md index 028adad..910dac9 100644 --- a/docs/production/OpenQuestions.md +++ b/docs/production/OpenQuestions.md @@ -1,6 +1,6 @@ # Open Questions -**Version:** 1.12.2 | **Status:** aktiv (laufend) | **Verantwortungsbereich:** Executive Producer | **Sprint:** laufend (Stand 16–18) +**Version:** 1.12.3 | **Status:** aktiv (laufend) | **Verantwortungsbereich:** Executive Producer | **Sprint:** laufend (Stand 16–18) > **Zum Stand dieses Dokuments.** Alles bis Q-040 — die Einträge selbst wie die > Abschnitte „Offene Punkte" und „Nächste Schritte" — argumentiert mit der @@ -36,7 +36,7 @@ Zentrales Register aller offenen Fragen mit Owner-Sprint und Priorität. Eine Fr | Q-045 | P3 | Health-Endpunkt für den Relay: [Sprint 15](hashkrieg/15_Sprint_Netzstabilitaet.md) Paket 15.5 sieht einen vor. Er wäre ein zweiter Listener und damit eine zusätzliche Firewallregel auf einem Dienst, dessen einzige Betriebsgrenze heute die enge Quelladress-Firewall ist. | Codebefund 2026-08-09 | Sprint 15 | offen – zurückgestellt, Nutzen gegen zweiten Listener abzuwägen | | Q-046 | P2 | Aufbewahrung der Relay-Aufzeichnungen: `.novarec`-Dateien sind der einzige Desync-Nachweis (D-089). Es gibt heute weder eine Aufbewahrungsregel noch ein Aufräumen; [Sprint 15](hashkrieg/15_Sprint_Netzstabilitaet.md) Paket 15.5 nennt ein Aufräumen, aber keine Frist. Wie lange werden sie gehalten, und ab welcher Belegung wird gelöscht? Block 4 des [Großauftrags](hashkrieg/AUFTRAG_Grossblock.md) beauftragt dazu einen **Vorschlag** für die Regel im Runbook (naheliegender Startwert 30 Tage analog 17.5); die Frist selbst entscheidet der Inhaber. | Codebefund 2026-08-09 | Sprint 15 | offen – Vorschlag kommt aus Block 4, Frist und Schwelle entscheidet der Inhaber | | Q-047 | P2 | Reparaturkosten-Höhe: D-104 implementiert 30 % des Neupreises als MS-1-Startwert, nicht als gemessenen Endwert. Zu hoch macht Verteidigung unbezahlbar, zu niedrig macht die Kosten wirkungslos. | [Sprint 16](hashkrieg/16_Sprint_Wirtschaft.md), Paket 16.9 / D-104 | Sprint 16 | offen – 30 % implementiert; die erste gespielte Runde mit 16.9 prüft die Höhe | -| Q-048 | P3 | Reparaturzone an Fahrzeugfabrik und Kaserne ([#55](https://github.com/VibecodingGermany/HashKrieg/issues/55)) und Sanitäter ([#56](https://github.com/VibecodingGermany/HashKrieg/issues/56)): beide aus dem ersten Betatest, beide bewusst nicht in Sprint 16 — #55 wartet auf eine gespielte Runde mit 16.9, #56 ist nur Doku und keine neue Einheit. 16.9 steht auf der ersten Position der Abwurfliste von Sprint 16 — entfällt das Paket, verschiebt sich die Frage nach #55 mit ihm. | T-01, Betatest 2026-08-09 | offen | offen – ohne Owner-Sprint | +| Q-048 | P3 | Sanitäter ([#56](https://github.com/VibecodingGermany/HashKrieg/issues/56)): nur Planung, keine neue Einheit. Der Rahmen steht in [Infantry.md](../gamedesign/Infantry.md), Abschnitt Sanitäter. Offen bleiben Heilrate, Stapelregel, Umsetzungsform und der Anzeigename (mit #15); sie werden nach einer gespielten Runde mit der Zone und den Reparaturkosten (16.9) entschieden. Die Reparaturzone ([#55](https://github.com/VibecodingGermany/HashKrieg/issues/55)) ist erledigt (Commit `c1a5ebf`) und gehört nicht mehr zu dieser Frage. | T-01, Betatest 2026-08-09 | offen | offen – ohne Owner-Sprint | ## Geschlossene Fragen @@ -127,3 +127,4 @@ Zentrales Register aller offenen Fragen mit Owner-Sprint und Priorität. Eine Fr | 1.12.0 | 2026-08-09 | Q-041 bis Q-048 aus den Vertagungen des Inhabers vom 2026-08-09 eröffnet: rohe IPs im Zugriffsprotokoll, Datenschutzerklärung und Widerspruchsschalter, Zeitpunkt des UI-Umstiegs, Halte-Feuer, Health-Endpunkt und Aufbewahrung der Relay-Aufzeichnungen, Höhe der Reparaturkosten, Reparaturzone und Sanitäter. Hinweiskasten ergänzt, der die Einträge bis Q-040 als historisch aus dem mit D-076 abgeschafften Gate-Regime kennzeichnet; Sprintstempel im Kopf von „7" auf den laufenden Stand berichtigt | Executive Producer | | 1.12.1 | 2026-08-09 | Q-046 um den in Block 4 des Großauftrags beauftragten Vorschlag für die Aufbewahrungsregel ergänzt (Startwert 30 Tage analog 17.5, Frist bleibt Inhaberentscheidung); Q-047 und Q-048 an die Abwurfliste von Sprint 16 gebunden (16.9 erste Abwurfposition); Hinweiskasten um den zulässigen Fall „ohne Owner-Sprint" erweitert | Executive Producer | | 1.12.2 | 2026-08-09 | Q-047 an D-104 gebunden: 30 % sind als kumulativer MS-1-Startwert implementiert; die Frage bleibt bis zur ersten gespielten 16.9-Runde als Balancingprüfung offen | Project Owner / Agent (unter Delegation) | +| 1.12.3 | 2026-10-17 | Q-048 auf #56 gekürzt: #55 als erledigt vermerkt (Commit `c1a5ebf`), Verweis auf den Abschnitt Sanitäter in Infantry.md | Orchestrator | diff --git a/reports/v8.6.0/issue-lauf-2026-10-17/08-issue-56-medic-planning.md b/reports/v8.6.0/issue-lauf-2026-10-17/08-issue-56-medic-planning.md new file mode 100644 index 0000000..1d561a3 --- /dev/null +++ b/reports/v8.6.0/issue-lauf-2026-10-17/08-issue-56-medic-planning.md @@ -0,0 +1,47 @@ +--- +issue: 56 +paket: P-56 +branch: docs/56-medic-planning +agent: Builder (Sonnet 5.5) +datum: 2026-10-17 +status: DONE (nicht committet, siehe Auftrag) +--- + +# Issue #56 – Sanitäter in die Planung aufnehmen (nur Doku) + +## Aufgabe +Sanitäter als Planung festhalten und gegen die passive Reparaturzone (#55, c1a5ebf) abgrenzen; veraltete Aussagen berichtigen. Code geprüft: `ConstructionSystem.cs` (`PassiveRepairRateHpPerTick`, `PassiveRepairRadiusCells`, `ProcessPassiveRepairZones`: kostenlos, nur eigene Einheiten der produzierbaren Rollen, erste passende Zone gewinnt, bei Low Power nur gerade Ticks) und `SimClock.TicksPerSecond`. Im Text stehen nur Konstantennamen (D-047). + +## Files Changed +- docs/gamedesign/Infantry.md – 0.5.0 → 0.6.0; neuer Abschnitt „Sanitäter“ vor den Offenen Punkten; Verlaufszeile +- docs/gamedesign/ArmorSystem.md – 0.5.0 → 0.6.0; Reparaturabschnitt (Einleitung, Repair-Fahrzeug-Zeile, Infanterie-Zeile) berichtigt; Verlaufszeile +- docs/gamedesign/Economy.md – 0.7.0 → 0.8.0; Zeile „Passive Produktionszone“ (0 AE) in der Reparaturtabelle; Verlaufszeile +- docs/gamedesign/Buildings.md – 0.9.0 → 0.10.0; §7 zwei Verweiszeilen; Verlaufszeile +- docs/production/OpenQuestions.md – 1.12.2 → 1.12.3; Q-048 auf #56 gekürzt, #55 als erledigt (c1a5ebf); Verlaufszeile +- CHANGELOG.md – eine Zeile unter [Unreleased] / Geändert, „Refs #56“ + +## Prüfungen +- `python3 .github/scripts/check_docs.py` – OK: 205 Markdown-Dateien, 5 Quality-JSONs geprüft, keine toten Links (nur Hinweise zu fehlenden Kopfzeilen in unberührten Dateien). +- `git status` – nur die sechs genannten Dateien plus dieser Bericht geändert. +- `dotnet test` nicht ausgeführt: reines Doku-Paket, kein Code berührt. + +## Nebenbefunde +- Der Code-Docstring nennt die Zone „E-3“; dieses Label wurde bewusst nicht übernommen (Verweis stattdessen auf #55/c1a5ebf). +- ArmorSystem.md nennt den Medic-Richtwert 3 %/s; nach Code heilt die Zone 90-HP-Infanterie schneller, der Richtwert ist also überholt (jetzt so vermerkt). +- Die Quellen-Zeilennummern der Spezifikation (a6858d1) wurden nachgeprüft; die Stellen stimmten inhaltlich. +- Die Zone gilt auch für die Legion; das berührt D-027.4 nicht formal (keine Einheit), ist aber im Text als Beobachtungsfrage vermerkt. + +## Offene Fragen an den Inhaber +1. Soll der Stapelregel-Vorschlag („je Ziel nur die stärkste Quelle“) als Richtung gelten, oder bleibt er offen bis zur gespielten Runde? +2. Soll die Legion trotz Zone ohne Feldheilung bleiben (D-027.4 unverändert), oder wird das nach der Runde neu bewertet? +3. #56 bleibt per „Refs #56“ offen (wie vom Inhaber gewünscht). + +## Vorschlag Commit-Titel +`docs(gamedesign): plan the medic and fence it off from the repair zone` + +## Vorschlag PR-Beschreibung +Was: Abschnitt „Sanitäter“ in Infantry.md (MS-1-Stand vs. Vollspielziel, Abgrenzung zur passiven Reparaturzone aus #55, Stapelregel, Umsetzungsform, D-027.4, Namensfrage ohne Vorgriff auf #15); Berichtigungen in ArmorSystem.md, Economy.md, Buildings.md §7; Q-048 gekürzt. +Warum: Die Zone (c1a5ebf) widersprach den Designdokumenten; der Betatest-Wunsch war nur Planung. +Bereich: reine Doku, kein Code, keine neue Einheit, keine Zahlen dupliziert (D-047). +Changelog: [Unreleased] / Geändert. Tests: check_docs.py grün; dotnet test nicht nötig. +Refs #56 diff --git a/reports/v8.6.0/issue-lauf-2026-10-17/08b-review-1-issue-56.md b/reports/v8.6.0/issue-lauf-2026-10-17/08b-review-1-issue-56.md new file mode 100644 index 0000000..0a88486 --- /dev/null +++ b/reports/v8.6.0/issue-lauf-2026-10-17/08b-review-1-issue-56.md @@ -0,0 +1,72 @@ +--- +issue: 56 +paket: P-56 +branch: docs/56-medic-planning +basis: 08b1a5e (gestapelt auf feat/67-defence-offline-low-power) +runde: 1 +agent: Reviewer (read-only, Opus 5.5) +datum: 2026-10-17 +verdict: APPROVED +--- + +# Review Runde 1 – Issue #56 (Sanitäter-Planung) + +## Ergebnis + +**APPROVED.** Kein Befund der Schwere hoch. Sachaussagen zur Reparaturzone +stimmen mit dem Code überein, der Schreibumfang ist eingehalten, der Doku-Check +ist grün. Drei kleinere Unschärfen (unten) können vor dem Commit oder in einer +Folgerunde nachgezogen werden. + +## Was geprüft wurde (und was gelaufen ist) + +| Prüfung | Ergebnis | +|---|---| +| `git status --short` / `git diff` vollständig gelesen | nur CHANGELOG.md, ArmorSystem.md, Buildings.md, Economy.md, Infantry.md, OpenQuestions.md geändert, Bericht 08 untracked – deckungsgleich mit dem Schreibumfang; HEAD 08b1a5e (#67) unberührt | +| `python3 .github/scripts/check_docs.py` (selbst ausgeführt) | Exit 0, „OK: 206 Markdown-Dateien und 5 Quality-JSONs geprüft“, keine toten Links; nur Hinweise zu fehlenden Kopfzeilen in unberührten Dateien. Builder meldete 205 – Differenz erklärt sich plausibel durch den danach angelegten Bericht 08 | +| Code-Abgleich `ConstructionSystem.cs` (`ProcessPassiveRepairZones`, Z. ~1212–1348) und `SimClock.cs` | `PassiveRepairRateHpPerTick = 1`, `PassiveRepairRadiusCells = 3`, `TicksPerSecond = 10`; kostenlos, nur eigene Einheiten, nur die vom Gebäude produzierbaren Rollen, erste passende Zone gewinnt (keine Stapelung), unter Low Power nur gerade Ticks. Alle Aussagen in ArmorSystem/Economy/Buildings/Infantry dazu korrekt | +| Rechnung „3 %/s liegt unter der Zone“ | 3 % von 90 HP = 2,7 HP/s gegen 10 HP/s (Low Power 5 HP/s) – korrekt | +| Commit `c1a5ebf` | existiert: „feat(construction): passive Reparaturzone an Fahrzeugfabrik und Kaserne (#55) (#140)“ | +| D-027.4 / D-027.6 / D-056 / D-047 im DecisionLog | Text gibt D-027.4 (Legion ohne Infanterie-Heiler) und D-027.6 (Heilschwarm stapelt nicht auf Regeneration) sinngemäß richtig wieder; D-056 Punkt 6 schließt generische Fähigkeiten/Status/Kanäle/Auren aus – korrekt zitiert. Kein Widerspruch | +| Kopfversionen und Verlaufszeilen | alle fünf Doku-Dateien gehoben (Infantry 0.6.0, ArmorSystem 0.6.0, Buildings 0.10.0, Economy 0.8.0, OpenQuestions 1.12.3), je eine Verlaufszeile, Autor „Orchestrator“ | +| CHANGELOG | eine Zeile unter `[Unreleased]` / „Geändert“, „Refs #56“ vorhanden | +| D-ID / künftige D-Nummer | keine neue D-ID, keine konkrete künftige D-Nummer genannt | +| Link `../production/hashkrieg/06_Narrative.md` | Datei existiert | +| `dotnet test` | nicht ausgeführt – reines Doku-Paket, kein Code berührt | + +## Befunde + +1. **mittel – Infantry.md, Tabelle „MS-1-Stand gegen Vollspielziel“, Zeile + „Heilung eigener Infanterie“:** nennt „Passive Reparaturzone an Kaserne und + Fahrzeugfabrik“. Nach Code (E-3-Abbildung über `ProducerRole`) heilt die + Fahrzeugfabrik keine Infanterie, nur die Kaserne. Vorschlag: „Passive + Reparaturzone an der Kaserne“ (Fahrzeugfabrik steht korrekt in der + Fahrzeugzeile). Kein Blocker, aber eine schiefe Aussage gegen den Code. +2. **niedrig – Infantry.md, gleiche Zeile:** „nur zwischen Gefechten“ ist die + Designabsicht, nicht das Verhalten: die Zone heilt auch unter Beschuss, sie + verliert nur gegen jede Waffe. Vorschlag: „heilt auch im Gefecht, ist aber + auf Erholung zwischen Gefechten ausgelegt“. +3. **niedrig – Infantry.md, Abschnitt Abgrenzung:** „für 90-HP-Infanterie“ + nennt einen Wert, den `SimDefinitions` besitzt; das steht leicht quer zur + Selbstauskunft „keine Zahlen dupliziert“ in CHANGELOG und Bericht. Vorschlag: + „für MS-1-Infanterie (Max-HP aus `SimDefinitions`)“. + +## Nebenbefunde (außerhalb des Diffs) + +- Economy.md, Zeile „Reparatur (Fahrzeuge)“ (unverändert) sagt, bis zur + Umsetzung der Repair-Drohne gelte der 30-%-Startwert. In MS-1 repariert der + Builder nur Gebäude; Fahrzeuge heilt ausschließlich die kostenlose + Fabrik-Zone. Die neue Zeile darunter stellt das richtig, die alte bleibt + missverständlich – Kandidat für eine spätere Bereinigung. + +## Ehrlichkeit des Builder-Berichts + +Ehrlich. Was als gelaufen gemeldet ist (check_docs.py, git status), ist +nachvollziehbar gelaufen; `dotnet test` ist offen als nicht ausgeführt +benannt. Einzige Abweichung: die Behauptung „keine Zahlen dupliziert“ +übersieht die 90 HP (Befund 3) – keine Täuschung, eine Unschärfe. + +## Commit-Titel + +`docs(gamedesign): plan the medic and fence it off from the repair zone` – +Conventional Commit, englisch, ≤ 72 Zeichen. Passt.