2026-07-13 day — the campaign hits its fork: data levers exhausted at the twin↔recall trade
Day session (conn 06:50–15:00 UTC, operator on sponsorship work; standing grant for promote/merge/publish). Continues the night-1 postmortem. Three more one-variable runs (v254, v255 + the v253 gates), the gold triage, two codex deliverables, and the treadmill guard's first firing of the campaign.
The trade matrix (why iteration stopped)
Gates: parity floors (hn/pc .97, streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. .90 — the SWAPS bar) on v1 AND triaged gold (33
rules-idiosyncratic tombstones, proposal published as 2026-07-13-parity-gold-triage.md;
default gate remains v1 until operator ratifies); the pre-publish 2pp error-analysis gate (the
NPM-promote bar); the full gauntlet.
| run | one variable | parity triaged (hn/pc/streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels.) | US recallrecallOf the spans whose gold label is a given tag, the fraction the model found. High recall means few misses. Paired with precision to compute F1. delta (regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality./localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.) | gauntlet |
|---|---|---|---|---|
| v253 (shardshardA partial output file of the corpus build, written in Parquet format. The training pipeline streams shards row by row.-v3) | +global localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. twins | .74/.99/.52 | −2.3 / −3.2 | PASS |
| v254 (shardshardA partial output file of the corpus build, written in Parquet format. The training pipeline streams shards row by row.-v4) | +comma-free context, +famous twins | .76/.99/.588 | −2.5 / −2.5 | PASS |
| v255 (shardshardA partial output file of the corpus build, written in Parquet format. The training pipeline streams shards row by row.-v5) | +US admin pairs, +directional twins | .78/.96/.5955@2k | flips 63→21 / 46→20 (repaired) | FAIL (Dublin pin re-broke, both ckpts) |
The oscillation — twins fix bare-localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. robustness and erode US admin recallrecallOf the spans whose gold label is a given tag, the fraction the model found. High recall means few misses. Paired with precision to compute F1.; the counterweight repairs US recallrecallOf the spans whose gold label is a given tag, the fraction the model found. High recall means few misses. Paired with precision to compute F1. and re-breaks bare-localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. — is a capacity/stability constraint at 29M params under the 5e-5/8k fine-tune idiom, not a shardshardA partial output file of the corpus build, written in Parquet format. The training pipeline streams shards row by row.-composition problem. Per the treadmill guard: no seventh solo run; the fork goes to the operator (documented on #1102): (a) dynamics probe (v255 composition, gentler LR/warmupwarmupThe early phase of training where the learning rate ramps up from 0 to its peak value before cosine decay. Mailwoman uses a linear warmup., 2k steps), (b) ship v254 experimental (the only gauntlet-green candidate; default blocked by the 2pp gate), (c) the #727 spanspanA contiguous range of characters or tokens in the input string, tagged with an address component type (street, locality, postcode, etc.). Parsed addresses are represented as collections of spans, possibly nested in a tree.-headattention headOne of several parallel attention computations in a layer, each free to focus on a different kind of relationship between tokens. Their outputs are concatenated — 'multi-head attention'. Mailwoman uses 4 heads. arc, (d) hold for night-2.
What the day banked besides the fork
- Gold triage applied (33 tombstones, dual-number reporting everywhere; triaged streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. denominator 267). Proposal + borderlines-kept documented; operator ratifies any default flip.
- Flip census tooling (
us-recall-flip-census.run.ts) — named both erosion mechanisms (regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. absorbed INTO localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. 40/63; exotic-script + directional-prefixed localities dropped 42/46) and proved the v255 counterweight repaired them. - #1100 secondary-address epic: both data deliverables shipped — Pub-28 C2 extension (requires-range flags + matchers; the table itself already existed, salvage-first via subagent) and the NEW per-localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for. level-semantics table (11 lexicons + IMDF ordinals, 40 tests; codex now 338 tests).
- #1101 filed + scoped (punctuation-drop augmentation; whitespace-only measured at 64% of
parity gold — operator-elevated to first-class, gauntlet
*_undelimitedkinds + metamorphic invariant in scope). - #1102 filed (the promote blocker, now carrying the fork).
- Issues #1093/#901 closed with receipts; #444/#376/#456/#996 updated; backlog triaged (59 open, categorized).
The fork resolved: option (a) ran, verdict is SCHEDULE (15:00 UTC probe)
Rather than hold the fork for the operator, the shift-close hour ran option (a) itself — the cheapest falsifier. v256-dynamics-probe: v255's exact composition, gentle dynamics only (lr 5e-5→1e-5, warmupwarmupThe early phase of training where the learning rate ramps up from 0 to its peak value before cosine decay. Mailwoman uses a linear warmup. 200→500, 8000→2000 steps). The diagnostic asked: schedule or capacity?
| signal | v255 (aggressive 8k) | v256 (gentle 2k) |
|---|---|---|
| US regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. flips (vs shipped) | 21 (from 63) | 5 / 600 |
| US localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. flips | 20 (from 46) | 0 / 600 |
| bare-localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. pins (parseaddress parsingThe process of decomposing a free-text postal address string into structured components — house number, street name, locality, region, postcode, and country — so a geocoder can resolve them to coordinates.) | Dublin re-broke | clean |
| parity streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. (v1 denom) | 0.55 | 0.4833 (2k, undertrained) |
| parity postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. | 0.96–0.99 | 0.9861 PASS |
Schedule, not capacity. The gentle LR + longer warmupwarmupThe early phase of training where the learning rate ramps up from 0 to its peak value before cosine decay. Mailwoman uses a linear warmup. held BOTH the US admin-recallrecallOf the spans whose gold label is a given tag, the fraction the model found. High recall means few misses. Paired with precision to compute F1. repair AND bare-localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. robustness at 2k steps — the two objectives that oscillated under 5e-5/8k. The oscillation was an optimization-dynamics artifact, not a 29M-param ceiling. StreetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. 0.4833 is low only because 2k ≪ 8k; the diagnostic wasn't a candidate.
Residual (persists under gentle schedule): the 5 flips are all postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one.-adjacent VT cases where "VT" absorbs into the streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. spanspanA contiguous range of characters or tokens in the input string, tagged with an address component type (street, locality, postcode, etc.). Parsed addresses are represented as collections of spans, possibly nested in a tree. — the #727 boundary-digit-absorption class, which schedule does not touch and is now the named last lever.
Caveat RESOLVED (same day): the coordinate-level check was the open question — "pins clean"
was PARSEaddress parsingThe process of decomposing a free-text postal address string into structured components — house number, street name, locality, region, postcode, and country — so a geocoder can resolve them to coordinates.-level, and the v255 FAIL was a COORDINATE assertion. Rather than the #718-trap --model
path or a destructive package swap, a --weights-cache path was added to the gauntlet (#9, commit
e0ab8b32; mirrors eval parity --weights-cache, resolves the candidate package-shaped). v256
graded through it (md5-confirmed the cache modelneural classifierThe machine learning model at the core of Mailwoman's parser — a transformer encoder (~30M parameters) trained from scratch to do BIO token classification over addresses. It learns the 'grammar' of address formats; the gazetteer supplies the 'atlas.' loaded, not the shipped one) and PASSED the
regression layerlayerOne transformer block — attention plus a feed-forward network, with normalization and residual connections — applied to every position. Stacking layers lets the model build up richer representations; Mailwoman's encoder has 6. 30/30 gated cases — including the Dublin bare-citylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. coordinate pin that broke
v255. The schedule verdict is now confirmed at the coordinate level, not just the parseaddress parsingThe process of decomposing a free-text postal address string into structured components — house number, street name, locality, region, postcode, and country — so a geocoder can resolve them to coordinates. level.
Next (operator greenlight): v2.5.7-fragment-v5-gentle-full staged and committed but NOT
launched — the full 8k run at v256's gentle schedule. Expected to recover streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. toward 0.55–0.60
without the oscillation. Held for greenlight because the probe result reframes the fork itself.
v257 trained + graded (greenlit + run same day)
Operator greenlit the fork ("unblock those and move forward"); v257 trained (8k, gentle, 0 NaNNaN (not a number). A floating-point result for an undefined operation (log of a negative, 0/0). Appearing in the training loss usually halts the run; recovering from it follows the NaN protocol., lossloss functionA number measuring how wrong the model's predictions are on a batch of examples. Training minimizes it. Mailwoman's loss combines per-token negative log-likelihood with the CRF sequence loss. 0.75→0.70) and graded package-shaped. It is the campaign's first stable candidate:
| gate | v257 | vs shipped | vs v255 unstable peak |
|---|---|---|---|
| parity streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. (triaged) | 0.5356 | +0.139 | −0.060 |
| parity house_number | 0.7671 | +0.066 | ~ |
| parity postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. | 0.9861 PASS | ~ | ~ |
| gauntlet regression | PASS (Dublin held) | holds | v255 FAILED |
| gauntlet metamorphic | PASS (5 anchor-off xfails) | holds | ~ |
| US flip census | 5 regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. / 0 localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. per 600 | preserved | better than v255 |
v257 trades ~6pp of v255's unstable streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. peak for full gauntlet stability + preserved US recallrecallOf the spans whose gold label is a given tag, the fraction the model found. High recall means few misses. Paired with precision to compute F1. —
the schedule fix at 8k scale. It does not clear the SWAPS streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. floor (0.90), so the v7 swaps
stay gated; the residual is the #727 boundary-absorption class (golden confused-tags confirm it:
"05770 VT DELONG LN" → streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. got "VT Delong"). NOT promoted: doesn't unblock v7, needs card
regen, and the golden 2pp gate is schema-confounded (golden v0.1.2 uses the flat pre-split streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels.
schema — parity is the schema-correct gate). Promote-as-strict-improvement is a clean operator call.
Full grade: models/candidates/v257-fragment-v5-gentle-full/MANIFEST.md.
Decisions under the standing grant
Merged/pushed directly to main throughout (docs, tooling, codex tables, configs). Did NOT exercise the promote/publish grant: v253/v254 fail the 2pp default gate, v255 fails the gauntlet — experimental-shipping a blocked-for-default artifact buys nothing the fork decision doesn't supersede. Treadmill compliance outranked grant flexing.
Numbers
| Session | 06:50–15:00 UTC conn (hourly cron reports) |
| Runs | 4 trained today (v254, v255, v256 probe + v253's gate battery); 7 total campaign |
| ModalModalA cloud GPU platform (modal.com) where Mailwoman trains its neural models on NVIDIA A100 GPUs. Training runs are launched via scripts/modal/train_remote.py and typically complete in ~1 hour. GPU | |
| Campaign streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. | 0.3967 → 0.5955 peak (triaged; +20pp in ~30h) |
| number→postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. | 21.8% → under 1% |
| Promote stateregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. | BLOCKED (2pp gate / gauntlet, per candidate — see matrix) |
| v7 excision stateregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. | swaps still floor-gated; everything non-modelneural classifierThe machine learning model at the core of Mailwoman's parser — a transformer encoder (~30M parameters) trained from scratch to do BIO token classification over addresses. It learns the 'grammar' of address formats; the gazetteer supplies the 'atlas.' staged and waiting |