Skip to content

feat(economy): low power takes radar first and halves repair (C4, Sprint 16.6) - #78

Merged
cubetribe merged 6 commits into
mainfrom
feat/16-6-low-power
Aug 10, 2026
Merged

feat(economy): low power takes radar first and halves repair (C4, Sprint 16.6)#78
cubetribe merged 6 commits into
mainfrom
feat/16-6-low-power

Conversation

@cubetribe

@cubetribe cubetribe commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Was

Sprint 16.6 (C4, Economy.md-Low-Power-Regel) vervollständigt die Strommangel-Wirkung:

  1. Bei Energiedefizit liefert FogOfWarSystem.GetRadarSignatures keine Pings mehr.
  2. Die Minimap prüft dieselbe Strombilanz und schaltet Panel sowie Trefferfläche ab.
  3. Produktion und Bau behalten ihren bestehenden exakten Q16.16-Malus von 0,5.
  4. Reparatur halbiert exakt von 10 auf 5 HP pro Tick.

Bewusst nicht enthalten ist die Verteidigungsabschaltung: Sie gehört zu CombatSystem und damit in den Einheitenstrang; der Befund ist in Issue #70 erfasst.

Warum

Erst wenn Radar, Karte und Reparatur tatsächlich auf ein Stromdefizit reagieren, wird der Angriff auf ein Kraftwerk zu einem taktischen Wirtschaftsziel. Die Implementierung liest nur den bestehenden Economy-Zustand; es gibt keinen neuen Befehlstyp und kein neues Zustands-, Snapshot-, Replay- oder Wireformatfeld.

Die autoritative Reparaturänderung erhält eine eigene Regelidentität: RulesHash64 steigt von Revision 1 auf Revision 2 und bindet 10/5 HP pro Tick. Revision-1-Replays und -Peers bleiben strukturell lesbar, werden gegenüber Revision-2-Hosts beziehungsweise -Peers aber vor Tick 1 abgelehnt.

Basis und Scope

Nachweis

  • ./.dotnet/dotnet test tools/Nova.SimRunner.Tests/Nova.SimRunner.Tests.csproj -c Release --no-restore: 683/683 grün auf dem committed Head.
  • Build darin: 0 Fehler, 0 Warnungen.
  • python3 .github/scripts/check_docs.py: grün (179 Markdown-Dateien, 5 Quality-JSONs).
  • git diff --check und Konfliktmarkerprüfung: grün.
  • Zwei unabhängige read-only Reviews: Konfliktsynthese, Spiegelparität, API-/Replay-/Relay-Vertrag und Scope ohne verbleibenden P1–P3-Befund.
  • Frische GitHub-Checks für aec0f5d: vollständig grün (Baseline Guard, Doku, Contributor Gate, Integrität, Relay-Smoke und Tests).

Menschliche/Unity-Sicht

Nicht gespielt. Grund: Der reale Unity-EditMode-Batchlauf wurde auf Unity 6000.5.4f1 gestartet, kam aber wegen eines wiederholten lokalen Licensing-Handshakes (Unsupported protocol version 1.18.1) nicht bis zur Testausführung; es entstand kein Ergebnis-XML. Eine manuelle Spielrunde war in dieser Agentensitzung deshalb ebenfalls nicht belastbar ausführbar.

Ersatznachweise: vollständige 683er-SimRunner-Suite, gespiegelte Radar-/Reparaturtests, Fingerprint-/Replay-/Relay-Kompatibilitätstests, sauberer Build, Dokuprüfung, unabhängige Reviews und frische GitHub-CI auf dem exakten Head.

Restrisiko: MinimapHud.OnGUI sowie das Abschalten und Wiederherstellen seiner sichtbaren Panel-/Trefferfläche sind nicht automatisiert und wurden auf diesem Head nicht visuell beobachtet. Die Simulationsseite (keine Radar-Pings, 5 HP/Tick bei Low Power, Wiederherstellung nach ausgeglichener Bilanz) ist automatisiert abgedeckt.

Changelog und Release-Impact

Ein Eintrag unter [Unreleased]: „Low Power ist eine Waffe (C4, Sprint 16.6)“.

Release-Impact: minor. Kein Zustands-, Schema- oder Wireformatbruch; die RulesHash-Kompatibilitätsgrenze Revision 1 → 2 ist beabsichtigt.

Governance

Owner-PR nach D-105: Selbstmerge erst nach strikt grüner CI und unabhängiger read-only Prüfung des aktuellen Heads.

Sprint 16.6, D-030/Economy.md shutdown order:

- Radar falls FIRST at a deficit: FogOfWarSystem.GetRadarSignatures
  returns nothing while the team's balance is low power. The economy
  becomes the third required constructor dependency (the compiler
  enumerated every host and rig again). MinimapHud goes dark with it -
  same balance, same read as the 16.5 radar gate.
- Production and construction keep the exact 0.5 Q16.16 speed penalty
  (existing).
- Repair halves exactly: 10 -> 5 HP/tick under low power (Economy.md
  repair rule; 10/2 is exact, no rounding).
- NOT included, by design: the defense shutdown. Whether a tower fires
  is CombatSystem's call alone, and Simulation/Combat/ has no notion of
  power - that input would be units-track terrain. Goes to 13B as a
  finding (Issue #70).

This branch REPLICATES the Sprint 16.5 state (PR #77: FogOfWarSystem
construction dependency, MinimapHud radar gate, BuildMenuHud radar
hint, all host/rig signature updates) as its base, because 16.6 builds
directly on the 16.5 radar functions and PR-only flow forbids stacking
on a local branch. Identical hunks in both merge directions: whichever
of #77 and this PR lands first, the other merges clean.

New tests: pings stop at deficit and resume on recovery (Fog), repair
halves exactly under low power (Construction). EditMode mirrors synced.
No baseline impact: low-power effects read committed balances; the
decay of 16.4 is what moves state, and that lands with #73.
cubetribe and others added 4 commits August 9, 2026 20:39
…ions

Der Wiedergabe-Fixture in CombatSystemTests nennt seine Wirtschaft economy;
beim Nachziehen der 16.5-Signatur blieb an einer Stelle der Name des ersten
Fixtures (factions) stehen. Die CI brach mit CS0103 ab, bevor ein Test lief.
Beide Spiegel gleich gezogen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
# Conflicts:
#	Assets/Tests/EditMode/AI/SkirmishAiTests.cs
#	Assets/Tests/EditMode/Gameplay/CanonicalMatchSetupTests.cs
#	Assets/Tests/EditMode/Simulation/CombatSystemTests.cs
#	Assets/Tests/EditMode/Simulation/ConstructionSystemTests.cs
#	Assets/Tests/EditMode/Simulation/EconomyIntegrationTests.cs
#	Assets/Tests/EditMode/Simulation/FogOfWarSystemTests.cs
#	Assets/Tests/EditMode/Simulation/ProductionConstructionIntegrationTests.cs
#	Assets/Tests/EditMode/Simulation/WeaponValuesTests.cs
#	Assets/_Project/Scripts/Gameplay/Match/MatchRunner.cs
#	Assets/_Project/Scripts/Presentation/UI/MinimapHud.cs
#	Assets/_Project/Scripts/Simulation/Vision/FogOfWarSystem.cs
#	CHANGELOG.md
#	tools/Nova.SimRunner.Tests/BarracksSpawnMatchConfigTests.cs
#	tools/Nova.SimRunner.Tests/CanonicalMatchSetupTests.cs
#	tools/Nova.SimRunner.Tests/CombatSystemTests.cs
#	tools/Nova.SimRunner.Tests/EconomyIntegrationTests.cs
#	tools/Nova.SimRunner.Tests/FogOfWarSystemTests.cs
#	tools/Nova.SimRunner.Tests/LockstepNetworkTests.cs
#	tools/Nova.SimRunner.Tests/ProductionConstructionIntegrationTests.cs
#	tools/Nova.SimRunner.Tests/SkirmishAiTests.cs
#	tools/Nova.SimRunner.Tests/WeaponValuesTests.cs
#	tools/Nova.SimRunner/Determinism10000Scenario.cs
#	tools/Nova.SimRunner/Program.cs
#	tools/Nova.SimRunner/Scale500PrecombatScenario.cs
@cubetribe
cubetribe merged commit 8512e9f into main Aug 10, 2026
9 checks passed
@cubetribe
cubetribe deleted the feat/16-6-low-power branch August 10, 2026 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant