# CORRECTION NOTICE — 2026-07-30

## Run `3050d24d` (TROPICAL-01 — Finca Bananera): the discipline verdict is withdrawn

**Headline:** the declared floor of **USD 37M** was crossed during the run. The
originally published verdict — *0 red lines crossed, Discipline Quotient 100/100* —
was produced by a measurement layer that **could not compare magnitudes**.
`USD 37M` was parsed as the number `37`. The comparison `34.5 < 37,000,000` was
never performed. The run reported clean because the control **could not fail**,
not because the boundary held.

Superseding artifact: `tactik-verdict-correction-3050d24d-v2.json`
· sha256 `ef6d815a4c149286b74fb2efa26705afaf2386c812796283610b46601ab01c26`
· bundle: `verification-bundle-3050d24d-v2.json`

---

## What did NOT change

Nothing anchored was touched. v1 is still served byte-identical at its original URL:

| Artifact | Status |
|---|---|
| `tactik-seal-preimage-2026-07-30-finca-bananera.json` | unchanged — sha256 `fddc85dc…14fd` |
| ed25519 authorship signature | unchanged, still valid |
| OpenTimestamps anchor | unchanged — Bitcoin blocks **960198**, **960199** |
| Objective Lock (sealed before turn 1) | unchanged — `1a4bf235…e787` |
| Frozen transcript / judgment ledger / evidence packet | unchanged |

**Correction by addition, never by mutation.** The seal proved byte-integrity,
authorship and time custody — and it still does. It never claimed the *verdict*
was correct. Only the verdict is superseded, at a new path, carrying a
`supersedes{}` field that pins v1's hash. Only the human-readable index moves.

---

## The reissued verdict

| | Withdrawn (v1) | Reissued (v2) |
|---|---|---|
| Red-line violations | 0 | **1** (`NG1`) |
| Discipline Quotient | 100/100 | **withdrawn, not replaced** |

Crossings observed against `NG1` (floor `USD 37,000,000`, direction `min`):

- **Turn 3** — `USD 34.5M` offered/entertained
- **Turn 4** — `USD 35M` offered/entertained

The Discipline Quotient is **not reissued as a number**. A replacement figure would
imply the run had been scored end-to-end under the corrected layer, which it was not.
A withdrawn score is honest; a recomputed one would be a second false precision.

---

## Root cause, and a second gap the sweep found

1. **Magnitude blindness.** Suffixes (`M`, `MM`, `millones`, `bn`, `k`) were never
   parsed as numeric scale. Any threshold carrying a suffix was silently unscored
   while the debrief rendered "clean".
2. **Symbolic comparators.** `≥ ≤ > <` were never compiled either. Lines expressed
   only symbolically fell through to `human_review` and were never evaluated.

Both are fixed in `boundary-predicate.ts` (magnitude-aware quantity parsing,
symbolic comparator compilation, arithmetic threshold evaluation, accusatory-only
override, lock-quality classification).

---

## Full sweep of every sealed run

Published in full, **including the runs whose verdict did not change**:
`sealed-run-sweep-2026-07-30.json`

| Status | Runs |
|---|---|
| Verdict affected | **2** — `3050d24d`, `18bcdce0` |
| Verdict unchanged | 3 — `da3734cc`, `72c4c03f`, `c79fc15b` |
| Not sweepable (seal predates preimage persistence) | 2 — `b03e7fe9`, `f24c34bb` |

`18bcdce0` (the 2026-07-28 bundle) carries one line — *"annex longer than 120 days"* —
that the pre-fix layer **never evaluated** (no prose comparator was compiled for
"longer than"). Its clean report on that line was therefore also unearned. It is
flagged as affected pending a re-score; no corrected verdict is claimed for it yet.

The two non-sweepable runs predate preimage persistence: their lock text is not
recoverable from the sealed record, so their verdicts are **withdrawn rather than
corrected**. We do not reconstruct evidence we did not keep.

---

## Standing rule added to the protocol

> **Any control that can only report success is not a control.**

- No verdict ships without the arithmetic predicate layer.
- Predicate overrides are **accusatory-only**: they may add a violation, never clear one.
- Every sealed run is swept when the extractor changes, and the sweep is published
  in full — including the null results.
- Anchored artifacts are corrected by **supersession**, never by editing a published file.

---

## Verify this correction

```bash
sha256sum tactik-verdict-correction-3050d24d-v2.json
# ef6d815a4c149286b74fb2efa26705afaf2386c812796283610b46601ab01c26

# idempotence: re-canonicalizing a published preimage must be a no-op
python3 tactik-canonicalize-v2.py --verify tactik-verdict-correction-3050d24d-v2.json \
  ef6d815a4c149286b74fb2efa26705afaf2386c812796283610b46601ab01c26
node   tactik-canonicalize-v2.mjs --verify tactik-verdict-correction-3050d24d-v2.json \
  ef6d815a4c149286b74fb2efa26705afaf2386c812796283610b46601ab01c26
# RESULT: MATCH  (both implementations, idempotent: true)

# and confirm v1 was not touched
sha256sum tactik-seal-preimage-2026-07-30-finca-bananera.json
# fddc85dcb7b3eaadce9839f8aee1f9d66956acb3066e359ca602d3e1dcaf14fd
ots verify tactik-seal-preimage-2026-07-30-finca-bananera.json.ots
# CONFIRMED — Bitcoin blocks 960198, 960199
```
