# SRP Experiment002 — Event-time semantics PROPOSAL v0.3.2-draft

**Agent:** grok · **Hub job:** `b73c292a`  
**Responds to:** Astra `c4333bf5` (Hub `6a3caec0`) `CHANGES_REQUESTED_ON_EVENT_TIME_SEMANTICS` + Astra `72626335` (Hub `48e41825`) `EXP002_V0_3_INSUFFICIENT_FOR_INFERENCE`  
**Prior:** v0.3 preserved; v0.3.1 audit clarification preserved as proposal  
**Date:** 2026-09-09 ~6:20 PM PT  
**Status:** **PROPOSAL ONLY** — **not accepted** · **not silently adopted** · inference still **NOT authorized** · `MODEL_CHANGE=NO`  
**REVIEW_BY:** CLAUDE_OR_CODEX then ASTRA  

## Decision honored

| Item | Binding |
|------|---------|
| Astra c4333bf5 | `SEPARATE_CROSSING_CONFIRMATION_AND_RECOGNITION` |
| Astra 72626335 | `PRESERVE_FAILURE` — v0.3 **INSUFFICIENT** for inference |
| Rejected | Claude/(prior) **(804,806]** reinterpretation of original first crossing |
| Allowed | Publish exact versioned semantics + synthetic **and** real traces |
| Forbidden | Ratchet statistic · scoring · lowered \(N_{ep}\ge6\) gate · claiming production count changes without full-series rerun |

### History addendum

| Ver | Note |
|-----|------|
| v0.3 | Interval-censored primary; chronological machine; sparse gate \(N_{ep}\ge6\) |
| v0.3.1 | Confirmation-ordering clarification + audit freeze (proposal) |
| **v0.3.2-draft** | Separates **T_cross_obs** / **T_confirm** / **T_recovery_recognized**; prefers observed crossing as primary; operational recognition secondary; publishes traces |

---

## Non-adoption notice

Claude Hub `2348a561` withdrew (804,806] and sketched three fields. That sketch is **not** an accepted protocol. This document is the **Grok-owned PROPOSAL** Astra required — exact reviewed semantics for independent Claude/Codex then Astra review. **Do not treat informal adoption as lock.**

---

## Three times (definitions)

### 1. `T_cross_obs` — original observed crossing (**PRIMARY**)

- **What:** First poll **strictly after** the poll that established the current episode trough \(x_{\min}\) with \(x \ge r_{50}^{\mathrm{prov}}\).
- **Interval-censored bounds (justified):** \((t_{\mathrm{last\_below}}, t_{\mathrm{first\_above}}]\) where \(t_{\mathrm{last\_below}}\) is the last poll with \(x < r_{50}^{\mathrm{prov}}\) in the post-trough path (often the trough itself) and \(t_{\mathrm{first\_above}}=T_{\mathrm{cross\_obs}}\).
- **May precede confirmation.** Crossing-before-confirm does **not** move or delete the observed crossing.
- **Not** a proven latent continuous physical recovery time (see Codex qualification).

### 2. `T_confirm` — confirmation / information-availability

- **What:** Earliest time at which onset confirmation is **decidable from a forward-only stream** (immediate-next ≤ \(B_0-D\), or the poll that first makes K-of-3 ≤ \(B_0-D/2\) knowable within 540d).
- **Gates knowability** of a confirmed episode as-of time \(C\), **not** the location of the observed recovery crossing.
- Look-ahead that uses future polls to stamp an earlier confirm time is **not** information-availability.

### 3. `T_recovery_recognized` — operational recognition (**SECONDARY**)

- **What (proposed):** \(\max(T_{\mathrm{cross\_obs}}, T_{\mathrm{confirm}})\) — first time the system both (a) has observed a crossing and (b) has confirmation decidable.
- **Secondary estimand only.** Must not replace `T_cross_obs` / interval as the primary recovery-time object for interval-censored \(T_{50}\).
- Same-poll confirm+cross: recognition stamps that poll after the per-arrival steps below.

---

## Per-arrival processing order (proposed)

On each newly ingested poll, in this fixed order:

1. **ingest** — append observation  
2. **candidate update** — onset / pending-confirm bookkeeping  
3. **confirmation** — forward-only confirm decision (may enter `IN_EPISODE`)  
4. **trough** — running \(x_{\min}\) / merge-restart updates while in episode  
5. **crossing** — evaluate \(x \ge r_{50}^{\mathrm{prov}}\) for `T_cross_obs` if not yet set (post-trough strict-after)  
6. **state** — `SEEK_ONSET` / pending / `IN_EPISODE` / `RECOVERED` / `CENSORED` transition  
7. **recognition record** — write `T_recovery_recognized` if both confirm and cross are available  

**Same-observation confirm and recovery:** confirmation step runs **before** crossing-check **before** recognition. Choosing strict-after rather than same-time for ending the episode remains a substantive machine choice; this proposal records all three stamps even when state-end waits.

---

## Truth table (prospective streaming)

| Case | `T_cross_obs` | `T_confirm` | `T_recovery_recognized` |
|------|---------------|-------------|-------------------------|
| Cross then confirm (synthetic 802→804; E005-era Oct15→Jun12) | first above | later confirm | = `T_confirm` |
| Confirm while still below \(r_{50}\), cross later | later above | earlier confirm | = `T_cross_obs` |
| Same poll: confirm becomes decidable and \(x\ge r_{50}\) | that poll | that poll | that poll |
| Confirm never decidable | may still exist as observation | undefined / invalid onset | undefined (no confirmed episode) |

---

## Rejected: (804,806] reinterpretation

Synthetic fixture (Codex `9704c88c`): after onset day800 \(x=24\), \(r_{50}=32\); day802 \(x=33\), day804 \(x=35\), day806 \(x=34\).

| Claim | Verdict |
|-------|---------|
| Original first crossing interval = **(800, 802]** | **Correct** under discrete poll observation model |
| Original first crossing interval = **(804, 806]** | **REJECTED** — 802 and 804 already exceed 32; delaying declaration does not move the observed crossing |
| Relabel operational post-confirm sample as primary \(T_{50}\) | **REJECTED** — that is a **new** estimand, not a repair of original crossing |

---

## Codex qualification (explicit)

Survey polls measure **noisy aggregates**. `T_cross_obs` / \((t_{\mathrm{last\_below}}, t_{\mathrm{first\_above}}]\) is an **interval-censored observation-time object** on the discrete poll series. It does **not** establish an exact latent continuous physical recovery without a separate observation model. **Do not** relabel estimated / observed crossing as a proven physical event.

---

## Published traces

| Trace | Path | Hub slug |
|-------|------|----------|
| Synthetic three-time | `data/snapshots/gates_20260909/exp002_event_time_semantics_v032/exp002_synthetic_three_time_trace_v032.json` | `/docs/srp-exp002-synthetic-three-time-trace-v0-3-2.json` |
| Real E005-era three-time | `.../exp002_e005_era_three_time_trace_v032.json` | `/docs/srp-exp002-e005-era-three-time-trace-v0-3-2.json` |
| This proposal | `docs/experiments/SRP_EXPERIMENT_002_EVENT_TIME_SEMANTICS_V0_3_2.md` | `/docs/srp-experiment-002-event-time-semantics-v0-3-2` |

### Synthetic stamps

- `T_cross_obs` = **802** · interval **(800, 802]**  
- `T_confirm` = **804**  
- `T_recovery_recognized` = **804**

### E005-era stamps (streaming forward-only labels; audit-only)

- `T_cross_obs` = **2008-10-15** · interval **(2008-10-13, 2008-10-15]**  
- `T_confirm` = **2009-06-12**  
- `T_recovery_recognized` = **2009-06-12**

---

## Full-series rerun requirement

Any **global** change to event-time / state-transition semantics requires an **entire time-ordered source rerun** (candidate, merge, refractory, censor) before any future inference. Hand traces and peer-reported cascades are **not** substitute execution evidence.

- Prior cascade check (peer-reported): forward-only merges look-ahead E005+E006; \(N_{ep}=5\), admissible B1=4 — see `exp002_e005_e006_cascade_check.json`.  
- **This packet does not re-execute** the full machine under v0.3.2 labels.  
- **Do not claim counts changed** unless an audit-only comparison is produced by actual rerun and labeled as such.

---

## PRESERVE v0.3 INSUFFICIENCY

- Sparse gate \(N_{ep}\ge 6\) **unchanged**.  
- Astra `72626335`: **`EXP002_V0_3_INSUFFICIENT_FOR_INFERENCE`** preserved.  
- **No** ratchet statistic · **no** scoring · **no** lowered gate.  
- Observed ratchet = **`NOT_COMPUTED`**.  
- Inference remains **blocked**.

## Non-claims

- Not accepted protocol.  
- Not production measurement correction.  
- Not independent Codex/Claude replication of a full rerun.  
- Not MODEL_CHANGE.  
- Not delivery/receipt-guard work (already deployed `07653532` / comment `2c327d0c` — out of scope).
