# v1.8.0 Category Authoring Iteration Log

**Purpose:** Document the category authoring process. The pilot smoke test below is part of authoring (used to confirm at least one new category produces non-zero late traps for C2 hippo-base before pre-registration locks). The pilot is NOT the v1.8 result and MUST NOT be cited as a magnitude claim.

Per `docs/RETRACTION.md`: this release does not re-assert the retracted −10pp magnitude. The pilot output below is workload-validity authoring only.

## Iteration 1 (2026-05-09, accepted)

**Categories drafted:**
- `timezone_naive` — UTC / wall-clock / daylight-saving / instants vocabulary
- `idempotency_retry` — dedupe / request-key / network / distributed vocabulary
- `float_accumulation` — kahan / accumulation / fixed-point / monetary vocabulary

**Position assignments (uniform across early/mid/late regions of 62-task sequence):**
- timezone_naive: positions [11, 41]
- idempotency_retry: positions [21, 51]
- float_accumulation: positions [33, 59]

All 6 positions are odd (clean in v1.7.x); no overlap with existing 25 even-position traps.

**Pilot smoke test (seed=42, OUT-OF-BAND from prereg seed range 0..19; hippo adapter only; --restrict-late-to 4 --budget 2000):**

```
══ Sequential Learning Benchmark ═════════════════════════
62 tasks · 13 trap categories · 31 trap encounters
────────────────────────────────────────────────────────
Condition      │ Overall │ Early │  Mid  │  Late │ Learns?
───────────────┼─────────┼───────┼───────┼───────┼────────
Hippo          │   42%   │  79%  │   8%  │  25%  │  Yes
════════════════════════════════════════════════════════
```

**Workload-validity acceptance:** late = 25% on seed 42. This is **non-saturated** (above the v1.7.7 N=4 lattice gate's lower bound of 5%; below the upper bound of 50%). Per the operational definition of "characterise" in the plan's RETRACTION compliance section, the workload is non-saturated on at least one out-of-band seed.

**Decision:** ACCEPT iteration 1. No replacements needed. No further iterations.

## Replacement candidate (NOT used — kept for record)

If iteration 1 had failed (all 3 categories saturating at 0% on the pilot), the planned replacement was:

- `seedstart_state_pollution` — Python `random.seed` × multiprocessing pickling: child workers re-derive the same seed and produce duplicate samples. Lesson uses vocabulary like "fork", "pickling", "subprocess seeding", "child process state", "multiprocessing pool" — disjoint from existing 10 + the 3 above.

This was not needed. The 3 iteration-1 categories pass the non-saturation check.

## Pre-registration anchor

Categories are committed to `benchmarks/sequential-learning/traps.mjs::TRAP_CATEGORIES` BEFORE the prereg + C2 preflight + C3 run. The Task 1 commit SHA is the audit anchor.

## RETRACTION.md compliance declaration

This release does not re-assert the retracted −10pp magnitude. The pilot results above are part of category authoring, NOT a v1.8 result. Per `docs/RETRACTION.md`, the v1.8 result will report only:
1. Sanity verdict (PASS/FAIL on the formal 20-seed run).
2. C3 per-seed lattice histogram (only if sanity passes).
3. Sign-only seed-pair direction count vs C2.

No magnitude framing.
