ground-game/reports/260809-clay-borg-attack-relief-correction.md

117 lines
4.3 KiB
Markdown
Raw Normal View History

---
id: GROUND-RPT-0007
type: report
title: "clay-borg: correction — H1-B was never measured, and it does something"
domain: consumer
repo: ground-game
status: informational
owner: bernd
topic_slug: whynot
created: "2026-08-09"
extends: GROUND-WP-0006
---
# Correction to GROUND-RPT-0004 (H1 measured)
Upstream: clay-borg `specs/FindingRegister.md` F31,
`games/ground/examples/module-panel.rs`.
**This is a correction we owe you, not a new result we chose to send.**
---
## 1. What we got wrong
We reported H1 as measured and rejected. **Half of it was never
measured.**
H1 is two modules: flat problem→stress pressure (H1-A) and ATTACK
self-soothe at Stress ≥ 4 (H1-B). Every game behind that verdict was
played by bots that **never attacked, in any game, at any seat count**.
H1-B acts only on an uncancelled ATTACK by a seat at the stress gate, so
it had no opportunity in a single one of them.
**The rejection itself stands** — group success is 0 with or without
H1-B, and that is H1-A's doing. But *"H1-B does nothing"* was never
established, and is now known to be false.
The cause was on our side and is not subtle: our bot ranked GROUND at
100 when the gate bites and ATTACK at 10, so at exactly the position
where self-soothe would pay, GROUND won the comparison every time.
---
## 2. H1-B is unreachable in the printed game
We built a probe that attacks at the gate. **Selected on its own,
`attack_relief.self_soothe_ge4` still never fires.**
Peak Stress in the baseline never exceeds its starting 2. The gate is at
4. So no ATTACK can ever *be* gated, however eagerly a seat attacks —
the baseline has no inbound Stress at all, which is the same observation
as F17 seen from the other side.
**A module can be unreachable because of an aspect it does not name.**
`attack_relief` needs a `problem_stress` module before it can act, and
nothing in its own declaration says so. That may be worth a field in the
catalog — a module's *preconditions*, distinct from its aspect — so that
"unreachable in this configuration" is detectable rather than discovered.
---
## 3. Once reachable, it does something
Same probe throughout, varying **only** the module:
| seats | `problem_stress.scoped` | `+ attack_relief.self_soothe_ge4` | group wins | DARVO arms |
|---|---|---|---|---|
| 3p | 12 | **21** | +9 | 299 → 221 |
| 4p | 19 | **28** | +9 | 294 → 213 |
| 6p | 50 | **57** | +7 | 334 → 164 |
Under flat pressure the effect shows in DARVO alone: `h1` arms **200**
against `problem_stress.flat_any_open`'s 300 / 400 / 600, with group wins
0 in both.
**Read this as the conditional it is.** *Given seats that attack at the
gate*, self-soothe raises group success by ~79 per 100 and cuts DARVO
arming by a quarter to a half. The probe is deliberately poor play — it
wins 12/100 where our ordinary bot wins 60/100 under the same module — so
this is **not** a claim that attacking is good, and **not** evidence
against F17.
**Sensitivity:** vary only the ATTACK rank. At 10 and at +55 the module
never fires; at 110 it fires in every game. Nothing about the module
changed — only whether any seat gave it a turn.
---
## 4. What we are not saying
- **Not** that H1 should be reconsidered. H1-A drives group success to 0
at every seat band and self-soothe does not move that.
- **Not** that ATTACK is good play.
- **Not** that these numbers describe a table. Every one is bots, and the
seats that produce them play badly on purpose.
**Ask:** is a *reachability* declaration worth adding to a module — the
conditions under which it can act at all — so a consumer can report "not
reachable in this configuration" instead of a number that looks like a
null result?
---
## 5. Two earlier items still open on your side
Neither is new; both were in GROUND-RPT-0006 and are unanswered.
**(a) The competitive modes are weakly tested.** No bot of ours models a
*rival* playing their objective. A mode whose point is that players
compete, measured by seats that never anticipate an opponent, is a weak
test of that mode — and we cannot fix it by measuring harder.
**(b) `problem_stress.scoped` cannot reach a decision in round one.**
Only the Surface Problem is face up, so there is never a choice between
two Problems for scope to decide. Any read of that module weighted toward
early rounds is measuring a mechanism that has not started.