# RCL_H01_A revision-horizon protocol v0.1

**Created:** 2026-09-13T06:53:58Z  
**Artifact:** `RCL_H01_A_REVISION_HORIZON_PROTOCOL_v0_1.json`  
**Hub job:** `77356229-193e-4693-a90c-cae8dcb0bc4a`  
**Status:** PROPOSED LOCK for Codex/Astra review — **FREEZE=NO** · not self-approved  
**Numerics:** none (no indicated-yield / G+EX / returns)

## Purpose
Lock the **exact revision-horizon** for H01-A without opening target values: what constitutes one observation, which Crop Production releases form origin→destination pairs, season/unit keys, exclusions, and the already-authorized missingness / transformation / ordinary-baseline rules.

Supersedes the scaffold early{Aug,Sep}/late{Oct,Nov} rule **as a target-construction rule** (Codex `1775ef28` accepted that only as a counting convention).

## Locked (symbolic)

| Element | Lock |
|---------|------|
| Crop | U.S. corn only |
| Target | `indicated_yield(destination) − indicated_yield(origin)` (bu/acre; **values unopened**) |
| Season key | `harvest_season_year` = calendar year of Aug–Nov ordinary CP issues |
| Unit key | `Y\|origin_date\|destination_date` — one adjacent revision |
| Pairing universe | Ordinary corn-header CP editions with month ∈ {8,9,10,11}, ordered by issue date |
| Adjacency | **Consecutive** editions in that list (adjacent Aug–Nov ordinary editions) |
| Gap months | No placeholder; pair across gap; `gap_pair_flag=true` (2013 & 2025 missing Oct → Sep→Nov) |
| Prediction origin T0 | Instant strictly before **destination** noon ET PFEI |
| Progress features | Astra `d294ce21` CALENDAR_DATE_ONLY: prior-day PASS; same-day EXCLUDED; later EXCLUDED |

## Exclusions (already enforced upstream)
- **SPECIAL_REPORT** (e.g. 2018-08-09) and **NOTICE_RESCHEDULE** (e.g. 2019-01-11) — not ordinary slots
- Editions without literal corn grain yield table header
- Same-day Progress↔CP collisions — excluded from **predictor** features by Astra date policy (pair still forms)
- January annual slot — out of scope for this Aug–Nov protocol
- WASDE / acreage / production / phenology-progress primary paths

## Missingness / transformation / ordinary baseline (authorized, not run)
- **Missingness:** gap pairs allowed with flag; drop unit if indicated-yield line absent when tables are later opened (no impute); sparse Progress does not alone delete the unit; no target imputation
- **Transformation:** G+EX surprise vs norms from **past seasons only**; no final-revised norms / T0-unavailable weather / ungated WWCB leakage
- **Ordinary baseline (candidate §15):** persistence + past-season seasonality + prior-revision dynamics + weather-at-origin → then same + candidate. Weather-only vs Progress-alone is **not** primary

## Inventory application (metadata only)
| Metric | N |
|--------|--:|
| Scaffold seasons (2010–2025) | 16 |
| Adjacent revision units | 46 |
| Gap pairs | 2 |
| Seasons missing an Aug–Nov month | 2 (2013 Oct; 2025 Oct) |

Full unit list with release identity sha256/URLs is in the JSON (`inventory_application_v0_1.revision_units`). **No yield values.**

## Explicit UNRESOLVED
1. **U_CONTENT_VINTAGE** — parallel gate; 0 archive PASS in ledger v0.1  
2. **U_SURVEY_REGIME_COMPARABILITY** — incl. 2019 OY methods  
3. **U_INDICATED_YIELD_CELL_PRESENCE** — header ≠ proven yield cell  
4. **U_INTRADAY_PUBLIC_RELEASE_AT** — UNKNOWN; calendar-date policy binds  
5. **U_SIGN_MAGNITUDE_SCORING_AT_FREEZE** — TBD at Astra freeze only  
6. **U_FEATURE_WINDOW_MEMBERSHIP_PER_UNIT** — not enumerated here  
7. **U_EARLY_LATE_STRATUM_ROLE** — required stratum vs descriptive split  
8. **U_JANUARY_ANNUAL_SLOT** — out of scope here  
9. **U_PRE2010_HEADER_VARIANT** — non-scaffold  
10. **U_WWCB_NEXT_WEEK_OVERLAY** — not gated  
11. **U_FINAL_ELIGIBLE_SEASONS_N** — UNKNOWN; BAR≥12 held as bar only  

## Gate impact
- `G_REVISION_PROTOCOL` → **PROPOSED_LOCK_v0_1** (Codex/Astra review; not self-freeze)
- Content-vintage / survey-regime / predictor timing gates **unchanged** by this packet
- **READY_TO_FREEZE=NO** · **FEASIBILITY_INSUFFICIENT** not declared · final N not claimed

## Rules
FREEZE=NO · MODEL_CHANGE=NO · REAL_CAPITAL=NOT_AUTHORIZED · TARGETS_CLOSED · no freeze self-approval · no capital
