From 86e387b6c7fc5087e4534fb271dbc32bb9a15dc7 Mon Sep 17 00:00:00 2001 From: arcattack Date: Thu, 23 Jul 2026 15:59:04 -0500 Subject: [PATCH] Valve forensics + KB: the boost mechanic is real; the field cook-off was a detent question Measured A/B/C (Blackhawk, sustained autofire, 150s soaks): SRM6 on Condenser2 plateaus ~531 and COOLS at share 0.91 (boost 2), climbs to the jam band at balanced (0.167), and runs at the 2000 failure line starved (0.018). MoveValve reruns the redistribute every press; veteran passes the novice guard. The field 'boosted loop 2 still cooked' therefore means the valve was NOT at the 50 detent during the fight -- the 1->5->50->0 cycle turns the loop OFF one press past max. MoveValve presses now log always-on ('[valve] -> detent N' + a CLOSED warning) so the next field session records the detents. Also: solo mission clock verified live (60s egg self-ends, '[mission] solo game clock expired' -> RunMissions returns). Co-Authored-By: Claude Opus 4.8 (1M context) --- context/subsystems.md | 15 +++++++++++++++ game/reconstructed/heatfamily_reslice.cpp | 7 ++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/context/subsystems.md b/context/subsystems.md index c5b2e8a..dfb5ae9 100644 --- a/context/subsystems.md +++ b/context/subsystems.md @@ -120,6 +120,21 @@ manual), bluish cloud screenshot-confirmed (scratchpad/flush_cloud.png). Replica receive @4aeef8 sets the alarm from the state stream — the port's reservoir state replication is not wired, so remote clouds are deferred (solo/master path complete). +## Valve boost A/B/C (2026-07-23, field "boosted loop still cooked" audit) [T2 measured] +Blackhawk, sustained BT_AUTOFIRE, 150 s soaks, `[heat-t]` 5 s cadence. Valve shares are +zero-sum (`valveState/Σ`); detent cycle per press = **1 → 5 → 50 → 0 (CLOSED) → 1** (@4ae464, +one past max turns the loop OFF). SRM6s (+ GeneratorB + Avionics) are on **Condenser2** +([heat-link] dump; the MFD loop readout matches the heatSinkIndex truth). Results, SRM6_1: +- **boost 2 (share 0.91)**: plateau ~531, then COOLS under nonstop fire — never jams/fails. +- **balanced (0.167)**: ~1162 @ 70 s and climbing (the jam band; field jams logged 1043-1469). +- **starved (0.018)**: ~1440 @ 70 s, slope → the 2000 FailureHeat line. +The valve mechanic is REAL and powerful; MoveValve reruns the redistribute on every press +(not a placebo), veteran role passes the guard. The field double-failure with "loop 2 +boosted" is therefore a DETENT question — most likely one press past max (detent 0 = closed, +share 0) — now diagnosable: valve presses log always-on (`[valve] ... -> detent N`, with a +CLOSED warning). Solo clock shim verified the same day (60 s egg self-ends; +`[mission] solo game clock expired`). + ## The four systemic checks (every subsystem) See [[reconstruction-gotchas]]: (1) shadowing (re-declared engine-base fields), (2) the `Wword` trap, (3) message-handler chaining, (4) entity validity. Plus resource-struct layout (must mirror the class diff --git a/game/reconstructed/heatfamily_reslice.cpp b/game/reconstructed/heatfamily_reslice.cpp index 6f978c5..c0bf004 100644 --- a/game/reconstructed/heatfamily_reslice.cpp +++ b/game/reconstructed/heatfamily_reslice.cpp @@ -175,9 +175,14 @@ void case 0: valveState = 1; break; // @4ae499 case 1: valveState = 5; break; // @4ae4a5 case 5: valveState = 50; break; // @4ae4b1 (0x32) - case 50: valveState = 0; break; // @4ae4bd + case 50: valveState = 0; break; // @4ae4bd -- one past max = CLOSED default: return; // @4ae497 unknown -> no change / no recompute } + // ALWAYS log a valve press (rare + forensic -- the 2026-07-23 "boosted loop + // still cooked" field case could not be reconstructed without the detents) + DEBUG_STREAM << "[valve] " << GetName() << " valve -> detent " << valveState + << (valveState == 0 ? " (CLOSED -- this loop is now UNCOOLED)" : "") + << "\n" << std::flush; BTRecomputeCondenserValves((Entity *)owner); // FUN_0049f788(this[0xd0]=owner Mech) }