# Fair clock — public rules (NoCap)

**Audience:** strangers auditing speed claims.  
**Evidence state:** 2026-07-16.  
**Companion glossary:** [GLOSSARY.md](GLOSSARY.md).  
**Private ops protocol (agents):** `nocap-repo/docs/ops/FAIR_CLOCK.md` — prefer this public file + sealed Jul 15–16 summaries for **current** claim practice.

Workspace codes only. No Modal profile names.

---

## What speed means

The published speed metric is **first-passage train time**:

1. Train on the sealed recipe / pin.
2. Log official **val_disjoint** on a fixed schedule (claim-stack: every 128 steps).
3. Find the **first** step with `val_disjoint ≤ 3.3821`.
4. Read **`train_time_ms`** at that row → convert to hours: \(T = \mathrm{train\_time\_ms} / 3.6\times10^6\).
5. Compare to the public denominator:

\[
\Delta T\% = 100 \times \frac{T_{\mathrm{F1\_seal}} - T_M}{T_{\mathrm{F1\_seal}}}
\qquad\text{with } T_{\mathrm{F1\_seal}} = \mathbf{3.866\,\mathrm{h}}
\]

Positive ΔT% = fewer hours to first hit the quality bar (faster).

**Include compile warmup in \(T\).** Do not strip startup, do not substitute sliding/EMA, do not use “pretty curve” screenshots.

---

## Public denominator

| Label | Workspace | Recipe class | First-cross \(T\) |
|-------|-----------|--------------|------------------:|
| **F1_seal** | **Clock-W** | Stock **AdamW** · raw FineWeb · zloss 0 · no prior/EMA | **3.866 h** @ step **4736** |

Source: `nocap-repo/results/f1_seal/SUMMARY.md`  
Exact ms @ cross: **13,918,667.5** → CSV hours ≈ 3.866297; **publish 3.866**.

Optional same-workspace check (not a replacement denom):

| Label | Workspace | \(T\) | Note |
|-------|-----------|------:|------|
| **F1_Claim-W2** | **Claim-W2** | **3.858 h** @4768 | ~+0.2% vs F1_seal; used for seed-2029 same-workspace ratios |

---

## What is NOT the metric

| Not the metric | Why |
|----------------|-----|
| Terminal val alone | Quality without first-passage \(T\) is not a speed claim. |
| step_avg alone | Forensic only; published % uses first-cross \(T\). |
| Sliding / EMA val | Not the official disjoint endpoint. |
| Proxy @800 ΔT% | Ordinal ranking only — never published cardinal %. |
| Historical notebook F1 (~229.1 min) | Torch unlogged; provisional. |
| Matched ΔT% vs joint-QKV stock | Stock **never crossed** on sealed pairs → **N/A**. |
| “Looks faster on the dashboard” | Must recompute from CSV / sealed SUMMARY. |

---

## Pin (required for cardinal %)

| Knob | Sealed value |
|------|----------------|
| GPU | **NVIDIA A100-SXM4-40GB** exact |
| Torch | **2.13.0** (resolved **2.13.0+cu130**) |
| Quality bar | val_disjoint ≤ **3.3821** |
| Clock field | `train_time` / `train_time_ms` |

Fingerprint every run (profile/workspace code, app id, full torch string, cuda, gpu_name, seed, batch×accum×seq, kit). Seed **4242** required a relaunch after an **80GB** assignment; the seal is **40GB**.

---

## Under-claiming / noise floor

Measured stack drift ~**6%** step-time is the empirical prior for single-seed noise.

| \|ΔT%\| vs F1_seal | Publish rule |
|-------------------|--------------|
| **&lt; ~6%** (single seed) | **Do not publish as win** — noise / exploratory. |
| **6–10%** | Sealed + **multi-seed preferred**; report \(N^*\) + step_avg. |
| **&gt; 10%** or ≥200 steps earlier | One sealed seed OK for narrative; still note first-passage variance. |

Claim-stack sealed candidates: **+8.1% / +7.7% / +9.2%** on seeds 1337 / 2029 / 4242 (all ≥6%). Mean ≈ **+8.3%**.

---

## Quality vs speed

| Claim type | Needs sealed fair clock? |
|------------|--------------------------|
| Hit/miss val ≤ 3.3821 | Absolute quality; still log fingerprint. |
| Cardinal ΔT% vs F1 | **Yes** — same GPU class + torch pin; published % uses **F1_seal**. |

Examples:

- **F2b**: quality **HIT**; historical wall ≈ −2.9% vs notebook F1 → **retracted as speed evidence** (below noise floor / stack confound).
- **claim_muon_wsd**: quality **HIT**; \(T\) ≈ 3.899 h → ~**0.8% slower** than F1_seal → not under-baseline.
- **claim_muon_par**: quality **MISS** → speed N/A.

---

## Explicit non-claims

1. **Not an official NoCap win.** Local seals ≠ organizer acceptance.
2. **No matched candidate-vs-stock first-cross speedup.** Joint stock missed quality on 1337/2029; 4242 had no stock arm.
3. **No % vs historical F1.**
4. **No board % from 800-step proxies.**
5. **Candidate recipe ≠ joint stock.** Headline compares candidate to **AdamW F1_seal**, not to joint Muon stock.
6. Do **not** say “we officially won” or inflate means beyond sealed rounding (mean \(T\) ≈ **3.544 h**, mean ΔT% ≈ **+8.3%**).

---

## Defensible language (copy-safe)

> On three independent seeds (1337, 2029, 4242), the claim-stack candidate (Muon B32 + timing-cheap split-QKV) first-crosses val ≤ 3.3821 about **8% faster** than the sealed stock AdamW F1 baseline (**3.866 h**), with terminal CE ≈ 3.37. Where measured, the joint-QKV stock control misses the quality bar.

Pending organizer rules and submission.
