CodeEvolver Memory
memory last updated at iteration number: 26
Run id: 20260617092234 Seed branch: codeevolver-20260617092234-main Seed architecture: DSPy 3-Hop ColBERT Retrieval Pipeline with Resource-Penalized Evaluation
Overall Progress
- Iteration 0 (Seed Program): Valset score 0.4691. Seed uses summarize→query generation for hops 2/3. Problems: verbose question-style queries, stagnant hops 2 and 3, failure to extract named entities visible in retrieved text.
- Iteration 1: Subsample 0.519→0.639 (+23%); Valset score 0.6886 ✅. Replaced summarize→query with
IdentifyNextTargetentity-name targeting + deduplication. Major gain. - Iteration 2: Subsample 0.6387→0.6574 (+2.9%); Valset score 0.7171 ✅. Added 4th hop + improved IdentifyNextTarget prompt (title-only coverage check, removed
previous_queries). Accepted. - Iteration 3: Parent subsample 0.5976→child 0.6374 (+6.7%). Valset score N/A (not evaluated). Added
fruitless_queriesfeedback field, strengthened entity-targeting prompt (person-vs-works nuance, specific article granularity), and incremental per-hop deduplication. Note: the planned slot-reservation (early_docs[:14]cap) was attempted and reverted due to catastrophic regression (–26% on subsample Round 1). Accepted. - Iteration 4: Parent subsample 0.5777→child 0.6972 (+20.7% relative); Valset score 0.7968 ✅ (new best). Replaced
fruitless_querieswithprevious_queries(tracking ALL queries), and replaced sequential hop accumulation with round-robin interleaving. Fixed 5 examples, regressed 2 (LLM stochasticity). Accepted. - Iteration 5: Parent subsample 0.8366→child 0.7370 (–11.9%); Valset score N/A (rejected). Restructured
IdentifyNextTargetso the second-hop scan always runs (not as fallback). The second commit added a "PRIORITIZE second-hop entity" rule that caused major regression (ex12, ex15); it was reverted but the evaluation had already been scored at 0.7370. The second-hop scan principle itself (without the aggressive priority rule) only cost ~1 example (0.8167 vs. 0.8366) — within noise. Rejected. - Iteration 6: Parent subsample 0.8366→child 0.7968 (–4.7%); Valset score N/A (rejected). Two rounds attempted: Round 1 added
PlanAllTargetspre-planning + “STRONGLY PREFER” instruction inIdentifyNextTarget— catastrophic –28.5% regression (0.8366→0.5976), reverted. Round 2 replaced pre-planning with a programmatic query-retry mechanism (_get_query_with_retry) that retries once when the LM returns a query already inall_previous_queries. Round 2 scored 0.7968 — a –4.7% regression vs parent, likely pure stochasticity (2 new failures unrelated to the retry path). Rejected. Current best valset is still 0.7968 (candidate 4, iteration 4). - Iteration 7: Parent subsample 0.7769→child 0.7171 (–7.7%); Valset score N/A (rejected). Two rounds attempted: Round 1 added a
build_context()helper that prepended an explicit “RETRIEVED ARTICLE TITLES” section to context + carried the retry mechanism from iter 6. Updated Step 2 to reference the title list. Round 2 reverted the title-list context format but kept the retry mechanism and rewrote Step 2 with concrete false-presence examples (Jonathan Lynn, Bill Watts). Both rounds scored identically at 0.7171. Rejected. Current best valset is still 0.7968 (candidate 4, iteration 4). NOTE: The iteration 7 Round 2 code (retry + strengthened Step 2 prompt) is documented in codeevolver.md as the “current program” architecture but is NOT the live best program. - Iteration 8: Parent subsample 0.7570→child 0.8548 (+12.9%); Valset score 0.7554 (accepted as candidate 5, but below best). Added a 5th retrieval hop (same
ChainOfThought(IdentifyNextTarget)pattern, k=7) +no_results_queriesinput field that surfaces queries returning 0 ColBERT results + Step 6 instructing LM to try an alternative name when a query had zero results + Step 1 strengthened to require comparison subjects. Subsample gain was +12.9% (5 fixes: ex40 Tamil film chain, ex64 HK Film Awards, ex87 Warren Fu music director, ex123 Christian Poulsen, ex137 African Cats pivot). However, valset declined to 0.7554 — a –5.2% regression vs best. Current best valset is still 0.7968 (candidate 4, iteration 4). - Iteration 9: Subsample 0.7370→0.7171 (−2.7%, within ±3% stochastic noise band); Valset score N/A (rejected). Built on candidate 4 (iter4). Added programmatic query-retry mechanism (
_get_query_with_retry), strengthened Step 2 with concrete false-presence example ("Person B" inside "Person A" article is not covered), rewrote Step 4 to scan retrieved bodies CONCURRENTLY with Step 3 plus a PRIORITY RULE preferring implied entities over "peripheral claim entities." Round 1 eval #1 scored 0.7570 (+2.7% vs parent), but re-eval of the SAME SHA scored 0.7171 (−2.7%) — confirming ±3% per-run variance from gpt-5.4-nano at reasoning_effort=low. Round 2 (added a second sentence to Step 2 clarifying implied entities from Step 4 also need direct retrieval) was tested and reverted: 3 new regressions vs 1 fix (ex87). Rejected. Current best valset still 0.7968 (candidate 4, iteration 4). NOTE: codeevolver.md now describes the iter9 Round 1 program (retry + concurrent Step 4 with PRIORITY RULE + false-presence Step 2 example), but candidate 4 remains the best valset candidate. - Iteration 10: Subsample 0.7356→0.6958 (−5.4%); Valset score N/A (rejected). Built on candidate 5 (iter8, 5-hop, valset 0.7554 — forced by hereditary-distance quota). Added
_normalize_query+_get_query_with_retryfor duplicate detection, removed inertno_results_queriesfield, strengthened Step 2 false-presence example (Person A | text mentioning Person B → Person B not covered), rewrote Step 4 with aggressive "OUTPUT THAT IMPLIED ENTITY AS YOUR QUERY IMMEDIATELY" directive. Round 1 scored 0.6958: all 11 parent failures persisted, plus 2 new regressions (ex84/Simone Bolelli, ex98/Queens). Round 2 softened Step 4 (removed "IMMEDIATELY") — ex84 recovered but ex98 (Queens) persisted plus 2 additional hidden regressions in examples 108–147. Final score unchanged at 0.6958. Net 4 new regressions introduced vs parent. Rejected. Current best valset still 0.7968 (candidate 4, iteration 4). Key lesson: The 5-hop architecture is confirmed fragile — every prompt change that succeeded on 4-hop has been neutral or negative on 5-hop. Candidate 5 is not a productive base for incremental improvements. - Iteration 11: Subsample 0.7570→0.7769 (+2.6%); Valset score N/A (accepted as candidate 6). Built on candidate 4 (4-hop, valset 0.7968 — correct base). Round 1 cherry-picked retry mechanism (
_normalize_query+_get_query_with_retry) onto candidate 4 and expanded Step 1 (comparison-subject nuance "partner of Y → Y is required"), Step 2 (false-presence concrete example), and Step 4 (examples: doubles partner, adapted song, film production stunt-performer worked on, broader parent article). Round 2 added phantom-entity guard to Steps 1+3 — LM must skip descriptive claim phrases ("feather of truth", "lake of fire", "Chinese film studio") and ONLY check entities from Step 1 in Step 3. Net: fixed ex76 (Delmer Daves, retry) and ex100 (20th Century Fox, phantom guard). Phantom guard failed to fix ex65 (Ancient Egyptian religion — LM still invented "Weighing of the Heart" in Step 3). Round 1 was neutral (0.7570); Round 2 reached 0.7769. 11 failures vs 12 parent failures. Current best valset still 0.7968 (candidate 4, iteration 4). - Iteration 12: Subsample 0.8167→0.8366 (+2.4%); Valset score 0.8267 ✅ (new best, +3.8% relative vs prior best 0.7968). Built on candidate 6 (iter11). Round 1 (soft pre-planning via
PlanEntitiesadvisory module) reverted after −4.9% regression (0.8167→0.7769) — gpt-5.4-nano with reasoning_effort=low copied claim typos verbatim and included peripheral entities even when restricted to claim-text entities only (ex99: "Charpes Lane" looped 2 hops on non-existent article; ex54: "Virginia" wasted hop 4). Round 2 applied two code-only changes: (1) Context trimming —forward()now passes onlyhop1_new[:6]to context2 (not all 7),hop1_new[:6] + hop2_new[:5]to context3,hop1_new[:6] + hop2_new[:5] + hop3_new[:5]to context4 — preventing LM from seeing rank-7 hop-1 docs that are evicted by round-robin interleaving and falsely marking them as "covered"; (2) em-dash/hyphen normalization —_normalize_queryreplaces-,–,—with spaces and collapses multi-spaces. Fixed ex31 (Dinner Party / Sojourner Truth — Sojourner Truth was at rank-7 of hop1, evicted by round-robin, now hidden from context so LM correctly queries it). 8 failures in trace vs 11 in parent. Accepted as candidate 7. Current best valset: 0.8267. - Iteration 13: Subsample 0.7769→0.8167 (+5.1%); Valset score 0.8167 (candidate 8; −1.2% relative vs best 0.8267, within noise). Built on candidate 7 (iter12). Added (1) code-level fruitless query tracking —
all_fruitless_querieslist tracks queries returning zero new unique documents after dedup, passed as newfruitless_queriesInputField toIdentifyNextTarget; (2) Strengthened Step 4 body-scan patterns — added concrete named-work patterns (specific song, TV show, musical adaptation), botanical-genus pattern, doubles-partner with explicit "NOT X" instruction, and PRIORITY rule favoring direct claim-relationship entities over peripheral mentions; (3) Step 1 extended — added "routes/road names, botanical genera, named scientific theories and concepts" to entity type list. Fixed 3 subsample examples: ex10 (New Hampshire Route 124 — routes now enumerated in Step 1), ex30 (Ishqbaaaz — Step 4 named-show pattern), ex34 (World Without Love — Step 4 named-work pattern). One regression: ex12 (Adam Guettel, stochastic). 9 failures vs 11 in parent (net +2 fixes). Valset −1.2% vs best (within ±3% noise). Accepted as candidate 8 but does not unseat candidate 7 as best valset. - Iteration 14: Subsample 0.6773→0.6959 (+2.7%); Valset score 0.8450 ✅ (new best, +2.2% absolute / +2.8% relative vs prior best 0.8267). Built on candidate 8 (iter13). Two rounds: Round 1 added a conditional 5th hop —
identify_hop5_targetpredictor fires only whenIdentifyNextTargetreturns a query whose normalized form is not already inall_previous_queries; when hop5 fires, 5-hop equal round-robin used. Round 2 replaced equal 5-hop round-robin with priority interleaving when hop5 fires: hop1 gets positions 1-6 first (preserving its 4-hop allocation), then hops 2-5 round-robin for positions 7-21. Also updated context5 slices fromhop2_new[:5]+hop3_new[:5]tohop2_new[:4]+hop3_new[:4]to match new slot allocation. Fixed hop-exhaustion cases: ex1 (Worldview Entertainment — hop5 body scan), ex5 (Robinsons Galleria), ex58 (Glenn Hughes). Priority interleaving recovered ex16 (Krupa/Sunkist) and ex84 (Simone Bolelli) vs Round 1. 15 failures vs 9 in parent trace (different seed; +2.7% delta on same seed is fair comparison). Accepted as candidate 9 — new best. - Iteration 15: Subsample 0.6960→0.6960 (neutral, Δ=0.0); Valset score N/A (rejected). Built on candidate 9 (iter14). Three changes: (1) k=7→12 in
HoverMultiHop.__init__so every ColBERT search retrieves 12 candidates; (2) None-query guard in_get_query_with_retryto detect and retry placeholder LM outputs ("None", "N/A", "null", etc.); (3) Step 4 new bullet inIdentifyNextTargetfor extracting the director/lead actress/choreographer/primary creator of an already-retrieved film or recording. 5 structural fixes: ex13 (Mars Inc. — rank-boundary fix with k=12), ex14 (Greatest Game Ever Played — k=12), ex16 (Jonathan Lynn — k=12, was persistent ColBERT gap), ex33 (Felicity Jones — Step 4 director/actress pattern), ex48 (Beyond Rangoon). 5 stochastic regressions: ex05 (NH Route 124), ex09 (Air Lituanica), ex15 (Zeitgeist Film Series), ex36 (Charles Lane/Lucille Ball), ex41 (Afonwen). All regressions confirmed purely stochastic (context2 passed to hop2 is IDENTICAL in parent and child since both use hop1_new[:6]; different outputs = LM variance not k=12 effect). Net neutral on subsample; rejected. Best is still candidate 9 (0.8450). Key insight: k=12 is structurally net positive — fixes rank-8+ ColBERT gaps — but was offset by stochastic noise. Asymmetric k (k=7 for hop1, k=12 for hops 2-5) is now the top follow-up. - Iteration 16: Subsample 0.8152→0.8351 (+2.4%); Valset score 0.8152 (candidate 10; −3.5% relative vs best 0.8450; accepted but does not unseat candidate 9).
- Iteration 17: Subsample 0.8153→0.8153 (neutral, Δ=0.0); Valset score N/A (rejected). Built on candidate 9 (iter14). Changes: asymmetric k (hop1=6, hops2-4=5, hop5=12) to eliminate seen_titles pollution from evicted rank-7 docs + None-query guard (
NONE_PATTERNSfrozenset) + seen-titles guard for hop5 (retry if hop5 query is already inseen_titles). Confirmed structural fix: ex48 (Jonathan Lynn) — with k=7, rank-7 of hop1 enteredseen_titlesbut was evicted at position 25, permanently blocking later hops; with k=6, never added toseen_titles→ later hop correctly retrieved it. Stochastic regression: ex39 (Greatest Game Ever Played) — identical context to parent but LM chose "Nancy Drew" at hop3 (pure LM variance). Net neutral. Best remains candidate 9 (iter14, 0.8450). - Iteration 18: Subsample 0.8154→0.8948 (+9.7%); Valset score 0.8550 ✅ (new best, +1.0% absolute / +1.2% relative vs prior best 0.8450). Built on candidate 9 (iter14). Four changes: (1) asymmetric k from iter17 (hop1=6, hops2-4=5, hop5=12) + NONE guard + seen-titles guard for hop5; (2) Step 2 sub-article false-coverage fix — "Robert E. Howard bibliography | ..." does NOT cover "Robert E. Howard"; (3) Step 1 claim-verbatim self-check — confirm ALL proper-noun entities in the claim are listed; (4) Step 3 disambiguation suffix guidance — use qualifiers like "(TV series)", "(film)", "(video game)" for ambiguous work titles. Round 1 scored 0.8352 (+2.4%) but introduced regressions in ex58 (Dave Evans disambiguation) and ex123 (Pierre Womé name-form). Round 2 narrowed the sub-article wording to explicitly allow disambiguation suffixes and name-form variants → 0.8948 (+9.7%). Fixed ex5 (Robinsons Galleria), ex14 (Robert E. Howard), ex58 (Glenn Hughes un-regressed), ex75 (Robert Jordan, k=12 rank-boundary), ex123 (Christian Poulsen). Remaining failures: ex3 (Matthew Bailes), ex37 (Loha), ex56 (Guy Davis), ex92 (Shim Ji-ho), ex117 (Secret Agent TV series — partial: This Is England now found but TV series + Stephen Graham still missing). Accepted as candidate 11 — new best.
- Iteration 19: Subsample 0.8351→0.8748 (+4.7%); Valset score 0.8550 (candidate 12; tied with iter18 best — no improvement). Built on candidate 11 (iter18). Prompt-only changes: (1) Partner bullet clarification — output the participant PAIRED WITH the claim's subject X, not the tournament winner or most famous participant; (2) Multi-membership bullet — scan org articles for person identified by multi-org membership (e.g., "former member of Band A, Band B, and Band C"); (3) Anti-fame-bias instruction in Step 4 PRIORITY section — do NOT default to most famous name; identify entity filling SPECIFIC ROLE described by claim. Fixed ex58 (Glenn Hughes: multi-membership guidance correctly identified him across Deep Purple/Black Sabbath/Trapeze). Fixed ex63 (F.E.A.R.: LM used "(video game)" suffix to retrieve article, though post-retrieval coverage check then failed to recognize it as covering "F.E.A.R." in the claim — 2 wasted hops). Three minor regressions (4→5 hops, all still passing). New observation: when a disambiguation suffix "X (qualifier)" is used to retrieve an article, Step 2's coverage check does NOT recognize it as covering bare "X" — causing wasted follow-up hops. Remaining failures: ex20 (Air Lituanica), ex37 (Loha), ex38 (Renáta Tomanová), ex53 (Douglas MacArthur/Texas Raiders), ex97 (Gene Kelly), ex126 (On the Buses/Pat Ashton). Accepted as candidate 12.
- Iteration 20: Subsample 0.8550→0.8748 (+2.3%); Valset score 0.8551 ✅ (new best by +0.0001 vs 0.8550 — essentially noise-level). Built on candidate 12 (iter19). Two prompt-only edits: (1) disambiguation suffix type-qualifier fix — Step 2 now explicitly allows "X (type-qualifier like film/TV series/video game/artwork)" to count as covering X; only true sub-page suffixes (bibliography, filmography, discography, early life, health) are blocked; (2) defunct/former/ceased entity pattern in Step 4. Fixed ex31 (Dinner Party / Sojourner Truth / Barbe de Verrue — "(artwork)" qualifier now correctly recognized as covering "The Dinner Party"). Defunct entity pattern did NOT fix Air Lituanica (Vilnius Airport article doesn't prominently name the airline). Partial improvement: Bill Cullen — Punchlines now found but Bill Cullen still missing. Remaining failures: Matthew Bailes, Air Lituanica, Renáta Tomanová, Gene Kelly, Bill Cullen, On the Buses/Pat Ashton. Accepted as candidate 13.
- Iteration 21: Subsample 0.7954→0.8352 (+5.0%); Valset score 0.8748 ✅ (new best, +3.5% relative vs prior best 0.8551). Built on candidate 13 (iter20). Two prompt-only changes: (1) Step 3 CRITICAL type-qualifier enforcement — explicit bad→good example ("F.E.A.R." → "F.E.A.R. (video game)") when the claim states a work's media type; (2) Three new Step 4 body-scan bullets: parent company/owner extraction ("wholly owned by Mars, Incorporated"), town/location-of extraction ("station located in Afonwen"), event venue extraction (festival article names its nightclub). Confirmed fixes: ex63 (F.E.A.R. video game — type-qualifier rule), ex120 (Afonwen — location-of bullet). New regression: ex82 (Moonrunners/Dukes of Hazzard — stochastic divergence, pure LM variance). Partial: ex32 (Mars Inc. found via parent company bullet but Skittles confectionery still missing — the bullet drives the LM to the manufacturer, skipping the intermediate candy article). Remaining failures: ex32 (Darkened Skye/Skittles), ex56 (Guy Davis comics), ex65 (Ancient Egyptian religion — phantom entity), ex71 (Airlines of Africa), ex82 (Moonrunners — stochastic), ex85 (Flex club), ex97 (Gene Kelly), ex126 (On the Buses/Pat Ashton). Accepted as candidate 14 — new best.
- Iteration 22: Parent subsample 0.8350→child 0.7755 (−7.2%); Valset score N/A (rejected). Built on candidate 9 (iter14, k=7 uniform). Two rounds: Round 1 replaced round-robin interleaving with an LM-based
SelectBestDocumentsreranker (ChainOfThought picking 21 indices from pooled ~25-30 docs) + film→performer Step 4 bullet — catastrophic −7.2% regression (0.8350→0.7755), reverted. Round 2 cherry-picked all iter18-21 prompt improvements (SELF-CHECK, sub-article false-coverage fix, CRITICAL type-qualifier, multi-membership, anti-fame-bias) onto candidate 9's k=7 architecture — same score (0.7755). Root causes: (a) gpt-5.4-nano at reasoning_effort=low fundamentally cannot select 21 precise indices from 25-30 items; (b) iter18-21 improvements are coupled to asymmetric-k architecture — porting to k=7 caused Step 2 sub-article wording to regress ex31 (Sojourner Truth). 11 failures: ex3, ex7, ex18 (Heathrow — broad topic chain), ex31 (regression from sub-article wording), ex53, ex58 (Glenn Hughes — no multi-membership bullet), ex65, ex92, ex95 (Felicity Jones — film→performer bullet too late: Rogue One only in hop5), ex117, ex146. Rejected. Current best remains candidate 14 (iter21, 0.8748). - Iteration 23: Parent subsample 0.7954→child 0.8152 (+2.5%); Valset score 0.8550 (accepted as candidate 15; below best 0.8748). Built on candidate 14 (iter21). Prompt-only changes to
IdentifyNextTargetStep 4 (no code logic changes): (1) CREATOR bullet — extracts composer/playwright/songwriter of a specific artistic work named in a performer's retrieved article (e.g., Adam Guettel from Elena Shaddow's article); (2) HOST/CAST MEMBER bullet — extracts the lead star/host explicitly named in a retrieved TV show or game show article (e.g., Pat Ashton from Thick as Thieves, Bill Cullen from Punchlines); (3) CO-FOUNDER bullet — extracts co-founding partner named alongside the article subject in a retrieved founding article (e.g., Charlotte Baldwin Allen from Augustus Chapman Allen article); (4) COMPARISON/RANKING bullet — extracts a ranked comparison entity explicitly named in a retrieved article (e.g., Heathrow Airport from Gatwick article naming it as the UK's busiest); (5) Parent company ORDERING RULE — apply parent company bullet ONLY after the product/brand article is already in retrieved_passages. Confirmed subsample fixes: ex12 (Adam Guettel — CREATOR bullet), ex18 (Heathrow Airport — COMPARISON/RANKING bullet). Stochastic regression: ex63 (F.E.A.R. — LM issued bare query without type qualifier, pure variance). CO-FOUNDER bullet did NOT fire for ex114 (Charlotte Baldwin Allen remains missing despite Augustus Chapman Allen being retrieved). HOST/CAST MEMBER bullet did NOT fix ex126 (Thick as Thieves TV series was retrieved but Pat Ashton not extracted; On the Buses film never queried). Valset 0.8550 is −2.3% vs best (0.8748); current program is below best. Current best remains candidate 14 (iter21, 0.8748). - Iteration 24: Parent subsample 0.8750→child 0.8748 (−0.0002, neutral within noise); Valset score N/A (rejected). Built on candidate 14 (iter21). Full legal name variant fix in Step 2 + CREATOR/COMPARISON/RANKING bullets + parent company ORDERING RULE (latter three already in candidate 15). Confirmed structural fix: ex146 (Ellis Ferreira — full-name variant rule). 6 failures: Matthew Bailes, Allan Goldstein, Air Lituanica, Loha, Apple Inc., Gene Kelly. Hop5 fire rate: 95.5%. Current best remains 0.8748 (candidate 14, iter21).
- Iteration 25: Subsample 0.8352→0.8951 (+7.2%); Valset score 0.8252 (candidate 16; −5.7% relative vs best 0.8748 — significant valset regression despite strong subsample). Built on candidate 14 (iter21). Three prompt-only changes: (1) formal-name variant coverage fix in Step 2 (carried from iter24); (2) CRITICAL PERSON COVERAGE RULE in Step 2 — org/film/work article naming a person in any role (director, founder, cast member, professor) does NOT cover that person's biographical article; (3) COMPARISON/RANKING Step 4 bullet (same as iter23). Subsample fixed 3 examples: ex13 (Lavinia Greenlaw — CRITICAL rule drove systematic per-person querying), ex63 (F.E.A.R. video game — type qualifier compliance, likely stochastic), ex99 (Charles Lane — name-variant skip). Valset regressed to 0.8252. Root cause: CRITICAL PERSON COVERAGE RULE is over-broad — LM now queries biographical articles for EVERY person mentioned in ANY retrieved org/film article, wasting hops on non-gold biographical queries. Hop5 fire rate dropped to 76% (38/50) — lowest measured rate. 5 failures: ex18 (Heathrow), ex37 (Loha), ex65 (Ancient Egyptian religion), ex117 (Secret Agent TV series), ex129 (Stranger in Paradise). Current best remains candidate 14 (iter21, 0.8748). Current program (candidate 16) is significantly below best — build next iteration on candidate 14.
- Iteration 26: Subsample 0.8352→0.8949 (+7.1%); Valset score 0.8351 (candidate 17; partial recovery from iter25 regression, but still −4.5% below best 0.8748). Built on candidate 16 (iter25). Single prompt-only change: removed CRITICAL PERSON COVERAGE RULE from Step 2. Confirmed structural fixes: ex18 (Heathrow — COMPARISON/RANKING bullet now fires correctly without the rule blocking hop5), ex75 (Robert Jordan — LM can now save the query for hop5 k=12). Retained changes from iter25: formal-name variant fix + COMPARISON/RANKING bullet. Remaining failures: ex37 (Loha/Karan Kapoor), ex56 (Guy Davis), ex71 (Airlines of Africa), ex92 (Shim Ji-ho), ex95 (Felicity Jones). Hop5 fire rate: 86%. The COMPARISON/RANKING bullet is strongly suspected to cost ~0.04 valset score. Current best UNCHANGED at 0.8748 (candidate 14, iter21). Build next iteration on candidate 14 directly. Accepted as candidate 17.
Macro Approaches
Seed: Summarize-then-Query 3-Hop Retrieval
- Approach: Hop 1 retrieves directly on raw claim. Hops 2 and 3 each summarize all retrieved passages so far, then generate the next query from that summary. No deduplication (always returns 21 docs, potentially with duplicates).
- Result: Valset 0.4691. Subsample baseline ~0.519.
- Observation: The summarize step produces verbose, question-style queries (e.g., "Who produced the film Handsome Harry?") rather than entity names. Hops 2 and 3 often repeat the same query. Entities visible in retrieved text (e.g., "Worldview Entertainment" in the Handsome Harry article) are never directly searched. Duplicates waste the 21-doc budget.
- Remaining opportunity: This baseline is definitively outclassed by the entity-targeting approach. Not worth revisiting.
Iteration 1: Entity-Focused Query Generation (IdentifyNextTarget) + Deduplication
- Approach: Replaced summarize→query with
IdentifyNextTarget, a DSPy Signature+ChainOfThought that instructs the LM to enumerate named entities in the claim, check which are covered by retrieved titles, scan retrieved text for implied entities, and output a single concise Wikipedia article title (explicitly forbidding question-style output). Deduplicates final doc list by title before returning ≤21. - Result: Subsample +23% (0.519→0.639). Valset 0.6886 (+46.8% relative vs. seed).
- Observation: Consistently generates entity-name queries instead of questions. Deduplication reduces returned doc count. The structural change (format of query output) generalizes well. Remaining failures included cap starvation and 3-hop insufficiency.
- Remaining opportunity: Foundation is correct. 4th hop was the logical next step.
Iteration 2: 4-Hop Architecture + Improved Title-Only Coverage Check (No previous_queries)
- Approach: Added a 4th hop reusing
ChainOfThought(IdentifyNextTarget)(same signature). Improved IdentifyNextTarget prompt with explicit rules: (1) disambiguation pages do NOT count as covered, (2) entity is covered ONLY if its own dedicated article title appears before ' | ' — a mere mention in another article's text does NOT count. Removedprevious_queriesfield (attempt 1 withprevious_queriesand k=10 caused regression; final attempt uses k=7 and noprevious_queries). Note: An intermediate attempt (k=10 +previous_queries) caused regression because (a) k=10 filled the 21-doc cap by hop 3, starving hop 4, and (b)previous_queriesblocked necessary re-queries on disambiguation pages. - Result: Subsample +2.9% (0.6387→0.6574). Valset 0.7171 (+4.1% relative vs. iteration 1). Was best until iteration 4 (now 0.7968).
- Observation: The 4th hop fixes cases where 3 hops exhausted the budget before all required entities were retrieved (ex34, ex58, ex93, ex99 fixed in subsample). The improved coverage-check prompt corrects the model's systematic error of treating a mention-in-text as a covered entity. The gain is genuine and generalizes. However, a new critical structural problem is now exposed (see below): with k=7 × 4 hops, hops 1-3 can fill all 21 slots, leaving hop 4 with no capacity even when it correctly identifies the target.
- Remaining opportunity: Fix hop-4 slot starvation (highest priority), reduce duplicate queries across hops, improve deeply-implied-entity reasoning.
Iteration 3: Fruitless-Query Feedback + Incremental Deduplication + Stronger Prompt (Incremental)
- Approach: Added
fruitless_queriesDSPy InputField toIdentifyNextTargetthat tracks queries returning 0 new unique docs and forbids the LM from repeating them. StrengthenedIdentifyNextTargetprompt with (a) person-vs-works nuance ("if the claim says 'fronted by [person]', that person's own article is needed") and (b) specific article granularity ("2004-05 Memphis Grizzlies season" not just "Memphis Grizzlies"). Switched to incremental per-hop deduplication (seen_titlesupdated after each hop) vs. post-hoc dedup. ALSO attempted a hardearly_docs[:14]slot cap for hop 4 reservation (Round 1), but it caused a catastrophic –26% subsample regression (0.5976→0.4382) by dropping docs from hops 1-3 at positions 15-21 that were essential for many examples. Cap was reverted (Round 2). The current iteration 3 program does NOT have slot reservation. - Result: Subsample +6.7% (0.5976→0.6374). Valset N/A (not evaluated). Accepted.
- Observation: Fruitless-query feedback successfully prevents some query loops (confirmed: ex76 Delmer Daves, ex21 Billy Corgan person-vs-band fixed). Stronger prompt fixed specific-article targeting in some cases (ex10: "2004-05 Memphis Grizzlies season"). However: (1) LM sometimes ignores
fruitless_queries— ex42 showed the model querying "American Cats" THREE times (hops 2, 3, 4) despite it being flagged fruitless after hop 2. (2) Fruitless mechanism has a blind spot: it only flags queries returning 0 NEW unique docs; queries returning docs (even irrelevant ones) are not flagged, so the LM can still fixate on a wrong entity if ColBERT returns anything for it (ex26: "Sundance Film Festival" returned docs → not flagged → model kept targeting it across 3 hops). (3) Hard slot cap is NOT a viable approach — it drops too many useful early-hop docs. Round-robin interleaving is the correct fix. (4) Slot starvation is still unresolved: 4 confirmed cases in the iteration 3 trace (ex18 F.E.A.R., ex25 Warren Fu, ex36 Jimi Hendrix, ex39 Robinsons Galleria — all were queried correctly in hop 4 but budget was full). - Remaining opportunity: Slot starvation fix (round-robin interleaving), multi-entity pre-planning, fruitless mechanism improvements.
Iteration 4: All-Queries Tracking + Round-Robin Interleaving (Bug-fix Structural)
- Approach: Two coordinated structural fixes addressing previously-confirmed bugs: (1) Replaced
fruitless_queries(tracking only zero-return queries) withprevious_queries(tracking ALL queries issued), with a stronger step 5 instruction citing determinism. (2) Replacedfinal_docs = early_docs + hop4_new(sequential accumulation, which starves hop 4 when hops 1-3 consume all 21 slots) with round-robin interleaving across all 4 hop lists (take doc-1 from each hop, then doc-2, etc., cap at 21). - Result: Subsample +20.7% (0.5777→0.6972). Valset 0.7968 (new best, +11.1% relative vs. iteration 2's 0.7171). Accepted.
- Observation: Round-robin interleaving directly fixed slot starvation (ex33 Rochester Hills, ex60 Ice Princess, ex93 Pablo Escobar, ex25 Warren Fu confirmed fixed). All-queries tracking fixed query loop failures (ex76 Delmer Daves, ex120 Afonwen). Both changes address structural bugs that are reproducible across subsamples and the valset — the strong generalization confirms these were not overfits. The 2 regressions (ex50 Swoosh, ex82 Moonrunners) appear to be LLM stochasticity, not structural.
- Remaining opportunity: Wrong-entity-chain failures now dominate (9/15 in iter4 trace). The LM correctly identifies some entities but pursues plausible but wrong follow-ons. Multi-entity pre-planning would address this systematically. Slot starvation is mostly resolved but 1 case remains (see starvation section). LM compliance with
previous_queriesis still imperfect (3 query-repetition failures). Pure hallucinations (2 cases) are hard to fix without ground truth.
Iteration 5 was an incremental prompt-only change to IdentifyNextTarget (no architectural changes). It is excluded from the Macro Approaches list as it does not introduce a new solution structure.
Iteration 6: Multi-Entity Pre-Planning Before Retrieval (PlanAllTargets)
- Approach: Added a new
PlanAllTargetsDSPy Signature+ChainOfThought that, before any ColBERT search, generates a comma-separated list of ALL Wikipedia article titles needed to verify the claim.IdentifyNextTargetgained aplanned_entitiesinput field and a Step 0 instruction to "STRONGLY PREFER" uncovered planned entities.HoverMultiHop.forward()calls the planner first and passesplanned_entities=planto all threeIdentifyNextTargethops. The planning step has no ColBERT cost (LM-only call). - Result: Round 1 (PlanAllTargets + STRONGLY PREFER): –28.5% regression (0.8366→0.5976). Catastrophically reverted. Round 2 (programmatic query-retry mechanism only, pre-planning removed): –4.7% regression (0.8366→0.7968). Rejected.
- Observation: The pre-planning concept was sound in principle but fatally broken by two factors: (1) gpt-5.4-nano with reasoning_effort="low" generates unreliable plans — hallucinated entries (e.g., "List of Texas Championship Wrestling Tag Team Champions") and wrong-granularity entries (e.g., "Oakland County, Michigan" instead of "Rochester Hills, Michigan") are common; (2) "STRONGLY PREFER" language converts any plan error into an irreversible failure cascade — all three IdentifyNextTarget hops then repeat the same wrong entity. The combined effect is worse than no plan at all. This is "failed due to a fixable implementation design choice," not a fundamentally wrong idea — the failure was in the priority strength, not the planning concept.
- Remaining opportunity: Advisory/claim-text-only pre-planning was attempted again in iteration 12 Round 1 and failed (−4.9% regression, reverted). The iter12 planner used a new
PlanEntitiessignature restricted to entities explicitly named in the claim (no inference), with advisory-only framing ("ADVISORY HINT: candidates to CONSIDER"). Even this softer design failed: gpt-5.4-nano at reasoning_effort=low copied claim typos verbatim as search strings (ex99: "Charpes Lane" from a misspelling in the claim anchored 2 hops) and included peripheral geographic entities (ex54: "Virginia"). The failure mode is now confirmed at both extremes: strong priority framing (iter6) AND soft advisory framing (iter12) both fail with this LM configuration. Pre-planning with gpt-5.4-nano at reasoning_effort=low is likely fundamentally unreliable. If pre-planning is to be retried, it would require: (a) a stronger model or higher reasoning effort for the plan step, (b) a code-level post-processing step that validates plan entries (e.g., only include entries that ColBERT returns ≥1 result for), or (c) extracting only entities that appear VERBATIM as unambiguous proper-noun phrases and are already confirmed to exist in the ColBERT index.
Iteration 6 Round 2 (programmatic query-retry via _get_query_with_retry) is an incremental structural bug-fix. It is excluded from the Macro Approaches list as it does not change the retrieval architecture.
Iteration 7 (title-list context format + strengthened false-presence Step 2 prompt) is an incremental prompt/formatting change. Excluded from Macro Approaches. Key lessons: (1) "RETRIEVED ARTICLE TITLES" prepended list is structurally incompatible with round-robin interleaving — creates eviction-mismatch failures, see Observations; (2) strengthened false-presence Step 2 with concrete worked examples provides modest net gain (+3 fixes vs –7 regressions when combined with the bad context format in Round 1; +3 fixes vs –6 regressions in Round 2). The Step 2 rewrite is likely net-positive in isolation but was masked by stochastic regressions.
Iteration 8: 5-Hop Architecture + no_results_queries Feedback
- Approach: Extended the architecture from 4 hops to 5 hops (adding
self.identify_hop5_target = dspy.ChainOfThought(IdentifyNextTarget)and integrating it into the round-robin interleave across 5 hop lists, 35 max candidates → top 21). Also addedno_results_queriesas a newInputFieldinIdentifyNextTargetthat lists queries that returned 0 ColBERT passages, with a Step 6 instruction telling the LM to try an alternative name or disambiguation suffix for such queries. Strengthened Step 1 to explicitly require comparison subjects and secondary referents. - Result: Subsample +12.9% (0.7570→0.8548). Valset 0.7554 — a –5.2% regression vs best (0.7968). Accepted as candidate 5 but does not unseat candidate 4.
- Observation: The 5th hop fixed hop-exhaustion chain completions on the subsample (5 examples: Tamil film chain, HK Film Awards, Warren Fu music director, Christian Poulsen, African Cats pivot). However, the valset score declined significantly. Two structural explanations: (1) Slot-allocation regression: Moving from 4-hop to 5-hop round-robin changes slot distribution — each existing hop gets ~4 guaranteed slots instead of ~5. Any gold article previously included at rank 5-6 in hop 1 (or earlier hops) can now be displaced from the 21-doc cap. This causes regressions on examples that previously passed. Confirmed in ex14 (subsample): Robert E. Howard was at rank 7 of hop 1 and got displaced. (2) Universal 0.002 penalty increase: Every passing example now pays 0.006 instead of 0.004 — this costs ~0.001-0.002 of average score on the valset. (3) no_results_queries is completely inert: ColBERT always returns at least some passages for any query — the mechanism never fires across all 50 subsample examples. The iteration's reflection claimed it fixed ex137 (African Cats pivot) but that fix must have come from the 5th hop or stochasticity, not from
no_results_queries. The mechanism is implemented correctly but the premise is wrong: ColBERT has no zero-result queries on this index. (4) 46% query repetition rate (23/50 examples): Theprevious_querieswarning is being ignored on a massive scale. The 5th hop is often wasted on a repeat query (ex14: Frank Bascombe ×2; ex19: Walt Disney Productions ×4; ex6: Wild Bunch ×3). Repetitions don't help fixing but do waste round-robin slots. - Remaining opportunity: The 5th hop concept is architecturally sound — hop-exhaustion is a real failure mode. The problems are: (a) slot displacement from 5-way round-robin, (b) universal penalty increase, (c) query repetition wasting hop 5's budget. Possible fixes: (i) make hop 5 conditional — only run if hops 1-4 left an entity uncovered (reduces penalty tax and slot displacement for already-complete examples); (ii) increase k per hop to compensate for fewer guaranteed slots per hop in the 5-way round-robin; (iii) add the retry mechanism from iter7 to force hop 5 to produce a new query when it would repeat. The no_results_queries field should be removed or repurposed (it does nothing useful). The best candidate to build on is still candidate 4 (iter4), not candidate 5 (iter8).
Iteration 9 (programmatic retry mechanism via _get_query_with_retry + Step 2 concrete false-presence example + concurrent Step 4 body scan with PRIORITY RULE) is an incremental prompt and structural code improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lesson: same SHA scored +2.7% and −2.7% vs parent in consecutive subsample runs (gpt-5.4-nano at reasoning_effort=low has ±3% per-run variance). Small incremental changes cannot be reliably evaluated with a single subsample run. The PRIORITY RULE in Step 4 ("prefer implied entities over peripheral claim entities such as major cities, broad organisations, or entities from false-premise clauses") adds dangerous ambiguity — the LM over-applies it in unpredictable ways and should be replaced with a direct action directive stating explicitly that identified implied entities must become the query.
Iteration 10 (retry mechanism + normalized duplicate detection + removed no_results_queries + Step 2 false-presence example + Step 4 "OUTPUT IMMEDIATELY" action directive, all applied to candidate 5 / 5-hop base) is an incremental prompt and structural code improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) The "OUTPUT THAT IMPLIED ENTITY AS YOUR QUERY IMMEDIATELY" language in Step 4 is as dangerous as the PRIORITY RULE — it caused ex35 (Queens) to fail by triggering premature/wrong Step 4 activation; the effect is identical to the iter5 PRIORITY RULE regression. (2) The false-presence example (Person A / Person B) and retry mechanism did not prevent any of the targeted failures. (3) The 5-hop architecture continues to amplify the negative impact of any LM behavioral change. (4) Candidate 5 (5-hop) is definitively not a productive base for incremental changes.
Iteration 11 (retry mechanism cherry-picked onto candidate 4 + Step 1 comparison-subject nuance + Step 1/3 phantom-entity guard + Step 2 false-presence example + Step 4 expanded pattern examples) is an incremental prompt and structural code improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Retry mechanism confirmed working on 4-hop architecture — fired in 10/50 examples, 9 passed including the direct fix of ex76 (Delmer Daves). Only ex85 (Flex club / Ronnie Flex) failed with retry — the article simply does not exist under either name the LM tries. (2) Phantom-entity guard (Round 2: "skip descriptive claim phrases; ONLY check Step 1 entities in Step 3") fixed ex100 (20th Century Fox "Chinese film studio" loop) but failed to fix ex65 (Ancient Egyptian religion — LM still invented "Weighing of the Heart" in Step 3 despite the guard). The guard is insufficient alone; code-level fruitless detection is needed. (3) Step 4 expanded pattern examples (doubles partner, adapted song, stunt-performer film, broader topic article) improved structure but no single confirmed fix attributable to them in the trace. (4) The +2.6% subsample gain is within the ±3% noise floor — valset impact is uncertain. (5) 11 failure cases in the iter11 child are overwhelmingly inherited persistent failures; only 1 net improvement vs parent (ex100 fixed, no new regressions).
Iteration 12 Round 2 (context trimming in forward() + em-dash/hyphen normalization in _normalize_query) is an incremental structural code improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Context trimming is a principled, mechanistic fix for the "false coverage" bug caused by round-robin interleaving: with k=7 and 4 equal hops, rank-7 docs from hop1 always land at position 25 in interleaved order and are evicted. Passing hop1_new[:6] (not all 7) to context2 prevents the LM from treating these evicted docs as "covered." Confirmed fix: ex31 (Sojourner Truth at rank-7 of hop1 — now correctly identified as uncovered and queried directly). (2) The valset confirmation (+3.8% relative, 0.7968→0.8267) proves context trimming generalizes beyond the subsample and is not noise. (3) em-dash normalization (-/–/— → spaces) is verified correct; its specific valset impact is not isolable but is low-risk and structurally sound. (4) Iteration 12 Round 1 (soft pre-planning via advisory PlanEntities) failed and was reverted — see Macro Approaches Iteration 6 entry for updated analysis.
Iteration 13 (code-level fruitless-query tracking + Step 4 named-pattern strengthening + Step 1 entity-type extension for routes/genera/concepts) is an incremental prompt and structural code improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Step 4 named-pattern wording is effective when concrete — specific song title ("A World Without Love"), specific TV show ("Punchlines"), musical adaptation ("Stranger in Paradise") patterns fixed 2 subsample examples and represent generalizable categories. (2) Step 1 entity-type extension to include routes and named scientific concepts is confirmed useful (fixed NH Route 124). (3) Fruitless-query tracking adds useful architecture but didn't visibly change outcomes in this subsample because most failure cases have ColBERT returning WRONG articles (not zero articles). Isatis is the clearest example: querying "Isatis" returns Isatis tinctoria (new unique doc) so it is NOT marked fruitless, but the genus article is still missing. Fruitless detection only catches true zero-result queries, not ranking gaps. (4) Valset regression of −1.2% (0.8267→0.8167) is within ±3% noise and should not be over-interpreted. (5) The Dinner Party / Sojourner Truth failure persists across seeds: context trimming (iter12) fixed the specific case where Sojourner Truth was at rank-7 of hop1; but with a different seed, the claim's garbled wording "Isabella (Belle) Isabella" causes the LM to literally search for that phrase rather than resolving to "Sojourner Truth." This is a claim-resolution failure distinct from the prior context-trimming fix.
Iteration 14: Conditional 5th Hop with Priority Interleaving
- Approach: Extended the 4-hop architecture with a conditional 5th hop:
identify_hop5_targetonly fires a ColBERT search ifIdentifyNextTargetreturns a query whose normalized form is NOT already inall_previous_queries. When hop5 fires and produces new docs, uses priority interleaving instead of equal 5-hop round-robin: hop1 gets its full 6 slots (positions 1-6), then hops 2-5 round-robin for positions 7-21 (hop1→6, hop2→4, hop3→4, hop4→4, hop5→3 slots). When hop5 doesn't fire (repeat query), 4-hop round-robin is preserved unchanged — zero regression risk. Also updated context5 slices (hop2_new[:4]+hop3_new[:4] instead of [:5]) to match new slot allocation, eliminating a false-coverage bug in the original equal round-robin design. - Result: Subsample +2.7% (0.6773→0.6959). Valset 0.8450 — new best, +2.2% absolute / +2.8% relative vs prior best 0.8267. Accepted as candidate 9.
- Observation: The structural generalization is confirmed by the valset improvement. Priority interleaving eliminated real slot-displacement regressions vs equal 5-hop round-robin (Round 2 recovered Simone Bolelli, Krupa/Sunkist by preserving hop1's rank-6 docs). The conditional design is correct — it avoids the universal slot-displacement and penalty regression that killed the unconditional 5th hop (iter8, valset 0.7554). However, hop5 fires in ~80% of examples (only ~8/50 use 4 hops), meaning most examples pay the 0.002 extra penalty. The penalty cost is ~80% × 0.002 = 0.0016 avg score reduction; the structural fixes net more than this on the valset. Round 1 vs Round 2 comparison shows equal 5-hop round-robin was clearly inferior to priority interleaving — the false-coverage bug was real.
- Remaining opportunity: Reduce hop5 fire rate. The 80% fire rate is too high. Most examples don't need a 5th hop (all gold docs already found in 4 hops), but the LM's Step 4 body scan almost always surfaces some "new" entity. A tighter firing condition would save the 0.002 penalty for already-complete examples: (a) only fire hop5 if hop4 returned 0 new unique docs (
len(hop4_new) == 0), or (b) only fire hop5 if the hop5 query appears verbatim in the claim text, or (c) add a code-level check that fires hop5 only if the LM's hop5 query string matches something in the current 21 docs' linked article titles. Option (a) is the simplest and safest. The 5th hop firing condition is now the most actionable architectural refinement.
Iteration 22: LM-Based Final Reranker Replacing Round-Robin Selection
- Approach: Replaced round-robin interleaving with an LM-based document selection step (
SelectBestDocumentsDSPy Signature, ChainOfThought). After all hops complete, pool ALL unique docs from every hop (up to ~25-30) into a deduplicated list, format as numbered passages with title+100-char excerpt, and ask the LM to select the best 21 by outputting space-separated 1-based indices. Also added a film→performer Step 4 bullet (claiming the LM should extract the lead actress/actor/director from a retrieved film article when the claim implies that specific person). Built on candidate 9 (iter14, k=7 uniform — NOT the current best candidate 14). - Result: −7.2% regression (0.8350→0.7755). Rejected.
- Observation: gpt-5.4-nano at reasoning_effort=low cannot reliably perform precise index-selection over 25-30 items. The task requires tracking specific 1-based integers, no hallucination, and correct index-to-document mapping — a task requiring precise structured output that the small, low-effort model handles poorly (drops indices, hallucinates indices, generates incorrect patterns). A secondary Round 2 regression confirmed that porting iter18-21 prompt improvements verbatim to candidate 9's k=7 architecture is also invalid — the Step 2 sub-article false-coverage wording was designed for asymmetric-k and caused ex31 (Sojourner Truth) to regress. The film→performer bullet is timing-dependent: it only helps when the film article is retrieved in hops 1-4 (leaving a subsequent hop to query the person); when Rogue One is only retrieved in hop5 (the last hop), the bullet has zero effect.
- Remaining opportunity: A conservative reranker that only resolves rank-boundary conflicts (e.g., pick the best 3 from the 4 rank-7 documents across hops, not all 21 slots) would limit LM error scope while still recovering rank-boundary misses. A code-level approach (priority-weighted interleave using a simple scoring heuristic) would avoid the LM precision problem entirely. The film→performer bullet may still be useful if added with the correct timing — target examples where the film is found in hops 1-4 specifically.
Iteration 15 (k=7→12, None-query guard in _get_query_with_retry, Step 4 director/actress/choreographer bullet in IdentifyNextTarget, all applied to candidate 9) is an incremental structural code + prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) k=12 confirmed fixes rank-8+ ColBERT failures: Jonathan Lynn (was persistent across 7+ iterations — article at rank 8+ with k=7, now captured with k=12), Mars Inc., Greatest Game Ever Played all confirmed rank-boundary fixes. This is structurally generalizable — many persistent ColBERT failures are caused by gold articles ranking at positions 8-12. (2) Step 4 director/actress pattern confirmed working for Felicity Jones (ex33): after retrieving Rogue One, the LM correctly output Felicity Jones in hop5. (3) All 5 regressions were confirmed purely stochastic — context2 is IDENTICAL between parent and child (both use hop1_new[:6]; the first-6 hop1 results don't change with k), so k=12 did not structurally cause any regressions. (4) Asymmetric k (k=7 for hop1, k=12 for hops 2-5) is the logical next step: hop1 uses a broad raw-claim query where gold docs rank 1-6 (extra ranks 7-12 add noise to seen_titles); hops 2-5 use targeted entity queries where rank-boundary failures occur. (5) None-query guard: low-impact (fired once in ex75), but structurally correct and zero-risk. (6) The 5 stochastic regressions confirm that single-subsample evaluations cannot reliably measure changes below ±5% effect size — the structural fixes from k=12 + Step 4 pattern are real but were masked by LM variance on this seed.
Iteration 16 (k=7 for hops 1-4, k=12 for hop5 only + None-query guard + Step 4 director/actress bullet, applied to candidate 9 via two rounds) is an incremental structural code + prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) seen_titles pollution confirmed: Round 1's asymmetric k (hop1=7, hops 2-5=12) caused −10.4% subsample regression because k=12 for intermediate hops retrieves 12 docs but only 4 per hop enter the round-robin output (4-hop priority interleaving: hop1→6, hop2→4, hop3→4, hop4→4 slots). The remaining 8 docs per hop land in seen_titles without appearing in output, silently blocking later hops from retrieving those articles. Round 2 correctly isolates k=12 to hop5 only (last hop — no subsequent hops to pollute), which is safe and provides extra coverage when the target article is at rank 4-12 because earlier hops have exhausted duplicates. (2) Subsample fixes appear largely stochastic: ex07 (Sojourner Truth) was fixed because the LM stochastically output the correct query in hop4 rather than through k=12 hop5; ex42 (Winnie the Pooh 2011 film) fixed via hop5 identifying the film title. The 1 regression (ex49 Beyond Rangoon) was also stochastic — same hop1-2 path as parent but hop3 diverged. (3) Valset regression (0.8450→0.8152, −3.5%) despite positive subsample: the Step 4 director/actress bullet is the most likely culprit. When multiple film articles are retrieved in earlier hops, the LM may now apply the pattern to the wrong film (e.g., extracting Johnny Depp from True Romance instead of querying Beyond Rangoon), wasting hop5 on incorrect targets. The pattern fires too broadly — it should only apply when the claim explicitly implies a specific person behind a specific retrieved film. (4) None-query guard is safe: Low-frequency and no negative effects observed in the subsample trace. Keep in architecture. (5) k=12 for hop5: Mechanistically sound. If the valset regression is indeed caused by the Step 4 director/actress pattern rather than k=12, then k=12 for hop5 should be retained in the next iteration. Consider an A/B test: iter16 code minus Step 4 director/actress bullet, to isolate whether that bullet alone caused the regression.
Iteration 17 (asymmetric k: hop1=6, hops2-4=5, hop5=12 + NONE_PATTERNS None-query guard + seen-titles guard for hop5, all applied to candidate 9) is an incremental structural code improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) k=6 for hop1 confirmed structural fix for seen_titles pollution: Jonathan Lynn (ex48) was at rank-7 of hop1 with k=7; it entered seen_titles but was evicted at position 25 in round-robin, permanently blocking later hops from finding it via get_new_unique(). With k=6, rank-7 was never retrieved, never added to seen_titles, and a later hop correctly retrieved and included it. This is mechanistic and reproducible. (2) k=5 for hops 2-4 is mathematically correct: with 4-hop equal round-robin (6+5+5+5=21 slots), all retrieved docs enter the output with zero eviction. Previously k=7 for hops 2-4 added ranks 6-7 to seen_titles without contributing to the output. (3) Subsample was neutral due to exactly-cancelling stochastic regression: ex39 (Greatest Game Ever Played) regressed purely stochastically — same retrieved context, different hop3 LM choice. The structural fix (Jonathan Lynn) and the stochastic regression had identical score magnitudes (+0.994 − 0.994 = 0). (4) Seen-titles guard for hop5 is conservative and low-risk: fires in edge cases where hop5 tries to re-query an article already in seen_titles from an earlier hop's retrieval. Did not visibly affect the subsample but adds structural soundness. (5) Hop5 fire rate: ~88% (44/50 examples used 5 searches). Still very high — virtually every example pays the 0.002 penalty. (6) No valset evaluation: since subsample was neutral (no improvement), valset was not computed. The structural changes (k=6/k=5 for hop1/hops2-4) are expected to benefit the valset (Jonathan Lynn was a persistent 10+ iteration failure) but this is unconfirmed.
Iteration 18 (asymmetric k from iter17 + NONE guard + seen-titles guard for hop5 + Step 2 sub-article false-coverage fix + Step 1 claim-verbatim self-check + Step 3 disambiguation suffix guidance, all applied to candidate 9) is an incremental structural code + prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Sub-article false-coverage fix is a generalizable structural prompt improvement: Blocking "X bibliography | ..." and "X filmography | ..." from counting as coverage of X fixed ex14 (Robert E. Howard) and likely generalizes to many prominent people with Wikipedia sub-pages. The wording must explicitly allow disambiguation suffixes ("Dave Evans (singer)" DOES cover Dave Evans) and name-form variants. Round 1's strict wording ("EXACT plain title without any qualifier") caused two regressions; Round 2's narrower wording fixed them. (2) k=12 for hop5 continues to fix rank-boundary failures: ex75 (Robert Jordan) captured at rank 8-12, confirming the mechanism from iter15. (3) Disambiguation suffix guidance has low practical uptake: Only ~6/250 queries in the subsample used type qualifiers despite Step 3 instruction. ex117 (Secret Agent TV series) was NOT fixed at hop1 (the LM generated "The Secret Agent" without suffix). To reliably fix this class of failure, a code-level intervention is needed. (4) Valset confirmed generalizes: +1.0% absolute (0.8450→0.8550) is a genuine improvement across diverse examples, consistent with structural changes that generalize. (5) The iter18 Round 1→Round 2 progression is instructive: multi-change bundles can introduce regressions even when each change is structurally sound; it is worth validating each change independently when regressions appear.
Iteration 19 (partner bullet clarification, multi-membership bullet for multi-org membership claims, anti-fame-bias instruction in Step 4 PRIORITY section, all applied to candidate 11 / iter18) is an incremental prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Multi-membership bullet is confirmed effective: Glenn Hughes (ex58) fixed — the LM correctly identified the implicit person described by membership across three bands (Deep Purple, Black Sabbath, Trapeze) and directly queried "Glenn Hughes" in hop3, freeing remaining hops for band articles. This generalizes to any claim describing a person via multiple affiliation mentions (music, sports, multi-role public figures). (2) Anti-fame bias helps for disambiguation compliance but NOT for strong hallucinations: The instruction "do not default to the most famous name; identify the entity filling the SPECIFIC ROLE described by the claim" did not fix Gene Kelly/Bob Fosse (ex97) — the LM has a strong prior associating Fosse with Liza Minnelli ("Liza with a 'Z'") that overrides the anti-fame-bias instruction even though Fosse was born 1927, not 1912 as the claim states. Anti-fame bias works for soft disambiguation (choosing between co-equally famous people) but not for confident hallucinations. (3) Disambiguation suffix coverage check bug DISCOVERED: When the LM uses "F.E.A.R. (video game)" to retrieve the article (successfully), Step 2's coverage check fails to recognize "F.E.A.R. (video game)" as covering the bare entity "F.E.A.R." in the claim — causing 2 wasted follow-up hops where the LM re-queries related entities thinking F.E.A.R. is still uncovered. The current sub-article false-coverage rule (iter18) was designed to block false sub-page coverage, but inadvertently also blocks VALID disambiguation-suffix coverage. Fix: Step 2 should explicitly state that "X (type qualifier)" DOES cover X (the qualifier form counts as the entity's article). This is an actionable, low-risk improvement. (4) Valset did not improve (0.8550 = tie with iter18 best): the +4.7% subsample gain did not translate to valset improvement. The Glenn Hughes multi-membership pattern may be relatively rare in the valset; anti-fame bias may not help consistently. Partial overfitting to this subsample seed is likely. (5) Air Lituanica failure mode (ex20): With only 4 searches used (hop5 didn't fire because the LM thought all entities were covered), all LM hops queried "Vilnius Airport" / "Vilnius International Airport" variants but NEVER queried "Air Lituanica." The LM identifies the airport codes (VNO/EYVI) as pointing to the airport article, but does not infer that a DEFUNCT AIRLINE based at that airport needs its own separate article. The claim structure ("airport that ceased operations in 2015") is the cue that a defunct entity (Air Lituanica) needs to be retrieved, not just the airport. (6) Hop5 fire rate ~96% (48/50 examples used 5 searches in iter19 trace). Higher than prior estimates. Tightening the firing condition remains the highest-priority structural refinement not yet tested.
Iteration 20 (disambiguation suffix type-qualifier fix in Step 2 + defunct/former/ceased entity pattern in Step 4, applied to candidate 12 / iter19) is an incremental prompt-only improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Disambiguation suffix type-qualifier fix is validated: Step 2 now explicitly allows "X (film/TV series/video game/artwork/etc.)" to count as covering X; only sub-page suffixes (bibliography, filmography, discography, early life, health) are blocked. Fixed ex31 (The Dinner Party artwork) — the LM had been looping on re-queries because the "(artwork)" suffix was treated like a sub-page suffix, preventing coverage recognition. This generalizes to any example where the LM correctly uses a type-qualifier suffix to retrieve an article (F.E.A.R. (video game), The Secret Agent (TV series), etc.). (2) Defunct entity Step 4 pattern did NOT fix Air Lituanica: The Vilnius Airport article does not appear to mention "Air Lituanica" prominently enough in its text for the LM to extract it via body scan. The pattern may benefit other valset examples where a defunct entity IS prominently named in a retrieved article — but this is unconfirmed. (3) Valset improvement is negligible (+0.0001): The tiny valset movement (0.8550→0.8551) confirms the type-qualifier class of failures is small on the valset. The subsample gain (+2.3%) primarily reflects the specific (artwork) fix. (4) Hop5 fire rate: 92% (46/50 examples used 5 searches in iter20 trace) — slightly down from iter19's 96%, largely due to different seed. Still very high.
Iteration 21 (Step 3 CRITICAL type-qualifier enforcement + three new Step 4 body-scan bullets: parent company/owner, town/location-of, event venue, applied to candidate 13 / iter20) is an incremental prompt-only improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) CRITICAL directive framing is effective for media-type disambiguation: The CRITICAL flag with an explicit bad→good example ("F.E.A.R." → "F.E.A.R. (video game)") drove genuine LM compliance where prior softer guidance had ~6/250 uptake. This is the opposite of the pattern seen with entity selection (where CRITICAL/STRONGLY PREFER language causes over-triggering) — the key difference is that type-qualifier insertion is a LOW-STAKES operation (the LM is not choosing WHICH entity to query, only HOW to format a known entity). The lesson: strong directive framing is safe when the claim itself provides the answer (the media type is stated in the claim) but dangerous when it requires entity selection/reasoning. (2) Location-of bullet generalizes broadly: Confirmed fix for Afonwen — railway/station articles consistently include location phrases ("located in X"). This class is likely common in the HoVer dataset. (3) Parent company bullet introduces ordering risk in multi-article ownership chains: When both the product (e.g., Skittles) AND the manufacturer (Mars Inc.) are required supporting facts, the bullet causes the LM to jump to Mars and skip Skittles. Needs a condition: "only output the parent company if the product's OWN article is already retrieved." (4) Valset +3.5% relative (0.8551→0.8748) confirms these patterns generalize broadly — the type-qualifier class of failures is more common on the valset than the subsample suggested (F.E.A.R. was just one example; the valset has many more media-type disambiguation cases). (5) 8 failures in trace vs ~6 in iter20 trace: The additional failures (ex32 partial fix, ex82 stochastic regression) are not structural regressions. Persistent failures (Guy Davis, Airlines of Africa, Ancient Egyptian religion, Flex club, Gene Kelly, On the Buses) remain unchanged.
Iteration 24 (four prompt-only changes to candidate 14 / iter21: full legal name variant coverage fix in Step 2 + CREATOR bullet + COMPARISON/RANKING bullet + parent company ORDERING RULE — no code logic changes) is an incremental prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Full-name variant coverage fix is a confirmed structural gain: Boris Becker covers "Boris Franz Becker" — directly freed a hop that was previously wasted re-querying the formal name form. Generalizes to any entity with a formal longer name in the claim but shorter Wikipedia article title. (2) CREATOR and COMPARISON/RANKING bullets persist as over-triggering risks: 5 examples shifted from 4-hop to 5-hop (soft regressions) after adding these bullets. This mirrors the iter23 finding — the hop5 penalty cost of new body-scan bullets is ~5/50 examples per bullet pair. (3) DEFUNCT ENTITY rule has a cross-entity contamination risk: The Tallinn Airport article (retrieved because AirBaltic flies there) mentioned "Estonian Air" as defunct in 2015, causing the rule to fire for the wrong airline. The rule is mechanically sound but any retrieved article can name multiple defunct entities. (4) Hop5 fire rate: 95.5% (42/44 passing examples) — highest measured rate, confirming near-universal hop5 triggering. The hop5 firing condition tightening remains the single highest-priority untested structural change. (5) Iter24 is effectively candidate 15 + full-name variant fix: Since iter23 (candidate 15) had valset 0.8550, iter24's expected valset would be ~0.855-0.860 (slightly above iter23 due to the full-name fix), still below best (0.8748).
Iteration 25 (three prompt-only changes to candidate 14 / iter21: formal-name variant fix in Step 2 + CRITICAL PERSON COVERAGE RULE in Step 2 + COMPARISON/RANKING Step 4 bullet — no code logic changes) is an incremental prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) CRITICAL PERSON COVERAGE RULE confirmed as over-triggering in its universal form: The rule "org/film/work article naming a person does NOT cover that person's biographical article" is mechanically correct for the Matthew Bailes failure class (the person IS a gold supporting fact but org coverage doesn't count). However, the universal form (no conditioning on claim relevance) caused the LM to query biographical articles for every person mentioned in retrieved articles, including non-gold people like directors, minor cast members, and co-authors. This wasted hops broadly across the valset. Valset dropped from 0.8748 to 0.8252 (−5.7%) despite a +7.2% subsample gain. (2) CRITICAL framing is safe for type disambiguation but dangerous for coverage scope: The CRITICAL label drives near-100% LM compliance. For type disambiguation (iter21: "CRITICAL: use '(video game)' qualifier"), this is safe because the rule is binary and claim-verified. For coverage scope rules (iter25: "CRITICAL: org article does NOT cover mentioned person"), the LM applies it universally regardless of whether the person is actually needed. The Matthew Bailes fix requires a CONDITIONED rule, not a universal one: "query a person's biographical article if they are directly referenced or implied by the claim's relationship — NOT merely mentioned as a role-holder in a retrieved article." (3) +7.2% subsample gain was misleading — the seed contained ex13 (UEA Creative Writing) as the exact target of the new rule. This is the strongest subsample overfitting example in this run. (4) Formal-name variant fix is safe and structural: The fix (short common-name article covers longer formal name in claim) did not cause regression. Should be retained in future iterations. (5) COMPARISON/RANKING bullet suffers from sequencing: For ex18 (Heathrow), the LM issues broad queries in Steps 1-3 (London, United Kingdom) before reaching Step 4 body-scan. The bullet only fires when the bridge article (Gatwick) is retrieved AND no other claim entities are queued. Step 1 extension for superlative entities would help more: "if the claim describes an entity by a unique superlative role without naming it, enumerate it for direct querying in Step 3." (6) Hop5 fire rate dropped to 76% — lowest measured rate. The CRITICAL PERSON COVERAGE RULE caused the LM to query people earlier (hops 2-4), completing more examples in 4 hops. This shows the rule DID work behaviorally (Matthew Bailes class would pass) but the broad application cost the valset.
Iteration 23 (five Step 4 prompt-only additions to candidate 14 / iter21: CREATOR bullet, HOST/CAST MEMBER bullet, CO-FOUNDER bullet, COMPARISON/RANKING bullet, parent company ORDERING RULE — no code logic changes) is an incremental prompt improvement. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) CREATOR and COMPARISON/RANKING bullets are confirmed effective in the subsample: Adam Guettel (ex12) fixed — the CREATOR bullet caused the LM to extract the composer from Elena Shaddow's retrieved article and query him directly (previously the LM fixated on the Tony Award category name). Heathrow Airport (ex18) fixed — the COMPARISON/RANKING bullet caused the LM to extract the ranked entity from the Gatwick article body ("busiest airport" → Heathrow). Both patterns target common Wikipedia text structures and are likely to generalize. (2) CO-FOUNDER bullet did NOT fire for ex114 (Charlotte Baldwin Allen, persistent 18+ iterations): Augustus Chapman Allen article was retrieved, but Charlotte Baldwin Allen was never queried. Either: the Augustus Chapman Allen article text doesn't prominently name Charlotte in the snippet returned by ColBERT, or the LM doesn't recognize the co-founding context at scan time. The failure mode is uncertain — would need to verify whether the Allen article body text actually mentions Charlotte Baldwin Allen. (3) HOST/CAST MEMBER bullet did NOT fix ex126 (On the Buses/Pat Ashton, persistent 10+ iterations): Thick as Thieves (TV series) WAS retrieved (confirmed in trace retrieved titles), but Pat Ashton was not extracted and On the Buses film was never queried. The bullet is in place but the LM didn't execute the host-extraction scan when Thick as Thieves appeared in context. Possible causes: the Thick as Thieves article text doesn't name Pat Ashton prominently, or the LM skipped the HOST/CAST MEMBER scan because other claim entities (Harry Booth's filmography) dominated attention. (4) Valset dropped to 0.8550 (−2.3% from best 0.8748): The subsample gained +2.5% but the valset regressed. This could be: (a) stochastic noise — 2.3% is at the edge of the ±3% noise band and the seed changed; (b) real regression from new bullets causing over-triggering on valset examples that previously passed (the CREATOR bullet might cause the LM to look for a composer from any retrieved article even when the article doesn't name one, wasting a hop); or (c) the subsample gains (Adam Guettel, Heathrow) may be rare in the valset while the over-triggering cost is more common. The valset verdict is negative: candidate 14 (0.8748) remains best. (5) ex129 (Stranger in Paradise, persistent) — Kismet retrieved but song not extracted: The Kismet (musical) article IS now in the retrieved titles, and presumably names "Stranger in Paradise" as an adapted song. Yet the LM does not extract this song as a query target — it continues pursuing Borodin → Kipchaks → Prince Igor. Neither the existing named-song Step 4 bullet (iter13) nor the new CREATOR bullet caused the extraction. This suggests a deep body-scan compliance failure for musical-adaptation chains where the connection (Kismet → Stranger in Paradise) requires multi-step musical knowledge beyond simple name-presence in the text. (6) Hop5 fire rate: ~84% (42/50 examples used 5 searches in iter23 trace; ex85, ex92 used 4 searches — hop5 didn't fire because LM declared all entities covered). Still very high; the 0.002 penalty is paid nearly universally.
Iteration 26 (removing CRITICAL PERSON COVERAGE RULE from candidate 16) is a targeted reversal of a prior harmful change. It does not introduce a new retrieval architecture. Excluded from Macro Approaches. Key lessons: (1) Removing a CRITICAL rule is NOT the same as restoring the baseline: Iter26 = candidate 14 + formal-name fix + COMPARISON/RANKING bullet. The expected valset should be ~0.875 (candidate 14 baseline minus the COMPARISON/RANKING bullet cost). Instead, valset came in at 0.8351 — suggesting the COMPARISON/RANKING bullet costs ~0.04 valset score on its own. This is substantially larger than the −0.02 estimated from iter23 (which bundled 5 bullets together). (2) Partial recovery confirmed: 0.8252 → 0.8351 (+0.0099) after removing the CRITICAL rule. The CRITICAL PERSON COVERAGE RULE alone caused ~0.04 of the iter25 regression; the retained COMPARISON/RANKING bullet is responsible for the remaining gap from candidate 14. (3) Conditioned person-coverage rule remains the primary untested fix for Matthew Bailes class: The reflection correctly identifies that a conditioned rule ("query a person's biographical article ONLY IF they are directly referenced or implied by the claim's core relationship") would fix Matthew Bailes without over-triggering. This is the highest-priority prompt-level improvement not yet tested. (4) Hop5 fire rate recovered to 86% (from 76% in iter25), confirming that the CRITICAL PERSON COVERAGE RULE was suppressing hop5 by driving early person queries in hops 2-4. With the rule removed, the LM reserves more queries for hop5 (k=12), restoring rank-boundary capture capability.
Observations
Failure Pattern Distribution: Iteration 17 Child Trace (9 failures from 50)
Subsample score: 0.8153 (neutral, Δ=0.0 vs parent 0.8153). Built on candidate 9 (iter14). Rejected. No valset score. Note: 1 structural fix (ex48 Jonathan Lynn) exactly cancelled by 1 stochastic regression (ex39 Greatest Game Ever Played). All other failures are persistent.
-
Wrong entity chain / inference failure (4/9):
- ex7 (Violent Restitution / Allan Goldstein / Charles Bronson): Used only 4 searches (hop5 didn't fire — LM proposed a repeat hop5 query). Hops 1-4 followed Charles Bronson → Leslie Nielsen → Naked Gun chain. Allan Goldstein never queried. Persistent across 15+ iterations. Notable: with k=5 for hops 2-4 (instead of k=7), exactly 6+5+5+5=21 slots filled from 4 hops — no room for hop5 docs even if hop5 had fired.
- ex71 (Airlines of Africa / Comair / British Airways): Comair (South Africa) correctly retrieved in hop1. Hops 2-5 followed KLM → Air France-KLM chain. Airlines of Africa (Comair subsidiary) never queried. Persistent across 10+ iterations.
- ex95 (Felicity Jones / Rachelle Beinart / Rogue One): Rogue One and Rachelle Beinart correctly retrieved. Step 4 body scan in hop5 did NOT extract Felicity Jones — the LM likely extracted a different entity from the Rogue One article. Persistent across 10+ iterations. Note: the Step 4 director/actress bullet was NOT included in iter17 (removed vs iter16), confirming that even without it, the failure persists.
- ex137 (Aliens of the Deep / Bears film / Keith Scholey): Bears film retrieved. Hops looped on "African Cats" variants and "Fothergill" disambiguation articles. Aliens of the Deep never queried. Persistent.
-
ColBERT retrieval gap / wrong disambiguation (2/9):
- ex97 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): LM hallucinated Bob Fosse (born 1927) as the 1912 choreographer. All 5 hops pursued Fosse's collaborators. Gene Kelly and Best Foot Forward never queried. Persistent hallucination — the claim says "born in 1912" which should identify Gene Kelly, but the LM anchors on Fosse.
- ex117 (Secret Agent TV series / Stephen Graham / This Is England): Hop1 retrieved "The Secret Agent (film)" (1996 Bob Hoskins). All 5 hops followed wrong path: Bob Hoskins → Shane Meadows → etc. None of the 3 gold articles found. Persistent across 9+ iterations. Requires disambiguation suffix at hop1 or claim-level disambiguation.
-
Bridge article retrieved but target not extracted (2/9):
- ex126 (On the Buses film / Pat Ashton / Thick as Thieves TV series): Harry Booth article likely retrieved. LM fixated on "Thick as Thieves" from the claim. On the Buses and Pat Ashton never queried. Persistent across 9+ iterations.
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Wrong person identified (Dharmendra instead of Karan Kapoor as film star). Hop5 also fired. Persistent — claim disambiguation failure.
-
Stochastic regression (1/9):
- ex39 (Greatest Game Ever Played / Josh Flitter): Parent passed; child failed. Same context3 (Josh Flitter article) but LM chose "Nancy Drew" (first article in Flitter's list) instead of "The Greatest Game Ever Played" (the sports-context film). Pure LM variance — not caused by any code change.
Fix vs parent (candidate 9):
- ex48 (Jonathan Lynn / Yes Minister): Parent failed (0.0); child passed (0.996, 4 searches). Jonathan Lynn was at rank-7 of hop1 with k=7, added to
seen_titlesbut evicted at position 25. With k=6, never added toseen_titles→ hop4 correctly retrieved and included it. Also saved the 0.002 hop5 penalty (only 4 searches needed). Mechanistic, structural, reproducible fix.
Key new observations from iteration 17:
- k=6 for hop1 is definitively confirmed: The seen_titles pollution from rank-7 was the sole cause of the Jonathan Lynn failure across 10+ iterations. Reducing k from 7 to 6 exactly matches hop1's round-robin slot count (6 slots: positions 1, 5, 9, 13, 17, 21) and eliminates the pollution. This should generalize across any example where a gold article is at hop1 rank-7.
- k=5 for hops 2-4 is mathematically correct but no isolated fix observed: 4-hop equal round-robin allocates 5 slots per hop for hops 2-4. With k=5, all retrieved docs enter the output with zero eviction. Previously k=7 silently consumed ranks 6-7 into
seen_titles. No specific fix was observed in the subsample (perhaps because those rank-6/7 intermediate hop examples weren't in this subsample), but the fix is structurally sound. - ex95 (Felicity Jones) persists without the director/actress bullet: In iter16 (which included the bullet), Felicity Jones also failed. In iter17 (bullet removed), Felicity Jones still fails. This confirms the failure is not caused by or dependent on the director/actress bullet — it's a deeper chain inference failure.
- Hop5 fire rate ~88% (44/50 used 5 searches). Very similar to iter16 (~90%). The reduced k (k=5 vs k=7 for hops 2-4) didn't meaningfully change the hop5 fire rate — the query duplication condition (not the slot count) determines whether hop5 fires.
- ex7 (Allan Goldstein) used 4 searches but failed: Hop5 didn't fire (LM proposed a repeat query for hop5). But Allan Goldstein wasn't found in hops 1-4 either. With exactly 6+5+5+5=21 slots filled from 4 hops, there was no room for hop5 docs anyway even if hop5 had fired. This is a genuine hop-exhaustion case masked by the k=5 limit — the LM never got to query Allan Goldstein.
Failure Pattern Distribution: Iteration 18 Child Trace (5 failures from 50)
Subsample score: 0.8948 (+9.7% vs parent 0.8154). Built on candidate 9 (iter14). Accepted as candidate 11. Valset: 0.8550 (NEW BEST, +1.0% absolute vs prior best 0.8450). Note: strong multi-example fix across different failure categories: sub-article fix (ex14), k=12 rank-boundary (ex75), asymmetric k from iter17 (ex5 recovered), disambiguation prompt guidance (ex123 Christian Poulsen partially). Round 2 narrowed sub-article wording to fix Round 1 regressions.
-
Wrong entity chain / inference failure (3/5):
- ex3 (Matthew Bailes / Houman Younessi / Swinburne): CAS article retrieved in hop1. Hops went geographic distractors (Melbourne, Hawthorn) — Matthew Bailes (CAS director) never queried. Persistent across 15+ iterations.
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Wrong actor identified (Dharmendra instead of Karan Kapoor). Geoffrey Kendal and Karan Kapoor both missed. Persistent — first-hop disambiguation failure.
- ex56 (Guy Davis comics / Crimson Peak / Burn Gorman): Burn Gorman found. Hops followed Guillermo del Toro → Pacific Rim chain; Guy Davis (comics) never queried. Persistent across 10+ iterations.
-
Loop / entity fixation (1/5):
- ex92 (Green Chair / Shim Ji-ho / Suh Jung): LM returned "2005 Sundance Film Festival" repeatedly despite retry mechanism. Shim Ji-ho never queried. Persistent across 9+ iterations. The retry fires but the anchor on the festival is overwhelming.
-
Wrong disambiguation at hop1 (1/5):
- ex117 (Secret Agent TV series / Stephen Graham / This Is England): Hop1 retrieved "The Secret Agent (film)" (1996 Bob Hoskins). Despite disambiguation suffix guidance, the LM did NOT use "(TV series)" suffix in queries. Improvement from prior iterations: This Is England IS now found (via Shane Meadows chain), but Stephen Graham and the TV series article remain missing. Partial improvement. The disambiguation guidance fires in only ~6/250 total search queries across the full subsample — not reliable enough to fix this case.
Confirmed fixes vs parent (candidate 9):
- ex5 (Robinsons Galleria): Recovered with asymmetric k changes; was fixed in iter14 but this subsample seed had a different path. Structural.
- ex14 (Robert E. Howard): Sub-article false-coverage fix correctly blocked "Robert E. Howard bibliography" from counting as covered → LM queried "Robert E. Howard" directly in hop2. Mechanistic, generalizes to any entity with Wikipedia sub-pages.
- ex58 (Glenn Hughes): Round 1 regressed (strict "EXACT plain title" wording made LM reject "Dave Evans (singer)" as not covering "Dave Evans"). Round 2 fixed by explicitly allowing disambiguation suffixes → Glenn Hughes found.
- ex75 (Robert Jordan): k=12 for hop5 captured "Robert Jordan (writer)" article at rank 8-12. k=7 had missed it. Structural rank-boundary fix.
- ex123 (Christian Poulsen): Round 1 regressed (strict wording caused LM to loop on "Pierre Nlend Womé" form). Round 2 fixed by explicitly allowing name-form variants → budget freed for Christian Poulsen.
Key new observations from iteration 18:
- Sub-article wording is precision-sensitive: The iter18 round-trip (Round 1 regress → Round 2 fix) demonstrates that the sub-article false-coverage rule must be narrow. Allowing disambiguation suffixes ("(singer)") and name-form variants ("Pierre Womé") is critical; the failure mode is exactly when those forms are present in the retrieved passages. Keep the wording as-is; do NOT tighten further.
- Disambiguation suffix guidance has low practical uptake: Only ~6/250 queries in the full subsample used type suffixes despite the Step 3 instruction. The LM inconsistently applies it. ex117 (Secret Agent) was NOT fixed — the LM generated "The Secret Agent" without suffix at hop1. To reliably fix ex117-class failures, a code-level intervention is needed (e.g., detect when a "film" article is returned for a claim implying a "TV series" and retry with the suffix).
- Robert E. Howard fix is the most reliable generalizable win of iter18: Many prominent people have "X bibliography", "X filmography", "X discography" sub-pages in Wikipedia. The sub-article fix generalizes broadly.
- k=12 for hop5 continues to fix rank-boundary cases (ex75 Robert Jordan — same mechanism as ex13/ex14/ex16 in iter15). This is a persistent structural benefit.
- Hop5 fire rate: ~88% (44/50 examples used 5 searches; 6 used 4 searches).
- Hop5 fire rate is unchanged from iter17: The asymmetric k changes and prompt changes did not affect the hop5 firing condition.
- ex117 partial improvement is meaningful: This Is England is NOW found (via Shane Meadows) where it was NOT found in most prior iterations. Stephen Graham and The Secret Agent (TV series) remain missing. The disambiguation suffix guidance helped partially (the Shane Meadows chain is more specific) but did not fix the root hop1 disambiguation failure.
Failure Pattern Distribution: Iteration 19 Child Trace (6 failures from 50)
Subsample score: 0.8748 (+4.7% vs parent 0.8351). Built on candidate 11 (iter18). Accepted as candidate 12. Valset: 0.8550 (tied with iter18 best — no improvement). Changes: partner bullet clarification, multi-membership bullet, anti-fame-bias instruction in Step 4.
-
Wrong entity chain / LM hallucination (2/6):
- ex97 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): Queried Bob Fosse (×2, via "Liza with a 'Z'" reasoning), then Cabaret (musical), then "Liza with a 'Z': A Concert for Television." Never queried Gene Kelly or Best Foot Forward. The anti-fame-bias instruction did NOT fix this — the LM confidently hallucinates Fosse as the 1912 choreographer (Fosse was born 1927) because of his strong association with Liza Minnelli. Persistent hallucination across 15+ iterations — appears unfixable by prompt alone.
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Queried Loha (1987 film) → Dharmendra → Shatrughan Sinha → Amrish Puri. The LM identifies the most famous Bollywood actors from that era, not the actual star Karan Kapoor. Anti-fame bias did not fix this because the LM doesn't know the correct answer — it requires external knowledge of the film's star. Persistent across 15+ iterations.
-
ColBERT/chain failure — airline article never inferred (1/6):
- ex20 (Air Lituanica / Vilnius Airport / AirBaltic): Only 4 searches fired (hop5 didn't fire — LM thought all entities were covered after retrieving Vilnius Airport). All LM calls queried "Vilnius International Airport" or "Vilnius Airport" variants. Never queried "Air Lituanica." The LM correctly identifies the airport from the IATA/ICAO codes but does NOT infer that a defunct airline (Air Lituanica) based at that airport needs its own separate article. The claim's "airport that ceased operations in 2015" cues the defunct airline, but the LM treats it as pointing to the airport itself. Persistent across 10+ iterations. The airline article itself is the key missing piece, not the airport. Root cause: the LM correctly identifies AirBaltic and Vilnius Airport as covered, declares all entities covered in Step 2, and hop5 does not fire.
-
False-premise partner extraction failure (1/6):
- ex38 (Renáta Tomanová / 1980 French Open Mixed Doubles / Larisa Neiland): Queried "Boris Diaw" (a famous basketball player!) → 1980 French Open Mixed Doubles → "Billy Martin (tennis)" → "Boris Diaw (tennis)." The claim falsely names Boris Diaw (NBA player) as the tennis doubles partner, which confuses the LM. Renáta Tomanová is the actual doubles partner but was never queried. The updated partner bullet did not fix this because: (a) the false-premise entity ("Boris Diaw") doesn't exist in the 1980 French Open context, and (b) after retrieving the Mixed Doubles article, the LM cannot identify Tomanová as Diaw's partner because Diaw never played tennis. Persistent false-premise failure — requires external knowledge to override the claim.
-
Bridge article retrieved but specific sub-article not derived (1/6):
- ex53 (Douglas MacArthur's escape / Boeing B-17 / Texas Raiders): Queried "Douglas MacArthur" (generic biography) → "Conroe North Houston Regional Airport" (×2 — retry failed to prevent this despite exact-string match, possibly different normalization) → Philippines → "Flight of Douglas MacArthur." Boeing B-17 Flying Fortress was presumably retrieved, Douglas MacArthur's escape article and Texas Raiders never queried. The LM fixates on the airport and generic biography rather than the SPECIFIC escape article. The retry fired but "Conroe North Houston Regional Airport" was re-issued anyway. Persistent across 10+ iterations.
-
Bridge article retrieved but target not extracted from filmography (1/6):
- ex126 (On the Buses film / Pat Ashton / Thick as Thieves TV series): Queried "Harry Booth" → "Thick as Thieves (cooking show)" (×2, retry fired but produced same query) → "Thick as Thieves (TV series)" → "Harry Booth filmography." The Thick as Thieves TV series was correctly retrieved (hop4), but On the Buses (film) and Pat Ashton never queried. The Harry Booth filmography query was a good instinct (would surface "On the Buses") but the query wasn't issued early enough and the hop budget was exhausted. The LM fixates on the cooking show name from the claim and cannot pivot to the correct film. Persistent across 10+ iterations.
Confirmed fixes vs parent (candidate 11, different seed):
- ex58 (Glenn Hughes): Multi-membership bullet correctly directed the LM to identify the person described by membership in Deep Purple, Black Sabbath, and Trapeze → directly queried "Glenn Hughes" in hop3. Previously the LM spent 2 hops on Dave Evans disambiguation variants. Structural fix, generalizes to multi-org membership claims.
- ex63 (F.E.A.R.): The LM used "F.E.A.R. (video game)" as the query (disambiguation suffix applied via Step 3 guidance + anti-fame-bias context making the LM more deliberate). Article successfully retrieved. NOTE: post-retrieval, Step 2's coverage check FAILED to recognize "F.E.A.R. (video game)" as covering "F.E.A.R." in the claim — the LM then spent 2+ extra hops thinking F.E.A.R. was still missing. This is a newly identified bug in the sub-article wording: the "X (qualifier) does NOT cover X" wording from iter18's sub-article fix inadvertently also blocks VALID disambiguation suffix coverage. Partially structural fix with a known follow-up bug.
Key new observations from iteration 19:
- Disambiguation suffix coverage check bug is actionable: Step 2's current wording (from iter18 sub-article fix) says sub-pages like "X bibliography" do NOT cover X. But the LM appears to over-generalize this to ALL qualified titles, including valid disambiguation suffixes like "F.E.A.R. (video game)". Fix: explicitly distinguish — "X (bibliography/filmography/discography/etc.) does NOT cover X, but X (type qualifier like 'film', 'TV series', 'video game', 'song') DOES cover X." This would allow the LM to correctly mark "F.E.A.R. (video game)" as covering "F.E.A.R." This is a low-risk, high-value fix.
- Air Lituanica failure is distinctly a "defunct entity never inferred" failure: The LM retrieves the airport but doesn't infer the defunct airline. The hop5 never fires because the LM declares coverage complete after retrieving Vilnius Airport and AirBaltic. A possible Step 4 pattern: "if a retrieved airport article mentions a defunct or former airline based there, query that airline." Or: "if the claim mentions an entity that 'ceased operations,' query that entity directly as a distinct article."
- Anti-fame bias is effective for disambiguation, not hallucination: The instruction helps when the LM must choose between co-equally famous people and the claim specifies a role. It does NOT help when the LM has a strong confident prior (Bob Fosse / Liza Minnelli) — the prior association overrides the instruction.
- Hop5 fire rate ~96% (48/50 in iter19 trace): The highest recorded rate. Only 2 examples (ex77 id=78, ex47 id=138) used 4 searches. The hop5 firing condition is nearly unconditional.
- Valset flat at 0.8550: The +4.7% subsample gain did not improve the valset. Persistent structural failures (Gene Kelly hallucination, Loha disambiguation, Air Lituanica inference gap) account for most failures and are not addressable by incremental prompt changes.
Failure Pattern Distribution: Iteration 20 Child Trace (6 failures from 50)
Subsample score: 0.8748 (+2.3% vs parent 0.8550). Built on candidate 12 (iter19). Accepted as candidate 13. Valset: 0.8551 (new best, +0.0001 vs 0.8550 — essentially noise-level). Changes: disambiguation suffix type-qualifier fix in Step 2 (any "X (film/TV series/video game/artwork/etc.)" now counts as covering X) + defunct/former/ceased entity pattern in Step 4.
-
Wrong entity chain / geographic distractor (1/6):
- ex1 (Matthew Bailes / Houman Younessi / Swinburne): CAS article retrieved in hop1. Hops 2-5 went to geographic distractors (Melbourne, Hawthorn, Swinburne). Matthew Bailes (CAS director) never queried. Persistent across 16+ iterations.
-
Defunct entity never inferred (1/6):
- ex6 (Air Lituanica / AirBaltic / Vilnius Airport): Only 4 searches fired (hop5 didn't fire — LM declared all entities covered after retrieving Vilnius Airport and AirBaltic). "Air Lituanica" never queried. The new defunct entity Step 4 pattern did NOT fix this — Vilnius Airport article text doesn't prominently name Air Lituanica. Persistent across 10+ iterations.
-
False-premise partner extraction (1/6):
- ex13 (Renáta Tomanová / 1980 French Open Mixed Doubles / Larisa Neiland): Retrieved the Mixed Doubles article but failed to extract Renáta Tomanová as the correct partner. The claim's false-premise entity ("Boris Diaw") — an NBA player with no tennis history — confuses the LM's partner extraction. Persistent false-premise failure across 8+ iterations.
-
Host extraction failure — correct show found but host not derived (1/6):
- ex21 (Bill Cullen / Paul Melba / Punchlines): Punchlines correctly found (partial improvement vs prior iterations). Hop5 failed to extract Bill Cullen as the host from the Punchlines article. "Punchlines" is fixed; "Bill Cullen" remains missing. Persistent pattern — correct bridge article retrieved but leaf-node entity not extracted.
-
LM hallucination — wrong entity identified from claim (1/6, 2 missing docs):
- ex30 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): LM identified Bob Fosse (born 1927) as the 1912 choreographer instead of Gene Kelly (born 1912) — strong prior association with Liza Minnelli overriding the birth year clue. Both Gene Kelly and Best Foot Forward missed. Persistent hallucination across 16+ iterations. Unfixable by prompt alone.
-
Bridge article retrieved but specific targets not derived (1/6, 2 missing docs):
- ex42 (On the Buses film / Pat Ashton / Thick as Thieves TV series): Harry Booth article retrieved. On the Buses (film) and Pat Ashton never queried — the LM fixated on "Thick as Thieves" from the claim and couldn't derive "On the Buses" from the Harry Booth filmography. Persistent across 10+ iterations.
Confirmed fix vs parent (candidate 12, different seed):
- ex31 (The Dinner Party artwork / Sojourner Truth / Barbe de Verrue): Parent (this seed) failed because Step 2's old wording treated "(artwork)" like a sub-page suffix, blocking coverage recognition of "The Dinner Party (artwork)". The LM looped on re-queries. With the type-qualifier fix, "(artwork)" is recognized as the entity's own article → LM correctly advances to Sojourner Truth and Barbe de Verrue. Mechanistic fix. Generalizes to any Wikipedia article using a type-qualifier parenthetical (artwork, organization, band, etc.).
Key new observations from iteration 20:
- Type-qualifier fix is structurally correct but has limited valset impact: The +0.0001 valset movement confirms the class of examples requiring unusual type qualifiers (artwork, etc.) is small on the valset. The F.E.A.R. (video game) class is also now fixed by wording, but no subsample example directly confirmed this in iter20.
- Defunct entity pattern is unconfirmed: Air Lituanica persists. The Vilnius Airport article text may simply not mention the airline. The pattern remains a hypothesis for other valset cases.
- Bill Cullen partial progress: Punchlines is now consistently found (iter20 trace confirms). The host extraction is the remaining gap. Step 4 "host/presenter" pattern is the next incremental fix.
- Hop5 fire rate: 92% (46/50 examples used 5 searches). Down from 96% in iter19 — likely different seed. Still very high. Tightening the firing condition is the highest-priority untested structural change.
- All 6 remaining failures are persistent structural categories: Matthew Bailes (geographic distractor), Air Lituanica (defunct entity gap), Renáta Tomanová (false-premise), Gene Kelly (hallucination), Bill Cullen (host gap), On the Buses (filmography gap). None are addressable by further prompt changes alone.
Failure Pattern Distribution: Iteration 16 Child Trace (8 failures from 50)
Subsample score: 0.8351 (+2.4% vs parent 0.8152). Built on candidate 9 (iter14). Accepted as candidate 10. Valset: 0.8152 (−3.5% vs best 0.8450 — significant regression). Note: the subsample parent had 9 failures; the child has 8 — net +1 fix. Both ex07 (Sojourner Truth) and ex42 (Winnie the Pooh 2011 film) were fixed; ex49 (Beyond Rangoon) newly regressed. All three changes are largely stochastic. The valset regression is real and unexplained by the subsample signal.
-
Wrong entity chain / inference failure (3/8):
- ex00 (Matthew Bailes / Swinburne / CAS): CAS article retrieved in hop1. Hops 2-4 went to Swinburne → Melbourne → Hawthorn, Victoria (geographic distractors). Matthew Bailes (CAS director) never queried. Persistent across 12+ iterations.
- ex27 (Green Chair / Shim Ji-ho / Suh Jung): Hops cycled to "2005 Sundance Film Festival" four times (hops 2-4 + hop5 each returning the festival or Park City, Utah). Retry mechanism fired but LM kept returning the festival. Shim Ji-ho (the actor) never queried. Park Chul-soo was found in hop3 but the chain never advanced to the actor. Persistent across iter4, iter9, iter12, iter13, iter14, iter15, iter16. Root cause: the Sundance Film Festival is the most prominent entity in the claim context after "Green Chair" is retrieved, and the LM anchors on it regardless of the repeat warning.
- ex49 (Beyond Rangoon / Patricia Arquette / Victor Slezak): Queries went Victor Slezak → Johnny Depp → The Bridges of Madison County → The Bridges of Madison County (film). Both parent and child went to Johnny Depp in hop2 (plausible: True Romance had both Arquette and Depp). Parent then correctly queried Beyond Rangoon in hop3; child went to Bridges of Madison County instead. Stochastic divergence — not attributable to the iter16 changes.
-
ColBERT retrieval gap — correct query issued but article not returned (2/8):
- ex21 (Lion of Ireland / Morgan Llywelyn / Robert Jordan): Correctly queried "Robert Jordan" and "Robert Jordan (author)" — both in hop2 and hop5 via retry — but ColBERT did not return the Robert Jordan article in any of the top-7 results. Morgan Llywelyn and Lion of Ireland correctly retrieved. This is a fundamental ColBERT ranking gap for "Robert Jordan" (the fantasy author). Persistent.
- ex33 (Asymptotic safety in quantum gravity / Sheldon Lee Glashow / Steven Weinberg): Steven Weinberg correctly retrieved in hop1. Queried "Asymptotic safety in quantum gravity" five times (hops 2, 3, 5 and two retries) plus "Asymptotic safety" and "Asymptotically safe gravity" — ColBERT never returned the article. Also Sheldon Lee Glashow never queried (wrong chains to David Gross, Hugh Politzer, Harvard University). Persistent ColBERT deep gap — the article title doesn't score well in the index.
-
Wrong disambiguation at hop1 / wrong article chain (1/8):
- ex41 (The Secret Agent TV series / Stephen Graham / This Is England): Hop1 retrieved "The Secret Agent (film)" (1996 Bob Hoskins) instead of "The Secret Agent (TV series)." All 5 hops followed wrong path: Shane Meadows → Bob Hoskins → Christopher Hampton → Patricia Arquette. This Is England not found, Stephen Graham not found. Persistent across 8+ iterations. Requires disambiguation suffix at hop1 or claim-level disambiguation logic.
-
Bridge article retrieved but target not extracted (2/8):
- ex45 (On the Buses film / Pat Ashton / Thick as Thieves TV series): Queries: Harry Booth → "Thick as Thieves (cooking show)" (queried 3 times, retry fired twice) → Dennis Price → "Harry Booth filmography". On the Buses and Pat Ashton never queried. The Harry Booth article was correctly retrieved but the LM could not identify "On the Buses" as Harry Booth's 1971 film — it fixated on "Thick as Thieves" from the claim and couldn't resolve the TV show name. Persistent.
- ex46 (Stranger in Paradise song / Polovtsian Dances / Cór Cois Abhann): Queries: Alexander Borodin → Kipchaks → Cumans → Prince Igor. Kismet (musical) IS retrieved at position [2] in hop1, but the LM pursues the Borodin → opera → Kipchaks chain instead of extracting "Stranger in Paradise" from the Kismet article. Persistent across 8+ iterations. The Step 4 named-work pattern (added in iter13) has not fixed this — the connection between Kismet and "Stranger in Paradise" requires music-domain knowledge not surfaced by the current Step 4 patterns.
Fixes introduced vs parent (candidate 9, same seed):
- ex07 (Sojourner Truth / The Dinner Party / Barbe de Verrue): Parent failed with Sojourner Truth missing. Child successfully queried Sojourner Truth (hop4) and The Dinner Party (hop5). Assessment: stochastic — the LM navigated through "Isabella (Belle)" duplicate queries (retry fired once) and eventually landed on "Sojourner Truth" in hop4 and "The Dinner Party" in hop5. This fix is not mechanistically attributable to k=12 hop5 since Sojourner Truth was retrieved via hop4 (k=7). It was LM stochasticity.
- ex42 (Winnie the Pooh 2011 film / LA Urban Rangers / Huell Howser): Parent failed; child succeeded. Query chain: Backson → LA Urban Rangers → Backson (repeat) → Huell Howser → "Winnie-the-Pooh (2011 film)". The hop5 predictor correctly identified the 2011 film from the Huell Howser context. Assessment: mix of stochastic and k=12 hop5 — the film article may have been at a rank that k=12 captured but k=7 would not. The Step 4 body-scan may also have helped identify the film title.
New regression vs parent:
- ex49 (Beyond Rangoon): Parent passed with Victor Slezak → Johnny Depp → Beyond Rangoon. Child went Victor Slezak → Johnny Depp → Bridges of Madison County (wrong). Stochastic divergence at hop3 — no structural cause from iter16 changes.
Key new observations from iteration 16:
- seen_titles pollution is the critical insight from Round 1: With k=12 for hops 2-4, each intermediate hop adds 12 docs to
seen_titlesbut only 4 go to round-robin output. The other 8 are "silently consumed" — they won't appear in the output AND future hops can't retrieve them (already inseen_titles). For a gold article at rank 5-12 of an intermediate hop, this means it's blocked everywhere. Round 2 (k=12 for hop5 only) is the correct design: last hop has no subsequent hops to pollute. - Step 4 director/actress pattern is suspect for valset regression: Despite the subsample showing a fix (ex33 Felicity Jones in iter15), the iter16 valset dropped 3.5% after including the director/actress bullet. The ex49 regression (even if stochastic) follows a plausible mechanism: retrieving True Romance → LM applies director/actress pattern → outputs Johnny Depp from True Romance instead of looking for Beyond Rangoon. When multiple film articles are in context, the LM may preferentially apply the pattern to the WRONG film. The next iteration should test removing or tightening this bullet.
- Shim Ji-ho (ex27) is unusually sticky: The LM repeated "2005 Sundance Film Festival" 4+ times across all hops despite the retry mechanism. Even with multiple retries, it returned the festival again. This suggests the claim's context (a film at Sundance) so strongly anchors the LM on the festival that no retry warning overcomes it. Shim Ji-ho (the actor's Wikipedia name) may not appear in the Green Chair article body text at all, making this a ColBERT+body-scan gap.
- Hop5 fired in 46/50 examples (search_count=5 in 46 examples; 4 examples used only 4 searches: ex13, ex22, ex40, ex47). Fire rate still ~92% on this seed, even higher than the prior estimate of 80%.
Failure Pattern Distribution: Iteration 15 Child Trace (15 failures from 50)
Subsample score: 0.6960 (net neutral vs parent 0.6960). Built on candidate 9 (iter14). Rejected. Valset N/A. Note: 5 fixes and 5 stochastic regressions perfectly cancelled. The same seed was used for parent and child, so the +0.0 delta is a fair comparison — however stochasticity at this level is well within the ±3% noise band.
-
Wrong entity chain / inference failure (6/15):
- ex00 (Houman Younessi / Matthew Bailes / Swinburne): CAS article retrieved in hop1. Hops 2-5 went to Hawthorn → Swinburne → Melbourne (geographic distractors). Matthew Bailes (CAS director) never queried. Persistent across 10+ iterations.
- ex03 (Allan Goldstein / Charles Bronson / Violent Restitution): Charles Bronson correctly queried in hop1, then hops went Leslie Nielsen → The Naked Gun → Charles Dennis Buchinsky. Allan Goldstein (director) never queried. Persistent.
- ex07 (Richard Ford / Robert E. Howard): Claim says "more scope of profession than Robert E. Howard." LM retrieved The Lay of the Land but never queried Robert E. Howard. Persistent.
- ex25 (Airlines of Africa / Comair): Hops went KLM → British Airways chain. Airlines of Africa (Comair subsidiary) never queried. Persistent.
- ex40 (The Secret Agent TV series / Stephen Graham / This Is England): Hop1 retrieved "The Secret Agent (film)" (1996 Bob Hoskins) instead of TV series. All hops followed wrong disambiguation path. Persistent across 6+ iterations.
- ex47 (1974-75 NY Islanders season / Madison Square Garden / NY Rangers): LM correctly retrieved Madison Square Garden and NY Rangers, but never queried the specific historical season article. Persistent.
-
Stochastic regressions (5/15 — were passing in parent; regressed due to LM variance, not k=12):
- ex05 (NH Route 124): NH Route 125 retrieved instead; Route 124 missed. Context2 identical to parent (hop1 top-6 unchanged), so regression is pure LM variance.
- ex09 (Air Lituanica): Parent passed by querying "Air Lituanica" in hop2; child's hop2 went to "Kogalymavia" (different query from identical context). Pure stochastic divergence.
- ex15 (Zeitgeist Film Series): Retrieved "Zeitgeist (company)" but not "Zeitgeist Film Series." Parent succeeded; child failed due to LM variance.
- ex36 (Charles Lane / Lucille Ball): Claim has typo "Charpes Lane." Child started with Jim Brochu but diverged to Isa Bowman, Zero Hour etc., never querying Lucille Ball or Charles Lane. Typo-anchoring + LM variance.
- ex41 (Afonwen / Caerwys railway station): Child retrieved Caerwys and A55 road but never reached Afonwen or the specific Caerwys railway station article. Parent used 5 hops with Afonwen as one query; child's hop sequence diverged stochastically.
-
ColBERT ranking gaps (2/15):
- ex17 (Swoosh / Dan Wieden / Just Do It): Swoosh correctly queried but ColBERT never returns the Swoosh article. Persistent across 5+ iterations. k=12 did not help (article simply not ranked at positions 1-12 for this query).
- ex23 (F.E.A.R. / Alma Wade / SAS: Secure Tomorrow): F.E.A.R. queried correctly but ColBERT returns disambiguation/series/album variants, not the base game article. Persistent.
-
Hallucination (1/15):
- ex34 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): LM identified Bob Fosse (born 1927) as the 1912 choreographer instead of Gene Kelly (born 1912). Despite Step 4 director/actress pattern, the LM hallucinated Fosse from the Liza with a Z article. Persistent — the Step 4 pattern guides extraction correctly in ex33 (Felicity Jones) but fails here because the LM hallucinates the wrong person.
-
Morgan Llywelyn / Lion of Ireland (1/15):
- ex28 (Lion of Ireland / Morgan Llywelyn / Robert Jordan): Both Lion of Ireland and Robert Jordan correctly retrieved in hops. But the Morgan Llywelyn article was not found — likely a ColBERT ranking issue where "Morgan Llywelyn" doesn't surface her own article at ranks 1-12.
Confirmed fixes introduced by iter15 changes:
- ex13 (Mars Inc.) — k=12: "Mars, Incorporated" article was at rank 8-12 for the "Mars, Incorporated" query; k=7 missed it, k=12 captured it.
- ex14 (Greatest Game Ever Played) — k=12: Same rank-boundary mechanism.
- ex16 (Jonathan Lynn) — k=12: Jonathan Lynn article was at rank 8+ (ColBERT partial-name-match issue pushed it down). With k=12, captured. Only 4 hops needed — persistent multi-iteration ColBERT gap finally resolved by wider k.
- ex33 (Felicity Jones) — Step 4 director/actress pattern: After retrieving Rogue One, the child LM correctly extracted Felicity Jones in hop5 and output her as the next query. Parent's LM had gone to Teletubbies tangent. Confirms the new Step 4 bullet works as intended.
- ex48 (Beyond Rangoon) — k=12 or hop path change: Beyond Rangoon and Victor Slezak both retrieved in the child. Likely k=12 enabling an article that was at rank 7-12 in an earlier hop.
Key new observations from iteration 15:
- k=12 is a genuine structural improvement for rank-boundary ColBERT failures: Jonathan Lynn, Mars Inc., Greatest Game Ever Played were all stuck at ranks 8+ with k=7. The fix is mechanistic and generalizes. However, on the raw claim query (hop1), k=12 adds irrelevant articles at ranks 7-12 to
seen_titleswithout contributing to round-robin (since only hop1[:6] go to context2). This is a potential seen_titles pollution risk, though context2 trimming mitigates false-coverage risk. - Stochastic regressions confirmed not caused by k=12: The reflection analysis is definitive — context2 is IDENTICAL in parent and child (same hop1 top-6 regardless of k), so any hop2 behavior difference is pure LM variance. k=12 did not cause any regression structurally.
- Step 4 director/actress pattern validated but not universal: ex33 (Felicity Jones) fixed; ex34 (Gene Kelly) still fails because the LM hallucinated Fosse rather than failing to read the film article. The pattern helps extraction from correctly-retrieved film articles but cannot fix hallucination of a wrong person from the claim context.
- None-query guard: only 1 wasted hop saved in 50 examples — low frequency but zero-risk. Worth keeping.
- The 5 fixes from iter15 should appear as persistent improvements on the valset: These are structural fixes (rank-boundary ColBERT misses, Step 4 pattern). Expected valset impact is positive. The iter15 subsample eval was misleading due to stochastic masking.
Failure Pattern Distribution: Iteration 14 Child Trace (15 failures from 50)
Subsample score: 0.6959 (+2.7% vs parent 0.6773 on same seed). Built on candidate 8 (iter13, fruitless tracking). Accepted as candidate 9. Valset: 0.8450 (NEW BEST, +2.2% absolute vs prior best 0.8267). Note: the 15 failures vs 9 in iter13 reflects a different random seed — the fair comparison is the +2.7% delta on the same seed.
-
ColBERT retrieval gap — correct query issued but article not returned (4/15):
- ex14 (Jonathan Lynn / Yes Minister / Ettore Scola): Jonathan Lynn correctly queried in hops 2, 3, and 5 but ColBERT never returns the Jonathan Lynn article (returns Wiley Lynn, George Lynn variants). Persistent across iter4, iter6, iter7, iter8, iter12, iter13, iter14. Fundamental ColBERT ranking gap.
- ex15 (Swoosh / Dan Wieden / Just Do It): Swoosh correctly queried in hops 1, 3, and 5 but ColBERT never returns the Swoosh article (returns Nike-related near-misses). Persistent across iter4, iter11, iter12, iter13, iter14. The retry mechanism fires but surfaces only Nike-branded articles.
- ex26 (Moonrunners / Briscoe Darling Jr. / Dukes of Hazzard): Moonrunners correctly queried in hop3 but ColBERT returns
Sunrunner,Traitor's Moon,Jerry Rushing— not the film. Hops 4-5 wasted on Uncle Jesse and another variant. Persistent across 6+ iterations. ColBERT near-name match failure. - ex33 (Asymptotic safety in quantum gravity / Sheldon Glashow / Steven Weinberg): Hop5 retry correctly queried "asymptotic safety in quantum gravity" (exact article title) but the document is still missing from final 21. Likely a ColBERT ranking gap or slot eviction at boundary. Hops 1-4 cycled through "asymptotic safety" → "quantum gravity" → retry → "sheldon glashow" → retry → exact title in hop5.
-
Wrong entity chain / second-hop inference failure (5/15):
- ex1 (Matthew Bailes / Swinburne / CAS): CAS article retrieved in hop1. Hops 2-5 went Melbourne → Swinburne → Hawthorn → Swinburne (loop). Matthew Bailes (CAS director, visible in CAS article) never queried despite hop5 having an extra chance. Persistent across iter6, iter7, iter9, iter10, iter11, iter12, iter13, iter14.
- ex4 (Allan Goldstein / Charles Bronson / Violent Restitution): Charles Bronson correctly queried in hop1, then hops went Leslie Nielsen → The Naked Gun → Charles Dennis Buchinsky (Bronson birth name). Allan Goldstein (director) never queried. The LM follows Bronson → co-star chain instead of Bronson → director chain. Persistent.
- ex11 (Apple Inc. / Welcome to Macintosh / Vertex Pharmaceuticals): Welcome to Macintosh correctly retrieved in hop1. Hops 2-5 went Boston → Stephen Ives (documentary director) → New York City → (hop5). Apple Inc. — directly implied by the documentary's subject — never queried. Geographic distractors dominate. Persistent across multiple iterations.
- ex17 (Guy Davis comics / Crimson Peak / Burn Gorman): Burn Gorman correctly retrieved in hop1. Hops 2-5 went Guillermo del Toro → Pacific Rim → Pacific Rim (2013 film) → (hop5). Never reached Crimson Peak or Guy Davis. LM follows del Toro's filmography in wrong direction. Persistent.
- ex21 (Bill Cullen / Paul Melba / Punchlines): Hops 1-3 wasted on Val Doonican → The Val Doonican Show (loop). Hop4 correctly queried "Punchlines" — but Bill Cullen (the show's host) was not extracted from it. Hop5 went to Lennie Bennett instead of Bill Cullen. One step away from success but the host extraction failed. Persistent — correct show found but host not derived.
-
Wrong disambiguation at hop1 / wrong article chain (2/15):
- ex38 (The Secret Agent TV series / Stephen Graham / This Is England): Hop1 retrieved "The Secret Agent (film)" (1996 Bob Hoskins film) instead of "The Secret Agent (TV series)" with Stephen Graham. All 5 hops followed wrong path: Bob Hoskins → Shane Meadows → This Is England → Patricia Arquette. Interestingly, This Is England WAS correctly queried (hop3) but the TV series and Stephen Graham were not reached. Persistent across iter8, iter10, iter12, iter13, iter14. The specific fix needed is a disambiguation suffix at hop1 or a claim-level disambiguation check.
- ex30 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): LM hallucinated Bob Fosse as the choreographer (Fosse born 1927, claim says 1912 — Gene Kelly, born 1912, is correct). Hops went Bob Fosse → Chet Walker → "Liza with a 'Z'" → Bob Fosse (loop). Never queried Gene Kelly or Best Foot Forward. Persistent hallucination — same across multiple iterations.
-
Claim resolution failure / typo loop (2/15):
- ex31 (Lucille Ball / Charles Lane actor / Jim Brochu): Claim contains typo "Charpes Lane" (should be "Charles Lane"). Hops went Piper Laurie → "Charpes Lane" → Charles Lane (correct!) → "Charpes Lane" (back to typo) → "Lucy in the Afternoon" (Jim Brochu's Lucille Ball book — close but not the direct article). Lucille Ball never queried despite being the biography's subject. The retry mechanism fires but the LM reverts to the typo form. Typo-anchoring is a distinct failure mode — the claim's garbled spelling overrides correct reasoning.
- ex45 (1974-75 NY Islanders / New York Rangers / Madison Square Garden): LM started with "New Jersey Devils" (wrong team) instead of New York Rangers, then went Madison Square Garden → New York metropolitan area → NHL. New York Rangers never queried, 1974-75 NY Islanders season never queried. The specific historical season article requires knowing the year from unstated context. Persistent across multiple iterations.
-
Loop / fruitless query not suppressed (1/15):
- ex42 (Aliens of the Deep / Bears film / Keith Scholey): Hops cycled: Alastair Fothergill → American Cats → American Cats (repeated) → Alastair Fothergill (repeated) → Alastair Fothergill (repeated) → American Cats (repeated). The retry mechanism should suppress these repeats, but since ColBERT returns at least some docs for "American Cats" and "Alastair Fothergill" (fruitless detection not triggered), the cycle persists. "Aliens of the Deep" — the other documentary co-directed by Scholey and Fothergill — never queried. The fruitless tracking mechanism is insufficient when wrong-but-non-empty results are returned.
-
Partner extraction failure (1/15):
- ex47 (Ellis Ferreira / Boris Becker / 1997 Stockholm Open Doubles): Boris Becker and 1997 Stockholm Open Doubles correctly retrieved (hops 1-2). Hops 3-5 kept querying the event article (loop) or Nicklas Kulti, Jonathan Stark — never Ellis Ferreira (Kulti's actual partner). The partner extraction Step 4 example added in iter11 still fails for this case. Persistent across iter11, iter12, iter13, iter14.
Net comparison vs iteration 13 child (9 failures, different seed):
- Different subsample seed makes direct count comparison meaningless. The same-seed +2.7% delta is the fair comparison.
- Persistent hard failures remain: Jonathan Lynn (ColBERT), Swoosh (ColBERT), Moonrunners (ColBERT), Matthew Bailes (inference), Secret Agent disambiguation, Gene Kelly hallucination, NY Islanders (specific season), Ellis Ferreira (partner).
- Notable: Bill Cullen / Punchlines (ex21) came close — Punchlines correctly found in hop4, but Bill Cullen (host) not extracted from it. This is a leaf-node failure: correct article retrieved but next-hop entity not derived.
Key new observations from iter14 trace:
- Hop5 fire rate ~80%: Only ~8/50 examples used 4 hops. Almost every example activates hop5 because the Step 4 body scan almost always surfaces SOME new entity. This means the 0.002 penalty is paid nearly universally, with net benefit only from structural hop-exhaustion fixes. The valset still improved (+2.2%), confirming fixes outweigh costs, but a tighter firing condition would improve the margin.
- Priority interleaving is correct and confirmed: Round 1 (equal 5-hop round-robin) lost Simone Bolelli (hop1 rank-6 displaced) and Krupa/Sunkist. Round 2 (priority interleaving) recovered both. The false-coverage bug was structurally real: with equal 5-hop, hop1 rank-6 lands at position 26 (evicted), but context5 passes hop1_new[:6] to the LM, making it think rank-6 is "covered." Priority interleaving eliminates this by giving hop1 positions 1-6 unconditionally.
- Asymptotic safety in quantum gravity retry works but ColBERT fails: The retry mechanism in hop5 correctly escalated from "asymptotic safety" → "asymptotic safety in quantum gravity" (exact title). But even the exact article title doesn't surface the document from ColBERT. This is a deep ColBERT ranking failure that disambiguation suffixes alone cannot fix.
- Claim-typo anchoring: ex31 shows the LM can correctly identify "Charles Lane" (hop3) but then reverts to "Charpes Lane" (claim typo) in hop4. The retry mechanism doesn't help because "Charpes Lane" is a different normalized string from "Charles Lane" — they don't conflict in all_normalized_queries. The fix would require detecting when a query returns zero new unique docs AND is clearly derived from a garbled claim phrase, then trying the corrected form.
- Bill Cullen one-step-away: ex21's hop4 correctly found "Punchlines" article. The article presumably names Bill Cullen as the host. But hop5 went to "Lennie Bennett" instead of Bill Cullen. This is an in-body extraction failure (one article away from success) that the Step 4 "host" pattern doesn't yet cover.
Failure Pattern Distribution: Iteration 13 Child Trace (9 failures from 50)
Subsample score: 0.8167 (+5.1% vs parent 0.7769). Built on candidate 7 (4-hop, valset 0.8267). Accepted as candidate 8. Valset: 0.8167 (−1.2% vs best, within noise).
-
Second-hop inference failure — implied entity visible in retrieved text but wrong entity selected (3/9):
- ex0 (Allan Goldstein / Charles Bronson / Violent Restitution): Retrieved Violent Restitution and Charles Bronson correctly, but never queried Allan Goldstein (director). The Leslie Nielsen article is retrieved but the LM does not extract the director from it. Persistent (ex7 in iter13 reflection, ex1/ex2 in prior traces).
- ex23 (Punchlines / Bill Cullen / Paul Melba): Retrieved Paul Melba article correctly. Step 4 was supposed to find "Punchlines" (the American TV show Paul Melba appeared on), but the LM extracted Val Doonican (a British artist mentioned in the Paul Melba article) instead of identifying Punchlines as the "American version of a TV show" and Bill Cullen as its host. Hops 2/3/4 all wasted on Val Doonican and Regis Philbin. Persistent failure — Step 4 named-show pattern still fails to identify the right show from ambiguous body text. Root cause: the claim says "an American version of a TV show" — the Paul Melba article mentions multiple shows, and the LM picks the wrong one.
- ex33 (Charlotte Baldwin Allen / History of Texas / George Ruby): Retrieved George Ruby AND History of Texas correctly (both gold docs found), but Charlotte Baldwin Allen (female co-founder of Houston) never queried. Persistent co-founder omission — the LM retrieves Augustus Chapman Allen but not his wife. Persistent across iter5, iter6, iter7, iter8, iter11, iter12, iter13.
-
ColBERT retrieval gap — correct query issued but wrong-level article returned (2/9):
- ex21 (F.E.A.R. / Alma Wade / SAS: Secure Tomorrow): Alma Wade and SAS: Secure Tomorrow both correctly found. Hop queried
F.E.A.R.but ColBERT returnedF.E.A.R. (series),F.E.A.R. (disambiguation),F.E.A.R. (album),F.E.A.R. 3— NOT the base game article. Persistent across iter6, iter8, iter11, iter12, iter13. The exact Wikipedia articleF.E.A.R.is never ranked first by ColBERT for this query string. - ex46 (Crepis / Isatis / E.B. Babcock): E.B. Babcock and Crepis both correctly retrieved (hop1 on raw claim). Hop2 correctly queries
Isatisbut ColBERT returnsIsatis tinctoria(species) not theIsatis(genus stub). SinceIsatis tinctoriais a NEW unique doc, Isatis is NOT added to fruitless_queries — the mechanism can't help here. Hops 3 and 4 each begin by tryingIsatisagain (both in previous_queries), triggering the retry mechanism twice, and pivoting toCrepis(already retrieved) andBrassicaceaerespectively. Key insight: fruitless detection is blind to "wrong article returned" cases — it only catches true zero-result queries. LM 2's own reasoning correctly identifies the gap ("not just a species like Isatis tinctoria") but can't fix it.
- ex21 (F.E.A.R. / Alma Wade / SAS: Secure Tomorrow): Alma Wade and SAS: Secure Tomorrow both correctly found. Hop queried
-
4-hop budget exhausted on wrong entities, core article unreached (2/9):
- ex11 (The Dinner Party / Sojourner Truth / Barbe de Verrue): Barbe de Verrue retrieved in hop1. Hops 2/3/4 all searched for "Isabella (Belle)" or "Isabella (Belle) Isabella" (literal claim text), getting irrelevant Isabella articles. Never queried "Sojourner Truth" or "The Dinner Party." Root cause: the claim's garbled wording "Isabella (Belle) Isabella was the birth name" — the LM resolves this as a literal search query rather than recognizing the abolitionist as Sojourner Truth. Context trimming (iter12) fixed this under a specific seed where Sojourner Truth was at hop1 rank-7; with the new seed, Sojourner Truth is not in hop1's results at all. Persistent but seed-dependent.
- ex18 (Douglas MacArthur's escape / Texas Raiders / Boeing B-17): Boeing B-17 correctly retrieved. Hops 2/3/4 went to Douglas C-74 Globemaster → Lone Star Executive Airport → Douglas MacArthur (general biography). The specific article "Douglas MacArthur's escape from the Philippines" and "Texas Raiders" (the specific B-17 at Conroe) never queried. Airport disambiguation failure persists despite hyphen normalization (different airport queried this time vs. iter12). Persistent across iter7, iter11, iter12, iter13.
-
ColBERT chain gap — bridge article retrieved but next-hop entity not text-inferable (2/9):
- ex39 (Stranger in Paradise / Polovtsian Dances / Cór Cois Abhann): Cór Cois Abhann and Alexander Borodin correctly retrieved (hop1). Hop2 correctly covers all named claim entities and goes to Step 4, but queries
Prince Igor(Borodin's opera) instead ofStranger in Paradise (song)(the Kismet musical adaptation). Hop3 pivots toKipchaks(descriptive entity). The Kismet (musical) article IS retrieved (appears in retrieved titles at position 9) but the LM doesn't extractStranger in Paradiseas the specific song from it. Persistent across iter5, iter6, iter7, iter8, iter11, iter12, iter13. The PRIORITY note in Step 4 ("prefer direct claim-relationship entities") partially helps but the LM still chose Prince Igor over the specific song. The specific song name requires music-domain knowledge to derive from Kismet. - ex4 (Adam Guettel / Elena Shaddow / How Glory Goes): Elena Shaddow and How Glory Goes both correctly retrieved. But "Adam Guettel" (the songwriter born in 1964) never queried — the claim gives no name, only "A songwriter who was born in 1964." No hop extracts Guettel from the How Glory Goes article. Deep inference failure — requires reading the retrieved article to find Guettel's name.
- ex39 (Stranger in Paradise / Polovtsian Dances / Cór Cois Abhann): Cór Cois Abhann and Alexander Borodin correctly retrieved (hop1). Hop2 correctly covers all named claim entities and goes to Step 4, but queries
Net comparison vs iteration 12 child (8 failures):
- 1 new failure introduced: ex4 (Adam Guettel) — LM stochasticity, not a structural regression
- 1 fewer failure vs iter12: ex31 was in iter12 failures (Dinner Party) but with the new seed, ex11 (Dinner Party) is back in failures under a different mechanism (garbled claim resolution, not context-trimming gap)
- Other failures are essentially the same persistent categories: ColBERT gaps (F.E.A.R., Isatis), wrong entity chains (Charlotte Baldwin Allen, MacArthur's escape, Allan Goldstein), body-scan failures (Punchlines, Stranger in Paradise)
Key new observations from iter13 trace:
- Fruitless detection is blind to "wrong article" ColBERT failures: Querying
IsatisreturnsIsatis tinctoria(a genuine new doc), so Isatis is not marked fruitless. The mechanism only catches zero-result queries. For the Isatis-class failure (genus queried, species returned), the fix must be at the ColBERT level (disambiguation suffix likeIsatis (plant genus)) not at the fruitless detection level. The LM itself correctly identifies the gap ("not just a species") but cannot self-correct. - Retry fires correctly but can't fix ranking gaps: In ex46, the retry mechanism fires twice (hops 3 and 4) to prevent repeated
Isatisqueries, correctly redirecting toCrepisandBrassicaceae. The mechanism works as designed. The root problem is upstream in ColBERT's ranking, not in query selection. - Step 4 named-pattern improvements are real but context-dependent: "World Without Love" (song) and "Ishqbaaaz" (TV show) fixed confirm the patterns generalize. Punchlines still fails because the Paul Melba article body text contains multiple show mentions and the LM picks the wrong one (Val Doonican). The fix for Punchlines may require making Step 4 more specific about the claim relationship ("American version") as a filter.
- Claim-resolution failures are a distinct hard category: ex11 (Isabella → Sojourner Truth) and ex44 (Christian Poulsen called "Nigerian midfielder") represent claims where the entity name in the Wikipedia article differs fundamentally from the claim text. No prompt change can fix these without external knowledge.
- Step 4 PRIORITY rule does not reliably prevent descriptor-entity selection: ex39 shows the LM correctly goes to Step 4 but still picks
Prince Igor(the opera container) rather thanStranger in Paradise(the specific adapted song). The PRIORITY language ("NOT peripheral mentions like co-authors, technical subcomponents, or historical peoples mentioned only as descriptors") helps some cases but not this deep musical-adaptation chain.
Failure Pattern Distribution: Iteration 9 Child Trace (14 failures from 50)
Subsample score: 0.7171 (final re-eval) — approximately neutral vs parent 0.7370 (within ±3% noise).
-
Wrong entity chain / background-entity distractor (7/14):
- ex2 (Matthew Bailes): CAS article implicitly names Matthew Bailes as director, but LM queried Hawthorn, Victoria → Melbourne (geographic context) instead. Step 4 concurrent body scan did not extract Matthew Bailes from the CAS article as a query target.
- ex3 (Robinsons Galleria): Misleading claim ("Metro Manila is in Turkmenistan") distracted LM to Metro Manila → Turkmenistan. Robinsons Galleria (the shopping mall beside Galleria Corporate Center) never queried.
- ex20 (Apple Inc.): Claim explicitly identifies Apple Inc. as the company behind Welcome to Macintosh. LM retrieved the film correctly (hop 1) but then queried New York City → Insignia Films (geographic distractor). Apple Inc. — explicitly and unambiguously named in the claim — was never queried.
- ex25 (Airlines of Africa): Correct chain is Comair → Airlines of Africa (subsidiary). LM went KLM → British Airways → Air France–KLM. Never reached Airlines of Africa.
- ex37 (Bill Watts): Hops 1–2 wasted on Bobby Fulton → Scott Anton. Hop 3 correctly found Erik Watts. No hop left to query Bill Watts (his father, born May 5, 1939). 4-hop budget exhausted after early wrong turns.
- ex49 (Beyond Rangoon): Claim mentions "True Romance" and "Johnny Depp" as surface distractors. LM pursued Johnny Depp in hop 2. Beyond Rangoon (the 1995 film with Victor Slezak) never queried. The concurrent Step 4 body scan of the Victor Slezak article apparently did not surface Beyond Rangoon.
- ex32 (Rogue One / Felicity Jones): LM pursued Comedy of Errors → Oxford Dramatic Society → Teletubbies (completely wrong chain from hop 1). Neither Rogue One nor Felicity Jones queried. Rachelle Beinart article was retrieved but the LM did not derive the film from it.
-
Second-hop inference failure (4/14): LM retrieves the bridge article but fails to extract and query the next entity from it:
- ex15 (The Dinner Party): Barbe de Verrue and Sojourner Truth both retrieved, but "The Dinner Party" art installation never queried. Persistent across 5+ iterations (ex31 in iter4–8). The concurrent body-scan addition (iter9 Step 4 rewrite) did NOT fix this — the LM reads the bridge articles but does not extract the art installation name as a query target.
- ex19 (Renáta Tomanová): 1980 French Open – Mixed Doubles article was retrieved in hop 2. LM then queried Billy Martin instead of extracting Renáta Tomanová as the doubles partner from the article text.
- ex45 (Christian Poulsen): Pierre Womé and Denmark v Sweden (UEFA Euro 2008 qualifying) both retrieved. LM never derived Christian Poulsen from the qualifying match article. Complication: the claim calls Poulsen the "Nigerian midfielder" (he is Danish), so the LM was looking for a Nigerian player and couldn't identify Poulsen. Hop 3 repeated "Pierre Nlend Womé" — retry fired and returned same entity. Hop 4 queried "UEFA Euro 2008 qualifying Group F" (wrong). Christian Poulsen never queried.
- ex46 (On the Buses film / Pat Ashton): Harry Booth article retrieved in hop 1. LM should read it to find "On the Buses" as his 1971 film, then query that. Instead, LM directly queried "Thick as Thieves" (wrong path) and "Thick as Thieves (cooking show)" (wrong suffix). On the Buses film and Pat Ashton never queried.
-
ColBERT retrieval gap (1/14):
- ex9 (Air Lituanica): Air Lituanica IS queried correctly in hop 2. ColBERT returns "Lituanica", "Lituanica SAT-1", "London Lituanica" — not the Air Lituanica article. Persistent across multiple iterations. Possible fix: query "Air Lituanica airline" or "Air Lituanica Latvia."
-
Deep inference / completely wrong path from hop 1 (1/14):
- ex18 (Loha 1987 film): Chain requires film→star→maternal grandfather (Geoffrey Kendal). LM identified Dharmendra as Loha's star (wrong — star is Dimple Kapadia, whose father is Karan Kapoor). All 3 gold articles missed. No in-claim anchor for the star's identity.
-
Retry mechanism fires but fails (2/14):
- ex28 (Flex club): Hop 3 repeated "Ronnie Flex." Retry fired and still returned "Ronnie Flex" (no Wikipedia article exists under this name, LM has no alternative). "Flex (club)" in Vienna never queried.
- ex45 (Christian Poulsen): Retry fired for hop 3 (Pierre Womé repeat) and returned the same entity again. The misleading "Nigerian" label in the claim prevents the LM from finding the correct Danish player.
Retry mechanism statistics (iter9 child, 50 examples): Fired in 4 examples (ex28, ex39, ex40, ex45). ex39 and ex40 PASSED despite retry firing — the retry redirected to a new query that worked. ex28 and ex45 failed — retry returned same entity (no Wikipedia article / misleading claim). Overall: retry fires in 8% of examples (4/50), unlike the 46% in 5-hop iter8. At 4 hops, query repetition is rare and the retry rarely changes the outcome.
New key observations from iter9 trace:
- Concurrent body scan (Step 4) did NOT fix second-hop inference failures (4 of 14 persist). The issue is not scan timing but extraction quality — the LM reads the bridge article but then selects an unrelated entity as its query. A clearer action directive ("when Step 4 identifies an implied entity, OUTPUT THAT ENTITY AS YOUR QUERY in this hop") is needed.
- Explicitly-named entities still skipped (ex20 Apple Inc., ex3 Robinsons Galleria): Despite Step 2's coverage check, the LM pursues geographic/background entities while skipping clearly-referenced claim entities. Step 1's entity enumeration may be failing to include all claim entities before Step 2 checks coverage.
- PRIORITY RULE confirmed dangerous: The reflection identifies the PRIORITY RULE ("prefer implied over peripheral claim entities such as major cities...") as adding unpredictable ambiguity. Some gold articles ARE city/location articles; the LM may over-apply the heuristic and skip legitimate targets.
- ±3% stochasticity is the dominant confound: Round 1 eval #1 scored 0.7570, re-eval scored 0.7171. Changes below ~±5% cannot be reliably measured with a single subsample run. This is now a confirmed hard constraint for evaluation strategy.
Failure Pattern Distribution: Iteration 11 Child Trace (11 failures from 50)
Subsample score: 0.7769 (+2.6% vs parent 0.7570). Built on candidate 4 (4-hop, valset 0.7968). Accepted as candidate 6. Valset not yet evaluated.
-
Wrong entity at hop 1 / wrong person identified (1/11):
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): The claim says "star of the 1987 film Loha" — but the star is Karan Kapoor (not Dharmendra, who appeared in a different Loha). LM queried Dharmendra → Raj N. Sippy → Dharmendra Singh Deol. None of the 3 gold articles found. Persistent — was ex18 in iter9 trace. Pure first-hop disambiguation failure, not fixable by prompt alone without external disambiguation knowledge.
-
Partner/collaborator extraction from event article (2/11):
- ex38 (Renáta Tomanová / 1980 French Open Mixed Doubles): LM retrieved the mixed doubles article correctly in hop 2 but then queried Stanislav Birner instead of extracting Renáta Tomanová as the actual doubles partner. Persistent — same as ex19 in iter9 trace. The Step 4 examples added "doubles partner" but the LM still chose the wrong player from the article text.
- ex146 (Ellis Ferreira / 1997 Stockholm Open Doubles): LM retrieved the doubles article in hop 2 but queried Nicklas Kulti (one of the players) instead of Ellis Ferreira (Kulti's actual partner). Same failure pattern as ex38. Appears in iter8 trace as well. The LM consistently reads a 2-player event article and then queries one of the two players named in it, not the specific partner of the claim's subject.
-
Adaptation/derivative work not surfaced (1/11):
- ex129 (Stranger in Paradise / Polovtsian Dances): Hop 2 retrieved Alexander Borodin, hop 3 queried Kipchaks, hop 4 queried Cumans. No retrieved article bridges to "Stranger in Paradise (song)" — the famous Kismet adaptation of Polovtsian Dances. Persistent across iter6, iter7, iter8, iter11. Classic ColBERT bridge gap — the connection between Polovtsian Dances and Stranger in Paradise is not text-inferable from any retrieved passage in this index.
-
Explicitly-named entity in claim never queried (2/11):
- ex50 (Swoosh / Dan Wieden): Hop 3 DID query "Swoosh" but ColBERT returned near-misses rather than the Swoosh Wikipedia article. Hop 4 wasted on "Nike logo." Persistent ColBERT retrieval gap. The article title is "Swoosh" (no disambiguation suffix needed) but ColBERT ranks it poorly relative to Nike-related articles.
- ex95 (Felicity Jones / Rogue One): Hops 2+3 went to "The Comedy of Errors" and "Oxford University Dramatic Society." Hop 4 queried "Rogue One" (found). "Felicity Jones" — the actress explicitly implied — was never directly queried across all 4 hops. Persistent across iter4, iter5, iter6, iter7, iter8, iter9, iter11. The Step 4 "stunt performer film" example did not trigger the missing direct Felicity Jones query.
-
Phantom-entity guard insufficient — LM still chases sub-concepts (1/11):
- ex65 (Ancient Egyptian religion / Mehetweret / Damnation): Despite Round 2's phantom-entity guard ("skip descriptive phrases like feather of truth, lake of fire"), the LM still queried "Feather of truth" (hop 2), "Lake of fire" (hop 3), and "Weighing of the heart" (hop 4). Never queried "Ancient Egyptian religion." The guard instruction was directly violated — the LM invented these as "Step 1 entities" despite the guard. Persistent. Code-level enforcement (e.g., colbert zero-new-results → forced Step 4) is needed; prompt instruction alone is insufficient.
-
Abbreviation expansion failure (1/11):
- ex106 (Cork / National Maritime College of Ireland): Claim uses "NMIO" (slightly garbled abbreviation for NMCI). Hops went UCC → County Cork (found) → Cork College of Commerce. "National Maritime College of Ireland" never queried. The phantom guard correctly identified UCC/CoCC as real entities, but the garbled abbreviation left the LM unable to expand "NMIO" to its full Wikipedia title. Partial progress vs. parent (County Cork now found). Step 4 "broader topic article" hint partially helped.
-
Wrong disambiguation path for entity with multiple articles (2/11):
- ex85 (Flex club / High Contrast / Waves Vienna): Hops 2+4 both queried "Ronnie Flex" (the retry fired on hop 3 but returned the same entity). "Lincoln Barrett" (High Contrast's real name) was in previous_queries but never used as a Waves Vienna or Flex club clue. Persistent across iter4, iter5, iter6, iter7, iter8, iter11. The retry mechanism fires but produces no Wikipedia article under either name — the LM is stuck.
- ex133 (The Company / Ehrlichman novel): Hops queried "The Company" → "The Company (book)" → "John Ehrlichman." Never reached "The Company (Ehrlichman novel)" (the exact Wikipedia disambiguation suffix). Persistent across iter5, iter7, iter11.
-
Douglas MacArthur duplicate airport query (1/11):
- ex53: Hops 2 and 4 both targeted the airport using slightly different punctuation. "Douglas MacArthur's escape from the Philippines" and "Texas Raiders" never queried. Persistent across iter7, iter11. The retry mechanism did NOT fire here — the two airport variants ("Conroe North Houston Regional Airport" vs "Conroe-North Houston Regional Airport") are normalized as different queries by
_normalize_query, so no duplicate was detected. Fuzzy punctuation normalization would fix this.
- ex53: Hops 2 and 4 both targeted the airport using slightly different punctuation. "Douglas MacArthur's escape from the Philippines" and "Texas Raiders" never queried. Persistent across iter7, iter11. The retry mechanism did NOT fire here — the two airport variants ("Conroe North Houston Regional Airport" vs "Conroe-North Houston Regional Airport") are normalized as different queries by
Retry mechanism stats (iter11 child, 50 examples): Fired in 10 examples (ex22, 26, 51, 76, 84, 85, 93, 103, 110, 137). 9 passed. 1 failed (ex85 — Ronnie Flex/Flex club, no article under any queried name). Ex76 (Delmer Daves) confirmed direct fix by retry. Ex100 (20th Century Fox) fixed by phantom-entity guard in Round 2.
New observations from iter11 trace not in prior records:
- Partner extraction pattern (doubles/crew) is now confirmed as a recurring failure sub-type (2/11 in iter11: ex38, ex146). The LM reads a 2-person event article but queries one of the people listed rather than specifically targeting the PARTNER of the claim's subject. Adding an explicit Step 4 example: "If you retrieve an article naming [Claim Subject]'s partner/collaborator in an event (e.g., a doubles match), output that PARTNER as your query" may help.
- Retry fires in 20% of 4-hop examples (10/50) — much higher than prior estimate of 8% (from iter9, where only 4/50 triggered). The improvement is because iter11 is built on candidate 4, while iter9 was a different code path. The retry is net-positive and functioning as designed.
- em-dash / hyphen normalization gap: ex53 Airport query repeated because "Conroe North Houston Regional Airport" (no hyphen) and "Conroe-North Houston Regional Airport" (with hyphen) are treated as different queries despite representing the same entity.
_normalize_querydoes not strip/normalize dash variants. Easy fix: normalize hyphens/em-dashes to spaces in the query comparison.
Failure Pattern Distribution: Iteration 10 Child Trace (15 failures from 50)
Subsample score: 0.6958 — a −5.4% regression vs parent (candidate 5, 0.7356). 4 NEW failures introduced vs candidate 5's 11. Built on candidate 5 (5-hop, valset 0.7554).
All 11 candidate 5 parent failures persisted (ex0/Matthew Bailes, ex5/Robert E. Howard, ex18/Guy Davis, ex21/F.E.A.R., ex22/Ancient Egyptian religion, ex23/Jay T. Wright, ex24/Airlines of Africa, ex28/Moonrunners, ex30/Flex club, ex34/Gene Kelly, ex38/Asymptotic safety). 4 new regressions introduced:
New regressions introduced by iter10 changes:
- ex35 (id=98) — Queens borough: The aggressive "IMMEDIATELY" Step 4 directive caused the LM to trigger Step 4 prematurely when reading Flushing Meadows–Corona Park articles. Instead of recognizing "Queens" as the missing borough entity from Step 3 (claim enumerates Queens implicitly), the LM pursued census sub-concepts: Flushing Meadows–Corona Park → American Community Survey → U.S. Census Bureau → Population estimate. Queens never queried. This is the direct mirror of the iter5 PRIORITY RULE regression — same mechanism, same failure type. Partially confirmed: removing "IMMEDIATELY" in Round 2 did NOT fix ex35 (other aspects of the directive still triggered premature Step 4).
- ex42 (id=117) — The Secret Agent (TV) / This Is England: Hop 1 retrieved The Secret Agent (1996 film, Bob Hoskins) instead of The Secret Agent (TV series, Stephen Graham). Hops 2-5 followed the wrong disambiguation path: Shane Meadows → Bob Hoskins → Patricia Arquette → Dead Man's Shoes. All 3 gold articles (Secret Agent TV series, Stephen Graham, This Is England) missed. This was likely a regression caused by the changed previous_queries tracking interacting with the disambiguation resolution.
- Two additional hidden regressions in examples 108–147 (identified as ex44/Christian Poulsen id=123, ex45/On the Buses id=126 based on trace data): ex44 — LM followed the misleading "Nigerian midfielder" label to Obafemi Martins; ex45 — Harry Booth article retrieved but LM went to Harry Booth filmography and Go for a Take instead of On the Buses film.
Persistent failure categories (from the 11 carried-over parent failures):
- Second-hop inference failure (4/15): LM retrieves bridge article but fails to extract correct implied entity: ex0 (Matthew Bailes not extracted from CAS article → went to Melbourne geographic chain), ex24 (Airlines of Africa not extracted from Comair article → went to British Airways), ex28 (Moonrunners not extracted from James Mitchum article → went to Dukes of Hazzard/Uncle Jesse variants), ex45 (On the Buses not extracted from Harry Booth article → went to Harry Booth filmography).
- Explicitly-named entity in claim never queried (3/15): ex5 (Robert E. Howard — comparison entity in claim skipped; LM went Frank Bascombe → Hurricane Sandy), ex28 (Moonrunners — "1975 film" explicitly referenced in claim; query never issued), ex38 (Asymptotic safety in quantum gravity — explicitly named concept in claim; LM went Nobel Prize in Physics → Steven Weinberg → University of Texas).
- Sub-concept drill-down instead of parent article (2/15): ex22 (Ancient Egyptian religion — LM drills into Weighing of the Heart, Feather of Ma'at, Lake of fire, Book of the Dead but never queries the parent religion article), ex35 (Queens — LM queries census sub-concepts instead of the borough itself).
- Hallucination / wrong disambiguation (2/15): ex34 (Bob Fosse identified as 1912 choreographer instead of Gene Kelly — persistent), ex42 (The Secret Agent 1996 film instead of TV series).
- ColBERT entity name mismatch (2/15): ex21 (F.E.A.R. queried as hop 4 but article not returned in top-7), ex23 (Jay T. Wright queried but article missing).
- Misleading claim entity (1/15): ex44 (Christian Poulsen called "Nigerian midfielder" → LM finds Obafemi Martins instead).
- Entity has no Wikipedia article / retry loops (1/15): ex30 (Flex club never queried; Lincoln Barrett repeated twice via retry; Waves Vienna found but Flex club itself missed).
New structural insight from iter10 trace:
- Step 1 entity enumeration for abstract concept articles: ex38 (Asymptotic safety in quantum gravity) shows the LM never enumerated the concept as a required article in Step 1. Step 1's entity-type list ("people, places, organizations, works, songs, films, awards, titles") does NOT include abstract scientific concepts or theory names. These should be added explicitly — e.g., "theories, concepts, mathematical models, scientific proposals" — so the LM enumerates them as required article targets.
- Step 4 directive strength must remain moderate: "OUTPUT THAT IMPLIED ENTITY AS YOUR QUERY IMMEDIATELY" is equivalent to the PRIORITY RULE in danger level. Any superlative/imperative language in Step 4 that overrides Step 3 causes wrong-path premature triggering. The correct framing is softly advisory — "the most important such implied entity, if it directly advances the claim chain."
Failure Pattern Distribution: Iteration 21 Child Trace (8 failures from 50)
Subsample score: 0.8352 (+5.0% vs parent 0.7954). Built on candidate 13 (iter20). Accepted as candidate 14. Valset: 0.8748 (NEW BEST, +3.5% relative vs prior best 0.8551). Changes: Step 3 CRITICAL type-qualifier rule with bad→good example + three new Step 4 body-scan bullets (parent company, town/location-of, event venue).
-
Intermediate article skipped in ownership chain (1/8):
- ex32 (Darkened Skye / Mars, Incorporated / Skittles confectionery): Mars, Incorporated found (parent company bullet worked). Darkened Skye found in hop1. Skittles (confectionery) never queried. The chain requires querying the CANDY first (Skittles), then the manufacturer (Mars). The new parent company bullet caused the LM to jump directly to Mars Inc., skipping the intermediate Skittles article. New partial failure category: the parent company bullet may cause the LM to shortcut a required intermediate entity in ownership chains.
-
Wrong entity chain / second-hop bridge failure (2/8):
- ex56 (Guy Davis comics / Crimson Peak / Burn Gorman): Burn Gorman and Crimson Peak found. Hops followed Guillermo del Toro → Pacific Rim chain; Guy Davis (comics, production designer for Crimson Peak) never queried. Persistent across 10+ iterations.
- ex71 (Airlines of Africa / British Airways franchise destinations / Comair South Africa): Comair (South Africa) found. Hops followed KLM → British Airways chain; Airlines of Africa (Comair subsidiary) never queried. Persistent across 10+ iterations.
-
Phantom entity loop — claim sub-concepts queried, parent article never reached (1/8):
- ex65 (Ancient Egyptian religion / Damnation / Mehetweret): Only 4 searches fired. Mehetweret and Damnation retrieved. The claim mentions "feather of truth" and "lake of fire" — the LM queried these phantom sub-concepts instead of the parent "Ancient Egyptian religion" article. The phantom-entity guard (in place since iter11) failed to prevent this. Persistent across 10+ iterations. Prompt guard is insufficient; code-level enforcement needed.
-
Fruitless loop — entity name has no Wikipedia article (1/8):
- ex85 (Flex club / High Contrast / Waves Vienna): High Contrast and Waves Vienna found. LM looped on "Ronnie Flex" / "Lincoln Barrett" variants (retry mechanism fired but LM returned same entity or repeated). "Flex (club)" in Vienna never queried. The venue extraction bullet did NOT fire because the Waves Vienna article was never retrieved early enough for a body scan. Persistent across 10+ iterations.
-
LM hallucination — wrong entity identified from claim (1/8):
- ex97 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): LM identified Bob Fosse (born 1927) as the "choreographer born in 1912" instead of Gene Kelly (born 1912). All hops followed Fosse's collaborators. Gene Kelly and Best Foot Forward never queried. Persistent hallucination across 16+ iterations — unfixable by prompt alone. Only 4 searches used (18 docs retrieved — probable slot-fill gap as well).
-
Bridge article retrieved but leaf entities not derived (1/8):
- ex126 (On the Buses film / Pat Ashton / Thick as Thieves TV series): Harry Booth article presumably retrieved. LM fixated on "Thick as Thieves" from the claim; On the Buses (film) and Pat Ashton never queried. Persistent across 10+ iterations.
-
Stochastic regression (1/8):
- ex82 (Moonrunners / Dukes of Hazzard / Briscoe Darling Jr.): Parent (iter20 seed) passed. Child failed because the LM fell into Uncle Jesse disambiguation rabbit hole (hops 3-5) rather than following James Mitchum → Moonrunners chain. Context at hop2 is IDENTICAL between parent and child; divergence at hop3 is pure LM stochasticity. Not caused by iter21 changes.
Confirmed fixes vs parent (candidate 13, different seed):
- ex63 (F.E.A.R. video game): 0.0 → 0.994. The CRITICAL type-qualifier enforcement caused the LM to query "F.E.A.R. (video game)" instead of bare "F.E.A.R." Correct article retrieved. Structural fix — generalizes to any claim that states the media type explicitly.
- ex120 (Afonwen): 0.0 → 0.994. The location-of bullet caused the LM to extract "Afonwen" from the Caerwys railway station article ("located in Afonwen") and query it in hop5. Structural fix — generalizes to any station/airport/building article that states its location.
Key new observations from iteration 21:
- Valset confirmation (+3.5% relative, 0.8551→0.8748): A strong generalization signal. The type-qualifier enforcement is a broad pattern that likely fixed multiple valset examples beyond F.E.A.R. The location-of and parent company bullets contribute additional fixes. This is the single largest valset improvement since iter18.
- Parent company bullet introduces ordering risk: The new bullet guides the LM toward the manufacturer/owner, but in ownership chains where the PRODUCT is also a required article (Darkened Skye → Skittles → Mars), the LM shortcuts to Mars and skips Skittles. The bullet should specify: "when the product's OWN article is not yet retrieved, query the product FIRST; only output the parent company when the product article is already in
retrieved_docs." This is a correctable prompt fix. - Type-qualifier enforcement (Step 3 CRITICAL) is the biggest win of iter21: The CRITICAL flag + explicit bad→good example drove genuine LM compliance where the previous softer guidance (~6/250 uptake) had failed. This suggests that strong directive framing (CRITICAL, explicit negative example) is effective for TYPE/MEDIA disambiguation, unlike for entity selection (where strong framing causes dangerous over-triggering).
- 8 failures vs prior traces: Ex82 is stochastic regression (would pass on most seeds). The remaining 7 are all persistent structural failures. No new structural failures introduced.
- Hop5 fire rate: Not separately measured for this seed, but based on 8 failures all using 5 searches (except ex65 with 4, ex97 with 4), fire rate is approximately 46/50 (~92%), consistent with prior estimates.
Failure Pattern Distribution: Iteration 22 Child Trace (11 failures from 50)
Subsample score: 0.7755 (−7.2% vs parent 0.8350). Built on candidate 9 (iter14, k=7 uniform). Rejected. Valset N/A. Note: this iteration was built on candidate 9 (not the best candidate 14). Two rounds: Round 1 reranker (−7.2% regression, reverted), Round 2 prompt-only cherry-pick from iter18-21 onto k=7 base (same score). The parent (candidate 9) baseline of 0.8350 passes ex31 (Sojourner Truth) as 0.994; the child regressed it to 0.0 due to Step 2 sub-article false-coverage wording interaction with k=7 context.
-
Wrong entity chain / second-hop bridge failure (3/11):
- ex3 (Matthew Bailes / Houman Younessi / Swinburne): CAS article in hop1. Hops followed geographic distractors (Melbourne, Hawthorn, Swinburne). Matthew Bailes (CAS director) never queried. Persistent across 16+ iterations.
- ex7 (Allan Goldstein / Charles Bronson / Violent Restitution): Charles Bronson hop1, then Leslie Nielsen → Naked Gun chain. Allan Goldstein never queried. Persistent across 16+ iterations.
- ex71 (Airlines of Africa / Comair / British Airways): Comair found, then KLM → British Airways chain; Airlines of Africa (Comair subsidiary) never queried. Persistent across 10+ iterations.
-
Broad-topic-chain failure — specific entity inferrable from description but never queried directly (1/11):
- ex18 (Heathrow Airport / Gatwick Airport / Coldwaltham): Query chain: raw claim → "London" → "List of busiest airports in the United Kingdom" → "United Kingdom" → "Busiest airports in the United Kingdom". Heathrow Airport and Gatwick Airport were NEVER directly queried — the LM pursued list/category articles instead of resolving the description "busiest airport outside London" to a specific entity name. Neither airport found. Likely new to this subsample seed; may appear in valset.
-
Regression caused by porting prompt improvements to wrong architecture (1/11):
- ex31 (The Dinner Party artwork / Sojourner Truth / Barbe de Verrue): Parent (candidate 9) passed with 0.994 (Sojourner Truth found). Child regressed to 0.0. The Round 2 sub-article false-coverage wording from iter18-21 — designed for asymmetric-k — interacted badly with the k=7 context window, causing the LM to either miscategorize some title as covered or fail to query Sojourner Truth. Query chain shows hop4 DID query "Sojourner Truth" but it was in
seen_titles(k=7 for hop1 puts rank-7 docs into seen_titles). This failure mode confirms that iter18-21 prompt improvements are coupled to the asymmetric-k architecture.
- ex31 (The Dinner Party artwork / Sojourner Truth / Barbe de Verrue): Parent (candidate 9) passed with 0.994 (Sojourner Truth found). Child regressed to 0.0. The Round 2 sub-article false-coverage wording from iter18-21 — designed for asymmetric-k — interacted badly with the k=7 context window, causing the LM to either miscategorize some title as covered or fail to query Sojourner Truth. Query chain shows hop4 DID query "Sojourner Truth" but it was in
-
ColBERT loop — wrong disambiguation path from hop1 (2/11):
- ex53 (Douglas MacArthur's escape / Boeing B-17 / Texas Raiders): Boeing B-17 found; hops went to Conroe airport variants + generic MacArthur biography. "Douglas MacArthur's escape from the Philippines" and "Texas Raiders" never queried. Persistent across 10+ iterations.
- ex117 (Secret Agent TV series / Stephen Graham / This Is England): Hop1 retrieved 1996 film instead of TV series. Wrong chain throughout. Persistent across 10+ iterations.
-
Multi-hop band-member chain without multi-membership bullet (1/11):
- ex58 (Glenn Hughes / Dave Evans / From Now On): Hop chain: claim → Dave Evans → Deep Purple → Black Sabbath → Trapeze. Each band queried individually; Glenn Hughes (the person connecting all three bands) never directly queried. The multi-membership bullet (added in iter19 for candidate 14's architecture) is NOT present in candidate 9, so this failure is expected. Would be fixed by the multi-membership bullet that already exists in candidate 14.
-
Phantom entity loop — claim sub-concepts queried instead of parent article (1/11):
- ex65 (Ancient Egyptian religion / Damnation / Mehetweret): Only 4 hops used (hop5 didn't fire). LM queried "feather of truth" and "lake of fire" sub-concepts instead of "Ancient Egyptian religion." Persistent across 10+ iterations. Prompt guard is insufficient; code-level enforcement needed.
-
Fruitless loop — entity has no Wikipedia article (1/11):
- ex92 (Green Chair / Shim Ji-ho / Suh Jung): LM anchored on "2005 Sundance Film Festival" across all hops despite retry mechanism. Shim Ji-ho never queried. Persistent Sundance anchor failure across 10+ iterations.
-
Film→performer extraction too late — film only in hop5 (1/11):
- ex95 (Felicity Jones / Rachelle Beinart / Rogue One): Chain: claim → Oxford University Dramatic Society → The Comedy of Errors → Shakespeare → Rogue One. Rogue One only retrieved in hop5 (the LAST hop). The film→performer Step 4 bullet (Round 1) was supposed to extract Felicity Jones from the Rogue One article, but since Rogue One is in hop5, there is no hop6 to query Felicity Jones. Timing-dependent failure: the bullet only helps when the film is retrieved in hops 1-4. The fix for ex95 class requires the film being retrieved earlier.
-
Partner extraction — wrong person identified from event article (1/11):
- ex146 (Ellis Ferreira / Boris Becker / 1997 Stockholm Open): Boris Becker and event article correctly retrieved; Ellis Ferreira (Becker's doubles partner) never queried. Persistent across 10+ iterations.
Key new observations from iteration 22:
- LM reranker (gpt-5.4-nano, low reasoning effort) fails at precise index selection: The model cannot reliably output 21 correct 1-based indices from a 25-30 item list. It hallucinates, drops valid indices, or generates ill-formed outputs. This is a fundamental capability mismatch — not a prompt design flaw. A conservative reranker (only last 2-3 slots, or a simpler scoring heuristic) would avoid this problem.
- Prompt improvements from candidate 14's asymmetric-k architecture cannot be ported to candidate 9's k=7 architecture: The two architectures have different context windows (hop1[:6] vs hop1[:7] in seen_titles), and the sub-article false-coverage prompt was designed for the asymmetric-k context. Porting causes cross-architecture regressions.
- Film→performer bullet is timing-dependent: The bullet fires correctly when the film is retrieved in an early hop (leaving a subsequent hop to query the person). When the film is only in hop5, the bullet is inert. To fix the ex95 Felicity Jones class, the film article must reach an early hop — which requires better entity identification from the claim text (Rachelle Beinart → stunt work → Rogue One in an early hop).
- Broad-topic-chain failure (ex18 Heathrow) is new: The LM queried "London" and "List of busiest airports in UK" instead of resolving the claim description to "Heathrow Airport" directly. This is a Step 1/3 enumeration gap — the LM should identify "the busiest airport outside London" as a named entity to query directly (Heathrow Airport), not pursue category articles. May be fixable by Step 1 extension: "entities described by a unique role or superlative in the claim (e.g., 'the busiest airport outside X') should be identified by their specific name."
- Hop5 fire rate: 43/50 (86%) — consistent with prior iter16-21 estimates (86-96%). The conditional hop5 is nearly unconditional in practice.
- Current best valset is unchanged at 0.8748 (candidate 14, iter21). Candidate 14 built on asymmetric-k + all iter18-21 improvements. Next iterations MUST build on candidate 14.
Failure Pattern Distribution: Iteration 23 Child Trace (9 zero-score examples from 50)
Subsample score: 0.8152 (+2.5% vs parent 0.7954). Built on candidate 14 (iter21). Accepted as candidate 15. Valset: 0.8550 (−2.3% vs best 0.8748 from candidate 14). Prompt-only changes: CREATOR, HOST/CAST MEMBER, CO-FOUNDER, COMPARISON/RANKING Step 4 bullets + parent company ORDERING RULE. Confirmed fixes: ex12 (Adam Guettel — CREATOR bullet), ex18 (Heathrow Airport — COMPARISON/RANKING bullet). Stochastic regression: ex63 (F.E.A.R. — LM issued bare query, pure LM variance).
-
Wrong entity chain / inference failure (2/9):
- ex56 (Guy Davis comics / Crimson Peak / Burn Gorman): Burn Gorman and Crimson Peak found. Hops followed Guillermo del Toro → Pacific Rim chain; Guy Davis (production designer, comics) never queried. Persistent across 10+ iterations.
- ex97 (Gene Kelly / Best Foot Forward / Liza Minnelli discography): LM hallucinated Bob Fosse (born 1927) as the "choreographer born in 1912" instead of Gene Kelly (born 1912). All hops pursued Fosse's collaborators. Gene Kelly and Best Foot Forward never queried. Persistent hallucination across 17+ iterations — unfixable by prompt alone.
-
Bridge article retrieved but leaf entity not extracted (4/9):
- ex114 (Charlotte Baldwin Allen / History of Texas / George Ruby): George Ruby and History of Texas found. Augustus Chapman Allen retrieved. CO-FOUNDER bullet did NOT fire — Charlotte Baldwin Allen never queried. The August Chapman Allen article may not prominently name Charlotte, or the LM didn't apply the bullet. Persistent across 18+ iterations.
- ex126 (On the Buses film / Pat Ashton / Thick as Thieves TV series): Thick as Thieves TV series WAS retrieved (confirmed in retrieved titles). HOST/CAST MEMBER bullet did NOT fire — Pat Ashton not extracted from the show article. On the Buses film never queried. LM remained fixated on Harry Booth filmography/disambiguation instead of extracting the star. Persistent across 10+ iterations.
- ex129 (Stranger in Paradise / Cór Cois Abhann / Polovtsian Dances): Cór Cois Abhann and Polovtsian Dances found. Kismet (musical) IS in retrieved titles (confirming the bridge is reached). But "Stranger in Paradise (song)" never extracted from Kismet article — LM pursued Borodin → Kipchaks → Prince Igor chain. Neither the named-song bullet (iter13) nor CREATOR bullet triggered. Persistent across 10+ iterations. Deep song-adaptation extraction failure.
- ex92 (Shim Ji-ho / Suh Jung / Green Chair): Green Chair and Suh Jung found. Only 4 searches used (hop5 didn't fire — LM declared all claim entities covered). Shim Ji-ho (co-lead actor) never queried. The LM retrieved Park Chul-soo (director) but not the actor. Persistent Sundance-anchor/actor-extraction failure across 10+ iterations.
-
Fruitless loop / entity has no Wikipedia article (2/9):
- ex85 (Flex club / High Contrast / Waves Vienna): High Contrast and Waves Vienna found. Only 4 searches used (hop5 didn't fire — LM declared all entities covered). Flex (club) never queried. LM retrieved Waves Vienna and High Contrast but did NOT fire a search for the nightclub. Persistent across 10+ iterations.
- ex38 (Renáta Tomanová / 1980 French Open Mixed Doubles / Larisa Neiland): 1980 French Open Mixed Doubles and Larisa Neiland found. Renáta Tomanová never queried. False-premise partner claim (Boris Diaw is an NBA player with no tennis history) continues to confuse the LM. Persistent false-premise failure across 8+ iterations.
-
ColBERT ranking gap + LM stochastic non-compliance (1/9):
- ex63 (F.E.A.R. / Alma Wade / SAS: Secure Tomorrow): Alma Wade and SAS: Secure Tomorrow found. LM issued bare "F.E.A.R." (without CRITICAL type-qualifier "(video game)") at hop2, wasting a hop on series/disambiguation variants. Then all 21 slots filled before correct article retrieved. The CRITICAL TYPE QUALIFIER RULE was not followed on this seed. Stochastic non-compliance — same pattern fixed in iter21 subsample, regressed here. Confirms that CRITICAL directive has ~85% compliance, not 100%.
Confirmed fixes vs parent (candidate 14, different seed):
- ex12 (Adam Guettel / Elena Shaddow / How Glory Goes): CREATOR bullet directed the LM to extract Adam Guettel as composer from Elena Shaddow's retrieved article (previously the LM fixated on "Best Score and Best Orchestrations" Tony Award category name). Structural fix, generalizable to any claim about a performer whose retrieved article names a specific composer/playwright/creator.
- ex18 (Heathrow Airport / Gatwick Airport / Coldwaltham): COMPARISON/RANKING bullet directed the LM to query "Heathrow Airport" after the Gatwick Airport article named it as the UK's busiest. Previously the LM pursued list/category articles. Structural fix, generalizable to any claim involving a ranked entity explicitly named in a retrieved article.
Key new observations from iteration 23:
- CREATOR and COMPARISON/RANKING bullets confirm the "named entity in retrieved body text" pattern is the most reliable source of new improvements: Both bullets target explicit text in retrieved Wikipedia articles (composer credit in performer article; ranked comparison in venue article). Both produced structural fixes. The pattern: if Wikipedia consistently names X in a retrieved article about Y, a Step 4 bullet for that class will reliably fire and generalize.
- HOST/CAST MEMBER and CO-FOUNDER bullets may require stronger article-text evidence than was assumed: Thick as Thieves TV series was retrieved but Pat Ashton not extracted; Augustus Chapman Allen was retrieved but Charlotte Baldwin Allen not extracted. The targeted entities may not appear prominently enough in the article text snippets that the LM sees. Future bullets should target entity types that Wikipedia CONSISTENTLY and PROMINENTLY names in the article's opening paragraph (where ColBERT's snippet is most likely to include it), not just somewhere in the article body.
- Valset regression risk from new Step 4 bullets: The −2.3% valset regression after adding 4 new bullets (subsample +2.5%) is a warning sign. Adding many body-scan bullets increases the probability that the LM applies some bullet spuriously when the bridge article doesn't actually name the target entity — wasting a hop and potentially filling the 21-doc budget before finding the true gap. Consider: when adding multiple new bullets in one change, the cumulative over-triggering risk grows.
- ex129 (Stranger in Paradise) — actionable insight: Kismet IS in the retrieved docs. The issue is that "Stranger in Paradise" is a SONG TITLE adapted from Borodin's work, and the LM doesn't extract a song name from a musical article via the CREATOR bullet (which targets creator PEOPLE, not song titles). The existing named-song bullet should handle this but doesn't. May need a more explicit "specific song/piece from a musical article" bullet with a concrete example (e.g., "if a retrieved musical article names a specific song that appears in the claim, query that song's article directly").
- Hop5 fire rate: ~84% (42/50 examples used 5 searches). Down slightly from iter21's estimated ~92%. Still near-universal.
Failure Pattern Distribution: Iteration 24 Child Trace (6 failures from 50)
Subsample score: 0.8748 (−0.0002 vs parent 0.8750, neutral). Built on candidate 14 (iter21, best valset 0.8748). Rejected. Valset: N/A (subsample not above parent threshold). Changes: full legal name variant coverage fix in Step 2 + CREATOR bullet + COMPARISON/RANKING bullet + parent company ORDERING RULE (latter three already in candidate 15 / iter23). Hop5 fire rate: 95.5% (42/44 passing examples). Score distribution: 2 × 0.996 (4-hop, ex10/ex18), 42 × 0.994 (5-hop), 6 × 0.0 (failure).
-
Wrong entity chain / geographic distractor (2/6):
- ex000 (Matthew Bailes / Houman Younessi / Swinburne): CAS and Houman Younessi correctly retrieved. LM declared all claim entities covered after retrieving the CAS article, then used remaining hops for geographic distractors (Melbourne, Swinburne context). Matthew Bailes (CAS director, presumably named in the CAS article) never queried. LM went through Melbourne → Swinburne sequence. Persistent across 20+ iterations — deepest unresolved failure.
- ex002 (Allan Goldstein / Charles Bronson / Violent Restitution): Charles Bronson correctly retrieved in hop1. LM followed Leslie Nielsen → Naked Gun chain; Allan Goldstein (director) never queried. Persistent across 15+ iterations.
-
Defunct entity never inferred / wrong DEFUNCT trigger (1/6):
- ex007 (Air Lituanica / AirBaltic / Vilnius Airport): Vilnius Airport and AirBaltic retrieved. The DEFUNCT ENTITY rule fired — but for "Estonian Air" (mentioned in the Tallinn Airport excerpt as also ceasing in 2015) rather than "Air Lituanica." LM queried Estonian Air instead of Air Lituanica. New wrinkle on a persistent failure: the DEFUNCT ENTITY rule is triggering on the wrong defunct airline. Air Lituanica never queried. Persistent across 15+ iterations.
-
Wrong person identified / first-hop disambiguation failure (1/6):
- ex014 (Karan Kapoor / Geoffrey Kendal / Loha 1987 film): LM identified Dharmendra as the star of Loha instead of Karan Kapoor. Both Karan Kapoor and Geoffrey Kendal (his maternal grandfather) missed. Persistent across 15+ iterations — requires external Bollywood film knowledge.
-
Second-hop inference gap — explicitly named entity never queried (1/6):
- ex015 (Apple Inc. / Welcome to Macintosh film / Vertex Pharmaceuticals): Welcome to Macintosh correctly retrieved. LM pursued "company that made the documentary" → Insignia Films (production company) rather than Apple Inc. (the documentary's subject and the entity implicitly required by the claim). Stochastic regression from parent — the ORDERING RULE applied to parent company bullet may have affected the chain, but root cause is claim ambiguity ("the company that made the documentary" is genuinely ambiguous between Insignia Films vs Apple Inc.).
-
LM hallucination — wrong entity from claim context (1/6):
- ex035 (Gene Kelly / Best Foot Forward musical / Liza Minnelli discography): LM identified Bob Fosse (born 1927) as the "choreographer born in 1912" instead of Gene Kelly (born 1912). All 5 hops followed Fosse's collaborators (Fosse → "Liza with a 'Z'" → Cabaret etc.). Gene Kelly and Best Foot Forward never queried. Persistent hallucination across 20+ iterations — confirmed unfixable by prompt alone. The LM's strong Fosse-Minnelli prior overrides the birth year clue.
Confirmed structural fix vs parent:
- ex146 (Ellis Ferreira / Boris Becker / 1997 Stockholm Open Doubles): 0.0 → 0.994. Full-name variant rule prevented wasted hop4 re-query of "Boris Franz Becker" (already covered by "Boris Becker"). LM directly queried Ellis Ferreira in hop4. Mechanistic, structural, confirmed generalizable — applies to any Wikipedia entity commonly known by a shorter name but cited in claims with a formal longer name.
Stochastic regression vs parent:
- ex020 (Air Lituanica): Air Lituanica was NOT a failure in the parent subsample seed. Regressed because the Tallinn Airport ColBERT excerpt mentioned "Estonian Air" as defunct in 2015, triggering the DEFUNCT ENTITY rule on the wrong entity. Pure excerpt-level retrieval gap — not caused by iter24 changes. The DEFUNCT ENTITY rule is firing correctly (there IS a defunct entity named in a retrieved article) but on the wrong one.
- ex041 (Apple Inc.): Stochastic claim-ambiguity regression — parent passed because the LM happened to query Apple Inc. directly; child latched onto Insignia Films. Not caused by new bullets.
Soft regressions (penalty increases: 4-hop → 5-hop):
- 5 examples (ex17, ex45, ex48, ex72, ex111) shifted from 0.996 (4 searches) to 0.994 (5 searches). These were previously complete in 4 hops but the CREATOR/COMPARISON/RANKING bullets surfaced extra entities that triggered hop5. Each costs 0.002. Cumulative signal: new Step 4 bullets are over-triggering in ~10% of passing examples.
Key new observations from iteration 24:
- Full legal name variant coverage fix is the most reliable structural gain: The Boris Becker/Boris Franz Becker fix (ex146) is a mechanistic fix for a real, recurring pattern. Claims in the HoVer dataset often use full formal names (middle names, patronymics) while Wikipedia articles use common-name titles. The LM was previously re-querying the formal name even when the common-name article was already retrieved. This fix should generalize to any entity where the claim uses a longer formal name than the Wikipedia title.
- Hop5 fire rate reached a new high: 95.5%: The highest measured rate across all iterations. Previously estimated at 80-96% depending on seed; this seed confirms the upper end. Almost all examples pay the 0.002 hop5 penalty. The tightening of the hop5 firing condition remains the highest-impact untested structural refinement.
- DEFUNCT ENTITY rule has a new failure mode: When the claim involves a defunct entity at location X, and the retrieved article about location X mentions a DIFFERENT defunct entity, the DEFUNCT ENTITY rule fires on the wrong entity. This is a new wrinkle on the Air Lituanica failure — the rule itself is sound, but article text may mention multiple defunct entities.
- The iter24 change set is essentially the same as candidate 15 (iter23) plus the full-name variant fix: Both iter23 and iter24 add CREATOR + COMPARISON/RANKING + ORDERING RULE to candidate 14. The key difference is iter24 also adds the full-name variant fix. The valset for iter23 (0.8550) likely represents the valset outcome for iter24 absent the full-name fix effect. If the full-name fix adds ~+0.002-0.005 valset improvement, iter24's expected valset would be 0.857-0.860 — still below best (0.8748).
- Over-triggering cost of CREATOR+COMPARISON bullets confirmed: 5 soft regressions (previously 4-hop, now 5-hop) = 5 × 0.002 = 0.010 cumulative score cost on 50 examples. At 0.010/50 = 0.0002 avg, this partially offsets the structural fixes. On the full valset this cost would scale proportionally.
Failure Pattern Distribution: Iteration 25 Child Trace (5 failures from 50)
Subsample score: 0.8951 (+7.2% vs parent 0.8352). Built on candidate 14 (iter21, best valset 0.8748). Accepted as candidate 16. Valset: 0.8252 (REGRESSION — −5.7% relative vs best 0.8748). Changes: formal-name variant fix in Step 2 (from iter24) + CRITICAL PERSON COVERAGE RULE in Step 2 + COMPARISON/RANKING Step 4 bullet. Hop5 fire rate: 76% (38/50 used 5 searches) — lowest measured rate. Score distribution: 12 × 0.996 (4-hop), 33 × 0.994 (5-hop), 5 × 0.0 (failure).
-
Broad-topic-chain failure — busiest airport description never resolved to named entity (1/5):
- ex18 (Heathrow Airport / Gatwick Airport / Coldwaltham): Queries: "London" → "Gatwick Airport" → "List of the busiest airports in the United Kingdom" → "United Kingdom". Gatwick WAS retrieved in hop2, but the COMPARISON/RANKING bullet never fired from the Gatwick article body to extract "Heathrow Airport." The LM issued broad-topic queries in Steps 1-3, exhausting the hop budget before reaching Step 4 body-scan. Persistent across 5+ iterations. The bullet is in place but the LM issues list/geo queries first, leaving no hop for body-scan extraction.
-
Wrong person identified / first-hop disambiguation failure (1/5):
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Queries: "Loha (1987 film)" → "Dharmendra" → "Raj N. Sippy" → "Dharmendra" → "Shatrughan Sinha". The LM identifies Dharmendra (not Karan Kapoor) as Loha's star. Both Karan Kapoor and Geoffrey Kendal missed. Persistent across 20+ iterations — requires external Bollywood knowledge.
-
Phantom entity loop — claim sub-concepts queried, parent article never reached (1/5):
- ex65 (Ancient Egyptian religion / Damnation / Mehetweret): Queries: "Weighing of the Heart" → "Feather of truth" → "Weighing of the Heart" → "Lake of fire" → "Book of the Dead". Only 5 searches used. The LM queried phantom sub-concepts despite the phantom-entity guard. "Ancient Egyptian religion" never queried. Persistent across 10+ iterations. Prompt guard is insufficient; code-level enforcement needed.
-
Wrong disambiguation at hop1 / wrong article chain (1/5):
- ex117 (Secret Agent TV series / Stephen Graham / This Is England): Queries: "Shane Meadows" → "Bob Hoskins" → "A Room for Romeo Brass" → "Patricia Arquette". Hop1 retrieved the 1996 film instead of the TV series. All hops followed wrong path. None of the 3 gold articles found. Persistent across 15+ iterations.
-
Bridge article retrieved but specific song adaptation not extracted (1/5):
- ex129 (Stranger in Paradise / Cór Cois Abhann / Polovtsian Dances): Queries: "Alexander Borodin" → "Kipchaks" → "Cumans" → "Prince Igor". Cór Cois Abhann and Polovtsian Dances found. Kismet (musical) IS in retrieved docs but "Stranger in Paradise (song)" never extracted. Persistent across 15+ iterations.
Confirmed fixes vs parent (candidate 14, different seed):
- ex13 (Lavinia Greenlaw / UEA Creative Writing Course): CRITICAL PERSON COVERAGE RULE drove systematic disambiguation-qualified querying: "Andrew Cowan (writer)", "Kathryn Hughes (poet)", "Lavinia Greenlaw" — all UEA directors with qualification suffixes. LM reached Lavinia Greenlaw at hop4. Partially structural (rule worked as intended) but broad application carries over-triggering cost.
- ex99 (Charles Lane actor / Jim Brochu / Lucille Ball): Queries: "Charles Lane" → "Lucille Ball" → ... The LM went directly to Charles Lane (resolving the "Charpes Lane" typo) and then Lucille Ball. Formal-name variant rule may have contributed by preventing re-querying under the garbled typo form.
Notable observations from trace:
- Air Lituanica (ex142) PASSED on this seed: Queries: "Ryanair" → "Vilnius Airport" → "Vilnius Airport" → "Air Lituanica" → "Vilnius Airport" → "Ülemiste Airport". Air Lituanica was queried and found in hop4. NOTE: This failure has been seed-dependent — it passed on some prior seeds. Whether this is a structural fix or stochastic improvement is uncertain.
- CRITICAL PERSON COVERAGE RULE over-triggering is visible in trace: Many examples show the LM querying biographical articles for persons mentioned in retrieved org/film articles who are NOT gold supporting facts (e.g., ex1: "Daniel Espinosa" queried from Child 44 article — NOT gold; ex13: "Val Taylor" queried from UEA article — NOT gold; ex72: "Peggy Fair" queried 3x from Mannix article — NOT gold). These wasted hops cost the valset.
- Hop5 fire rate dropped to 76%: First time below 80% in any iteration. The CRITICAL PERSON COVERAGE RULE causes the LM to query persons earlier (hops 2-4), finding them before hop5 — reducing hop5 trigger rate. But when those queried persons aren't gold facts, the wasted hops hurt the valset.
- COMPARISON/RANKING bullet not firing for ex18: The LM issued broad queries (London, UK) in Steps 1-3 before ever reaching Step 4 body-scan. The bullet is only useful when: (a) the bridge article (Gatwick) is retrieved early, AND (b) no other claim entities are queried first. When Step 1 entity enumeration yields "London" / "UK" as entities to query, the body-scan phase is never reached.
Key new observations from iteration 25:
- CRITICAL PERSON COVERAGE RULE has confirmed over-triggering cost: The rule causes the LM to query biographical articles for EVERY person mentioned in ANY retrieved org/film/work article, regardless of whether that person is a required gold fact. This is mechanically correct for the Matthew Bailes failure class (person IS a required gold fact but org article doesn't count as coverage), but too broad for the general case. To fix the over-triggering: the rule must be conditioned — "only query a person's biographical article if the CLAIM explicitly requires that person (they appear as a named entity in the claim or are directly described by the claim's relationship)." The universal version ("any person named in any role") is what caused the valset regression.
- +7.2% subsample ≠ valset improvement: This is the clearest example yet of subsample overfitting. The subsample seed happened to include ex13 (UEA Creative Writing — the exact target of the CRITICAL rule) and ex99 (Charles Lane typo). These are rare in the valset. Meanwhile, the over-triggering cost (LM querying unnecessary biographical articles) occurs broadly across the valset. The seed selection effect was especially misleading for this iteration.
- CRITICAL label is double-edged: "CRITICAL"-flagged rules in the prompt drive near-100% LM compliance. This is good for TYPE disambiguation (iter21: "CRITICAL type-qualifier enforcement" worked well — the LM always adds media type qualifiers when the claim specifies one). It is dangerous for COVERAGE/SCOPE rules (iter25: "CRITICAL PERSON COVERAGE RULE" caused universal querying of every mentioned person). The difference: type disambiguation rules are binary and claim-verified (the media type IS stated in the claim). Coverage scope rules require context-dependent judgment — when labeled CRITICAL, the LM applies them regardless of context.
- The formal-name variant fix remains low-risk and structural: This fix (iter24/iter25) should be included in future iterations. It did not cause the valset regression.
Failure Pattern Distribution: Iteration 26 Child Trace (5 failures from 50)
Subsample score: 0.8949 (+7.1% vs parent 0.8352). Built on candidate 16 (iter25). Accepted as candidate 17. Valset: 0.8351 (per task context; iteration history says N/A — possible discrepancy between auto-evaluation and architect-recorded value). Single change: removed CRITICAL PERSON COVERAGE RULE from Step 2. Hop5 fire rate: 86% (43/50 used 5 searches). Score distribution: 7 × 0.996 (4-hop), 38 × 0.994 (5-hop), 5 × 0.0 (failure).
-
Wrong actor identification / first-hop disambiguation failure (1/5):
- ex12 (id=37 — Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Hop chain: raw claim → Loha (film) → Dharmendra → Amrish Puri → Shatrughan Sinha. The LM identified prominent Bollywood actors (Dharmendra, Amrish Puri, Shatrughan Sinha) instead of the actual star Karan Kapoor. Karan Kapoor and Geoffrey Kendal (his maternal grandfather) never queried. Persistent 20+ iterations — requires external Bollywood film knowledge to identify the correct star.
-
Wrong entity chain / director's second-hop inference failure (1/5):
- ex20 (id=56 — Guy Davis comics / Crimson Peak / Burn Gorman): Hop chain: raw claim → Burn Gorman → Guillermo del Toro → Pacific Rim → Pacific Rim (2013 film). Guy Davis (production designer and comics artist for Crimson Peak) never queried. The LM follows the director's other filmography (Pacific Rim) instead of inferring the production designer from the Crimson Peak article. Persistent 10+ iterations.
-
Wrong entity chain / subsidiary never inferred from franchise carrier (1/5):
- ex25 (id=71 — Airlines of Africa / Comair South Africa / British Airways franchise): Hop chain: raw claim → KLM → Comair Limited → Comair (South Africa) → OR Tambo International Airport. Airlines of Africa (a Comair subsidiary) never queried. The LM correctly finds Comair but doesn't infer the subsidiary. OR Tambo Airport is used as hop5 instead of Airlines of Africa. Persistent 10+ iterations.
-
Sundance festival anchor / co-lead actor not extracted (1/5):
- ex31 (id=92 — Green Chair / Shim Ji-ho / Suh Jung): Hop chain: raw claim → 2005 Sundance Film Festival (k=5) → Park Chul-soo → 2005 Sundance Film Festival again (k=5) [retry fired but LM re-issued same query] → Green Chair (k=12). Shim Ji-ho (co-lead actor) never queried. The LM finds Green Chair and Suh Jung but cannot extract Shim Ji-ho from those articles. NOTE: Retry mechanism fired for the Sundance repeat, warned the LM, LM still returned the same entity — confirming the Sundance anchor is stronger than any retry warning can overcome. Persistent 10+ iterations.
-
Film→performer extraction failure — film in hop4, no hop6 (1/5):
- ex33 (id=95 — Felicity Jones / Rachelle Beinart / Rogue One): Hop chain: raw claim → Oxford University Dramatic Society (k=5) → The Comedy of Errors (k=5) → Rogue One (film) (k=5) → Game of Thrones (k=12). Rogue One IS retrieved in hop4 (k=5), but hop5 pivoted to "Game of Thrones" instead of querying Felicity Jones from the Rogue One article. The Step 4 film→performer bullet is NOT in the current architecture (was removed after iter16 caused −3.5% valset regression). Without the bullet, the LM pursues a Rachelle Beinart → stunt work → Game of Thrones chain instead of Felicity Jones → Rogue One → actress. Persistent 10+ iterations. Felicity Jones requires the film→performer bullet to be reinstated with a tighter trigger condition (only when the claim's phrasing directly implies the actress from the retrieved film), and the film must be in hops 1-3 (not hop4) for a subsequent hop to query the person.
Confirmed fixes vs parent (candidate 16, different seed):
- ex18 (Heathrow Airport / Gatwick Airport / Coldwaltham): 0.0 → 0.994. COMPARISON/RANKING bullet fired correctly after CRITICAL rule removal. Without the CRITICAL rule consuming hops 2-4 on person queries, hop5 remained available for the COMPARISON/RANKING body-scan extraction of Heathrow from the Gatwick article. Mechanism: CRITICAL rule had forced the LM to query persons from retrieved articles in earlier hops, preventing hop5 from being used for the body-scan. Without the rule, hop5 now fires for Heathrow.
- ex75 (Robert Jordan / Morgan Llywelyn / Lion of Ireland): 0.0 → 0.994. Robert Jordan article is at rank 8-12 for the "Robert Jordan" query (requires k=12 to retrieve). In the parent (candidate 16), the CRITICAL rule caused Robert Jordan to be queried in hop4 (k=5), missing the article. After removal, the LM saves Robert Jordan for hop5 (k=12), successfully retrieving it. Structural mechanism confirmed.
- ex24, ex33, ex48: Minor score improvements (+0.002 each, 5-hop → 4-hop) — the CRITICAL rule removal reduced unnecessary hop5 triggers for examples that needed only 4 hops.
Key new observations from iteration 26:
- COMPARISON/RANKING bullet is strongly suspected to be causing ~0.04 valset loss: The architecture is candidate 14 + formal-name fix + COMPARISON/RANKING. Candidate 14 is 0.8748. Iter23 (candidate 14 + 5 bullets including COMPARISON/RANKING) got 0.8550 (−0.0198). Iter26 (candidate 14 + formal-name fix + COMPARISON/RANKING alone) got 0.8351 (−0.0397). The formal-name fix is expected to be ~neutral. This implies COMPARISON/RANKING alone costs approximately 0.02-0.04 valset score — significantly more than previously estimated. The likely mechanism: the LM applies the COMPARISON/RANKING pattern to many retrieved articles that have comparison text, wasting hop5 on extracting wrong comparison entities.
- Note on valset discrepancy: Iteration history records "Valset score: N/A" but the task context provides 0.8351 as the valset score. The most likely explanation: the valset was auto-evaluated by the optimizer framework after the architect's reflection was written (the N/A was recorded pre-evaluation). The 0.8351 figure should be treated as the operative valset score.
- All 5 failures are identical in category to prior iterations: No new failure categories introduced. The 5 persistent failures (Loha actor, Guy Davis, Airlines of Africa, Shim Ji-ho, Felicity Jones) have appeared across 10+ iterations each without resolution. They represent hard structural limits of the current architecture.
- Hop5 fire rate: 86% (43/50 used 5 searches). Between iter25's 76% (CRITICAL rule suppressed hop5) and iter21's ~92% (no suppression). The COMPARISON/RANKING bullet adds some hop5 triggers (extracting comparison entities); the formal-name fix is neutral. 86% is still very high — the hop5 firing condition tightening remains the highest-priority untested structural change.
- Retry mechanism confirmed insufficient for Shim Ji-ho class: The retry fired for "2005 Sundance Film Festival" in hop4 (warned the LM), but the LM re-issued the same query, which was accepted and executed as the ColBERT hop4 call. This is expected behavior — the retry tries once; if the LM returns the same normalized query a second time, the code accepts it. A stronger code-level enforcement (e.g., zero-result-check: if a query is in
previous_queries, skip the ColBERT call entirely and force Step 4 body-scan mode) would prevent this wasted hop. - Felicity Jones failure mechanism clarified: Rogue One IS retrieved in hop4 (k=5). Hop5 then chose "Game of Thrones" instead of "Felicity Jones." Since Rogue One was in context5 (fed to hop5's IdentifyNextTarget), the Step 4 pattern SHOULD have caught the film→actress connection — but without the film→performer bullet (removed after iter16), the LM doesn't know to extract the lead actress from a retrieved film article. The timing is now correct (film in hop4, hop5 available for the person), so a TIGHTLY CONDITIONED film→performer bullet that only activates when the claim explicitly says "the actress/actor in [film]" could fix this without the broad regression that plagued iter16.
Current State (Post Iteration 26)
- Current best valset score: 0.8748 (candidate 14, iter21). Unchanged since iter21. Prior best chain: 0.8450 (iter14) → 0.8550 (iter18) → 0.8551 (iter20) → 0.8748 (iter21).
- Current program (iter26, candidate 17): Built on candidate 16 (iter25). Removed CRITICAL PERSON COVERAGE RULE. Architecture = candidate 14 + formal-name variant fix + COMPARISON/RANKING bullet. Valset 0.8351 — partial recovery from iter25, but still −4.5% below best. The COMPARISON/RANKING bullet is strongly suspected to cost ~0.04 valset. Do NOT continue building on candidate 17; build on candidate 14 as the base.
- Best candidate architecture (candidate 14, iter21): Branch
codeevolver-20260617092536-50f41b. Built on candidate 13 (iter20) with two prompt-only edits: (1) Step 3 CRITICAL type-qualifier enforcement with bad→good example; (2) three new Step 4 body-scan bullets (parent company, town/location-of, event venue). DO NOT add broad Step 2 COVERAGE RULE bullets without tightly conditioning them. DO NOT add COMPARISON/RANKING bullet in isolation — iter26 data suggests it costs ~0.04 valset score alone. - Iteration 14 result: Accepted (candidate 9, valset 0.8450). Fixed Worldview Entertainment, Robinsons Galleria, Glenn Hughes. Priority interleaving fixed Simone Bolelli and Krupa/Sunkist. Hop5 fire rate ~80%.
- Iteration 15 result: Rejected (neutral subsample 0.0 delta). 5 structural fixes (Jonathan Lynn k=12, Mars Inc. k=12, Greatest Game k=12, Felicity Jones Step4-pattern, Beyond Rangoon) cancelled by 5 pure stochastic regressions. k=12 is structurally net positive; the neutral subsample was misleading due to stochastic noise.
- Iteration 16 result: Accepted (candidate 10, valset 0.8152). Round 1 (asymmetric k hop1=7 hops2-5=12) caused −10.4% seen_titles pollution. Round 2 (k=12 for hop5 only) fixed pollution and showed +2.4% subsample. Valset dropped to 0.8152 — a 3.5% regression from best. The Step 4 director/actress bullet is the prime suspect.
- Iteration 17 result: Rejected (neutral subsample, Δ=0.0). Structural fix (Jonathan Lynn k=6 hop1) cancelled by stochastic regression (Greatest Game Ever Played). No valset score.
- Iteration 18 result: Accepted (candidate 11, valset 0.8550, new best at time). Four coordinated changes on candidate 9. Sub-sample +9.7% (0.8154→0.8948). Fixed ex5, ex14, ex75 (k=12 rank-boundary), ex58, ex123. Remaining failures: ex3, ex37, ex56, ex92, ex117 (partial improvement).
- Iteration 19 result: Accepted (candidate 12, valset 0.8550, tied with iter18 best — no improvement). Prompt-only changes. Subsample +4.7% (0.8351→0.8748). Fixed ex58 (Glenn Hughes multi-membership), ex63 (F.E.A.R. "(video game)" suffix). No new failures introduced. Bug discovered: disambiguation suffix coverage check — "F.E.A.R. (video game)" not recognized as covering "F.E.A.R." in Step 2.
- Iteration 20 result: Accepted (candidate 13, valset 0.8551, new best — +0.0001 vs prior best). Two prompt-only edits. Subsample +2.3% (0.8550→0.8748). Fixed ex31 (The Dinner Party artwork — type-qualifier coverage check fix). Defunct entity pattern did NOT fix Air Lituanica. Remaining failures: Matthew Bailes, Air Lituanica, Renáta Tomanová, Gene Kelly, Bill Cullen (Punchlines found but not host), On the Buses/Pat Ashton.
- Iteration 21 result: Accepted (candidate 14, valset 0.8748, NEW BEST — +3.5% relative vs iter20). Two prompt-only changes: Step 3 CRITICAL type-qualifier enforcement + three new Step 4 body-scan bullets (parent company, location-of, event venue). Subsample +5.0% (0.7954→0.8352). Fixed ex63 (F.E.A.R. video game — type-qualifier), ex120 (Afonwen — location-of). Stochastic regression: ex82 (Moonrunners — pure LM variance). New partial failure identified: ex32 (parent company bullet causes LM to skip intermediate Skittles article). Remaining failures: Darkened Skye/Skittles (intermediate article skipped), Guy Davis comics, Ancient Egyptian religion (phantom entity), Airlines of Africa, Moonrunners (stochastic), Flex club, Gene Kelly (hallucination), On the Buses/Pat Ashton.
- Iteration 22 result: Rejected (built on candidate 9 — k=7 uniform, NOT candidate 14). Round 1: LM-based reranker (
SelectBestDocumentsChainOfThought) replacing round-robin + film→performer Step 4 bullet → −7.2% (0.8350→0.7755) regression, reverted. Round 2: prompt-only cherry-pick of iter18-21 improvements to candidate 9's k=7 base → same score (0.7755). Root causes: (a) gpt-5.4-nano cannot reliably select 21 precise indices from 25-30 items; (b) Step 2 sub-article false-coverage wording (from iter18-21) is coupled to asymmetric-k and causes regression on k=7 base. Valset N/A. Current best valset is still 0.8748 (candidate 14, iter21). - Iteration 23 result: Accepted (candidate 15, valset 0.8550, below best 0.8748). Prompt-only Step 4 additions on candidate 14: CREATOR, HOST/CAST MEMBER, CO-FOUNDER, COMPARISON/RANKING bullets + parent company ORDERING RULE. Subsample +2.5% (0.7954→0.8152). Fixed ex12 (Adam Guettel — CREATOR bullet), ex18 (Heathrow Airport — COMPARISON/RANKING bullet). CO-FOUNDER bullet did NOT fire for Charlotte Baldwin Allen (ex114). HOST/CAST MEMBER bullet did NOT fix Pat Ashton/On the Buses (ex126, despite Thick as Thieves TV series being retrieved). Stochastic regression: ex63 (F.E.A.R. — bare query issued). Valset 0.8550 is −2.3% below best. Current best valset remains 0.8748 (candidate 14, iter21). Current program (candidate 15) is below best — build next iterations on candidate 14 or candidate 15 while monitoring valset.
- Iteration 24: Parent subsample 0.8750→child 0.8748 (−0.0002, neutral within noise); Valset score N/A (rejected — subsample did not beat parent). Built on candidate 14 (iter21, best valset). Prompt-only changes: (1) full legal name variant coverage fix (Step 2: "Boris Franz Becker" now covered by "Boris Becker" — do not re-query under longer formal name); (2) CREATOR and COMPARISON/RANKING bullets added to Step 4 (same bullets previously in candidate 15); (3) parent company ORDERING RULE (same as candidate 15). Confirmed structural fix: ex146 (Ellis Ferreira — full-name variant rule prevented wasted hop4 re-query of "Boris Franz Becker", freeing it to query Ellis Ferreira). Stochastic regressions: ex20 (Air Lituanica — Tallinn Airport excerpt named "Estonian Air" as defunct 2015 airline, DEFUNCT ENTITY rule fired on wrong entity), ex41 (Apple Inc. — "company that made the documentary" ambiguity; LM latched onto Insignia Films). Soft regressions: 5 examples shifted from 4-hop (0.996) to 5-hop (0.994) due to CREATOR/COMPARISON bullets causing unnecessary hop5 trigger. 6 total failures: Matthew Bailes, Allan Goldstein, Air Lituanica, Loha (Karan Kapoor + Geoffrey Kendal), Apple Inc., Gene Kelly. Hop5 fire rate: 95.5% (42/44 passing examples). Current best valset remains 0.8748 (candidate 14, iter21). The full-name variant fix is a confirmed structural improvement that should be carried into future iterations on candidate 14.
- Iteration 26: Subsample 0.8352→0.8949 (+7.1%); Valset score 0.8351 (candidate 17; partial recovery from iter25 regression — still −4.5% below best 0.8748). Built on candidate 16 (iter25). Single change: removed CRITICAL PERSON COVERAGE RULE from Step 2. Confirmed structural fixes: ex18 (Heathrow Airport — COMPARISON/RANKING bullet now fires correctly without the rule consuming hop5 early), ex75 (Robert Jordan — LM saves query for hop5 k=12 instead of burning it in hop4 k=5). All 5 remaining failures are persistent: ex37 (Loha/Karan Kapoor), ex56 (Guy Davis), ex71 (Airlines of Africa), ex92 (Shim Ji-ho), ex95 (Felicity Jones). Hop5 fire rate: 86% (43/50 used 5 searches). NOTE: The COMPARISON/RANKING bullet retained from iter25 likely explains why the valset is 0.8351 rather than ~0.875+ (candidate 14 architecture minus only the CRITICAL rule should yield ~0.875 based on prior data). The COMPARISON/RANKING bullet alone may be costing ~0.04 on the valset — see observations below. Accepted as candidate 17. Current best remains candidate 14 (iter21, 0.8748).
- Iteration 25 result: Accepted (candidate 16, valset 0.8252 — −5.7% regression from best). Built on candidate 14. Three prompt-only changes: formal-name variant fix (Step 2, from iter24) + CRITICAL PERSON COVERAGE RULE (Step 2) + COMPARISON/RANKING bullet (Step 4, same as iter23). Subsample +7.2% (0.8352→0.8951), but valset regressed significantly. Root cause: CRITICAL PERSON COVERAGE RULE is too broadly framed (no conditioning on claim relevance) — LM queries biographical articles for every person mentioned in retrieved org/film articles, wasting hops on non-gold entities. Hop5 fire rate: 76% (lowest measured). Failures: ex18 (Heathrow), ex37 (Loha), ex65 (Ancient Egyptian religion), ex117 (Secret Agent TV series), ex129 (Stranger in Paradise). Current best valset UNCHANGED at 0.8748 (candidate 14, iter21). CRITICAL: Build next iteration on candidate 14, not candidate 16. The CRITICAL PERSON COVERAGE RULE must NOT be re-used in its current universal form.
- Current program is candidate 17 (iter26, valset 0.8351): Still significantly below best (−4.5%). Build future iterations on candidate 14 (iter21, 0.8748). The formal-name variant fix is the only confirmed structural improvement from iters 24-26 that should be carried forward. The COMPARISON/RANKING bullet and CRITICAL PERSON COVERAGE RULE should both be dropped. All other iter24-26 changes should be dropped or fundamentally redesigned before reuse.
- seen_titles pollution rule (confirmed): NEVER increase k above a hop's round-robin slot count for intermediate hops. Hop1 gets 6 slots → max safe k=6. Hops 2-4 get 5 slots → max safe k=5. Only the LAST hop (typically hop5, ~92% of examples in iter20) can safely use k=12. Any k above the slot count silently adds docs to
seen_titleswithout contributing to output. - Note on hop5 fire rate: At ~92% in iter20/iter21 traces; dropped to 76% in iter25 (CRITICAL PERSON COVERAGE RULE suppressed it); recovered to 86% in iter26 after CRITICAL rule removed. The COMPARISON/RANKING bullet adds some hop5 triggers, explaining why iter26's rate (86%) is slightly below iter21's (92%). Tightening firing condition (only fire if
len(hop4_new) == 0orlen(hop4_new) < 3) would save the penalty for examples where 4 hops already found all gold docs. This remains the highest-priority untested structural refinement. - Note on disambiguation suffix coverage check bug (FIXED in iter20): The iter19 bug — where type-qualifier forms like "X (video game)" or "X (artwork)" were blocked by Step 2's sub-article wording — has been resolved. Step 2 now explicitly allows type-qualifier parentheticals ("film", "TV series", "video game", "song", "artwork", etc.) while blocking sub-page suffixes ("bibliography", "filmography", "discography", "early life", "health"). Confirmed fix: The Dinner Party (artwork).
- Note on disambiguation suffix guidance: Added in iter18, minimal uptake (~6/250 queries). The coverage check bug has now been fixed in iter20 — disambiguation suffixes retrieved by the LM are now correctly recognized as covering their bare entities.
- Note on stochasticity: Subsample improvements of 1-2% are below the noise floor. The valset is the ground truth. Iter25 is the strongest example of overfitting yet: +7.2% subsample with −5.7% valset. Iter26 also showed a large subsample gain (+7.1%) with only a modest valset score (0.8351) — both reflecting the seed-specific nature of large subsample gains on rules that fire on rare claim classes.
- Note on pre-planning: Two attempts (iter6 strong priority, iter12 soft advisory) both failed. Do NOT attempt pre-planning again with gpt-5.4-nano at reasoning_effort=low without code-level entity validation.
- Note on fruitless detection scope: Blind to "wrong article returned" cases (e.g.,
Isatisquery returnsIsatis tinctoria). Disambiguation suffix strategy is the correct fix for these cases. - Sub-article false-coverage fix (iter18, completed in iter20): Wording allows disambiguation suffixes ("Dave Evans (singer)" DOES cover "Dave Evans"), name-form variants ("Pierre Womé" covers "Pierre Nlend Womé"), AND type-qualifier forms ("X (film/TV series/game/artwork)" DOES cover "X"). Only true sub-page suffixes ("bibliography", "filmography", "discography", "early life", "health") are blocked. The iter19 over-generalization bug has been fixed in iter20.
- seen_titles pollution rule (confirmed): NEVER increase k above a hop's round-robin slot count for intermediate hops. Hop1 gets 6 slots → max safe k=6. Hops 2-4 get 5 slots → max safe k=5. Only the LAST hop (typically hop5, ~92% of examples in iter20) can safely use k=12. Any k above the slot count silently adds docs to
seen_titleswithout contributing to output. - Note on hop5 fire rate: At ~92% in iter20 trace (46/50 examples used 5 searches; 96% in iter19). Hop5 fires nearly universally — 0.002 penalty paid almost universally. Tightening firing condition (only fire if
len(hop4_new) == 0orlen(hop4_new) < 3) would save the penalty for examples where 4 hops already found all gold docs. This remains the highest-priority untested structural refinement. - Note on disambiguation suffix coverage check bug (FIXED in iter20): The iter19 bug — where type-qualifier forms like "X (video game)" or "X (artwork)" were blocked by Step 2's sub-article wording — has been resolved. Step 2 now explicitly allows type-qualifier parentheticals ("film", "TV series", "video game", "song", "artwork", etc.) while blocking sub-page suffixes ("bibliography", "filmography", "discography", "early life", "health"). Confirmed fix: The Dinner Party (artwork).
- Note on disambiguation suffix guidance: Added in iter18, minimal uptake (~6/250 queries). The coverage check bug has now been fixed in iter20 — disambiguation suffixes retrieved by the LM are now correctly recognized as covering their bare entities.
- Note on stochasticity: Subsample improvements of 1-2% are below the noise floor. The valset is the ground truth.
- Note on pre-planning: Two attempts (iter6 strong priority, iter12 soft advisory) both failed. Do NOT attempt pre-planning again with gpt-5.4-nano at reasoning_effort=low without code-level entity validation.
- Note on fruitless detection scope: Blind to "wrong article returned" cases (e.g.,
Isatisquery returnsIsatis tinctoria). Disambiguation suffix strategy is the correct fix for these cases. - Sub-article false-coverage fix (iter18, completed in iter20): Wording allows disambiguation suffixes ("Dave Evans (singer)" DOES cover "Dave Evans"), name-form variants ("Pierre Womé" covers "Pierre Nlend Womé"), AND type-qualifier forms ("X (film/TV series/game/artwork)" DOES cover "X"). Only true sub-page suffixes ("bibliography", "filmography", "discography", "early life", "health") are blocked. The iter19 over-generalization bug has been fixed in iter20.
Failure Pattern Distribution: Iteration 12 Child Trace (8 failures from 50)
Subsample score: 0.8366 (+2.4% vs parent 0.8167). Built on candidate 6 (4-hop, valset previously not evaluated). Accepted as candidate 7. Valset: 0.8267 (new best).
-
Wrong entity chain / hops exhausted on wrong entities (3/8):
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Model queried
Loha (1987 film)and fixated on it (retry fired, issued same query twice). Never searched forKaran Kapoor(film's star) orGeoffrey Kendal(maternal grandfather). Persistent — same as ex37 in iter11. The retry cannot help here because the problem is wrong entity selection, not query repetition. - ex53 (Douglas MacArthur's escape / Boeing B-17 Flying Fortress / Texas Raiders): Hop1 serendipitously retrieved B-17. But hops 2–4 went to
Conroe North Houston Regional Airport→Douglas MacArthur(generic biography) →Philippines(retry fired). The specific article "Douglas MacArthur's escape from the Philippines" and "Texas Raiders" (specific B-17 at Conroe) never queried. Hyphen normalization reduced the airport duplicate issue but could not fix the wrong chain pivot. - ex85 (Flex club / High Contrast / Waves Vienna): Hop1 retrieved
High Contrast(Lincoln Barrett). Hops 2–4 queriedRonnie Flex→Lincoln Barrett(retry fired, repeatedLincoln Barrett).Flex (club)(Vienna nightclub) andWaves Viennanever queried. Persistent — ex85 across iter4, iter11, iter12.
- ex37 (Loha 1987 film / Karan Kapoor / Geoffrey Kendal): Model queried
-
ColBERT retrieval gap — correct query issued but article not returned (3/8):
- ex63 (F.E.A.R. / Alma Wade / SAS: Secure Tomorrow): Hop3 correctly queried
F.E.A.R.but ColBERT returnedF.E.A.R. (series),F.E.A.R. (disambiguation),F.E.A.R. (album),F.E.A.R. 3— not the base article. Hop4 wasted onJupiter EX. Persistent across iter6, iter8, iter11, iter12. The exact Wikipedia article titleF.E.A.R.is systematically not returned by ColBERT for the query string "F.E.A.R." — an index ranking issue. - ex82 (The Dukes of Hazzard / Moonrunners / Briscoe Darling Jr.): Hop3 correctly queried
Moonrunnersbut ColBERT returnedSunrunner,Traitor's Moon,Jerry Rushing, etc. — not theMoonrunnersarticle. Persistent — ex82/Moonrunners across iter4, iter5, iter7, iter11, iter12. ColBERT returns near-name matches, not the actual film article. - ex143 (Crepis / Isatis / E.B. Babcock): Hop2 queried
Isatisbut ColBERT returned species articles (Isatis tinctoria, etc.) rather than the genus stubIsatis. Hop3 correctly pivoted toCrepis(found). Hop4 wasted onRoy Elwood Clausen(Babcock's coauthor).Isatisremains unretrieved despite correct query.
- ex63 (F.E.A.R. / Alma Wade / SAS: Secure Tomorrow): Hop3 correctly queried
-
Partner extraction failure (1/8):
- ex146 (Ellis Ferreira / Boris Becker / 1997 Stockholm Open – Doubles): Model retrieved
Boris Beckerand1997 Stockholm Open – Doublescorrectly (hops 1-3), but hop4 queriedNicklas Kulti(one player in the final) rather thanEllis Ferreira(Kulti's actual partner). Persistent — ex146 in iter11, iter12. The Step 4 "doubles partner" example was added in iter11 but did not fix this — the LM extracts one player from the event article but does not specifically identify the opponent's partner.
- ex146 (Ellis Ferreira / Boris Becker / 1997 Stockholm Open – Doubles): Model retrieved
-
Explicitly-named entity in claim / ColBERT gap (1/8):
- ex50 (Just Do It / Swoosh / Dan Wieden): Hop 4 queried
Swooshbut ColBERT returned Nike-related near-misses, not theSwoosharticle itself. AlsoDan WiedenandJust Do Itnot found. Persistent across iter4, iter11, iter12. Multiple swoosh-related queries (Nike logo, Nike Swoosh) all fail to surface the base article.
- ex50 (Just Do It / Swoosh / Dan Wieden): Hop 4 queried
Retry mechanism stats (iter12 child, 50 examples): Fired in ~10 examples. In failures: fired in ex37 (repeated same query), ex53 (pivoted to wrong entity), ex85 (repeated same query). In the other ~7 retry examples, the retry was net-positive (redirected to new productive query).
Confirmed fixed by context trimming (iter12 Round 2): ex31 (Dinner Party / Sojourner Truth). Sojourner Truth was at rank-7 of hop1 in the parent. Round-robin evicts hop1 rank-7 docs to position 25 (beyond 21-doc cap). With context2 showing only hop1_new[:6], the LM correctly identified Sojourner Truth as uncovered and issued a direct query. This fix is mechanistic and generalizes.
Context-trimming boundary analysis: With 4-hop round-robin, the slot allocation per hop is positions {1,5,9,13,17,21} for hop1 (6 slots), {2,6,10,14,18} for hop2 (5 slots), etc. The 7th doc from hop1 would land at position 25, definitively outside the 21-doc cap. The trimming to hop1_new[:6] and hop2_new[:5] and hop3_new[:5] exactly mirrors the round-robin eviction boundary. Any doc at rank ≥ 7 in hop1, rank ≥ 6 in hop2, rank ≥ 6 in hop3 would be evicted — and they're now also hidden from the LM's context. This is structurally correct and generalizes.
Hop 4 Slot Starvation: Mostly Resolved by Round-Robin Interleaving
Round-robin interleaving (iteration 4) successfully fixed the major slot starvation cases confirmed in iteration 3 (ex33 Rochester Hills, ex60 Ice Princess, ex93 Pablo Escobar, ex25 Warren Fu). 1 residual starvation case remains in the iteration 4 trace:
- ex50 (Swoosh / Dan Wieden / Just Do It): Hops 1–3 query Nike Inc. → Wieden+Kennedy → (fills 21 slots). Hop 4 correctly queries "Swoosh" but results are discarded. Unlike prior starvation cases, this is more subtle: hops 2-3 are querying relevant but not gold articles (Nike Inc. and Wieden+Kennedy are related but "Swoosh" is the specific required article). The waste here is 2 non-gold hops consuming 14 slots. Round-robin did not fix this case because the issue is wrong query selection (hop 2-3 entities), not just slot ordering.
Conclusion: Round-robin interleaving is proven and effective. The remaining starvation case is actually a wrong-entity-chain failure in disguise.
previous_queries Mechanism: Improvement Over fruitless_queries But Not Fully Effective
The upgrade from fruitless_queries (zero-return only) to previous_queries (all queries) fixed several repetition cases (ex76 Delmer Daves, ex120 Afonwen). However, 3 query-repetition failures remain in the iteration 4 trace:
-
ex92 (Shim Ji-ho / Green Chair):
previous_queriesIS populated with "Sundance Film Festival, 2005 Sundance Film Festival" at hop 4. The LM re-issues "2005 Sundance Film Festival" anyway — explicitly ignoring the no-repeat instruction. Shim Ji-ho never queried. 18 docs retrieved. -
ex125 (Jānis Strazdiņš / Bass voice type): Hops 2, 3, AND 4 all query "Jānis Strazdiņš".
previous_queriesat hop 4 literally shows "Jānis Strazdiņš, Jānis Strazdiņš". Key insight: this entity has NO Wikipedia article. When ColBERT returns nothing, the LM cannot distinguish "not yet retrieved" from "article doesn't exist" — it keeps retrying. Required article "Bass (voice type)" is never queried. Only 12 docs retrieved. -
ex126 (Harry Booth / On the Buses): Hops 3 and 4 both query the non-existent article "Thick as Thieves (1971 film)". "On the Buses" and "Pat Ashton" never queried.
Root cause: When a queried entity has no Wikipedia article (ColBERT returns nothing), the LM interprets the empty result as "I haven't found it yet" rather than "this article doesn't exist." The previous_queries field prevents repeating the exact string but not the underlying entity confusion. A possible fix: explicitly surface the retrieval result (0 docs) in the context so the LM can infer the article doesn't exist.
Dominant Failure Pattern: Wrong Entity Chains (9/15 failures in iter4 trace)
Wrong entity chain selection is now the single largest failure category. The LM correctly follows the chain for explicit entities in the claim, but frequently makes wrong turns:
Sub-patterns:
A. Manufacturer-instead-of-product disambiguation (1 case — ex54 Skittles): LM knows Skittles is the candy but queries "Mars, Incorporated" (manufacturer) instead of "Skittles (confectionery)". The required disambiguation suffix (confectionery) is never used.
B. Production-without-person (1 case — ex95 Felicity Jones / Rogue One): LM queries "The Comedy of Errors", "Oxford University Dramatic Society", "Rogue One" but never directly queries "Felicity Jones" herself. Claim requires her personal article.
C. Context entities instead of derived article (1 case — ex129 Stranger in Paradise): LM pursues Borodin → Kipchaks → Cumans (peoples mentioned in Polovtsian Dances) but never queries "Stranger in Paradise (song)" — the song adapted from Borodin's Polovtsian Dances.
D. Intermediate entity named in reasoning but not issued as query (1 case — ex82 Moonrunners): Hop 2 LM reasoning explicitly names "Moonrunners" but then queries something else. The required article is stated in the reasoning but abandoned.
E. Specific season/article not derivable from claim alone (1 case — ex141 NY Islanders season): Claim references NJ Devils + a building → LM queries "New Jersey Devils", "Madison Square Garden", "New York metropolitan area". The required article "1974-75 New York Islanders season" requires knowing specific historical facts not present in the claim text.
F. Hallucination — completely wrong entity identified (2 cases):
- ex97 (Gene Kelly): LM identifies the choreographer born 1912 as Bob Fosse (born 1927). Spends hops on Fosse's collaborators Fred Ebb and John Kander. Gene Kelly and "Best Foot Forward" never queried.
- ex69 (Punchlines / Bill Cullen): LM identifies the game show as "Deal or No Deal" (hosted by Howie Mandel). Punchlines and Bill Cullen never queried.
G. Wrong entity cascade filling all slots (3 cases — ex7, ex13, ex44): LM identifies plausible but non-gold entities and fills all 21 slots with wrong-chain documents before finding the required article.
Key insight: For chains requiring >1 hop of inference beyond what's in the claim text (e.g., "the person who X" when X's article is needed to identify the person), the current architecture fails because it processes entities greedily rather than pre-planning.
Second-Hop Scan Principle: Validated But Priority Overrule Is Dangerous
From iteration 5:
- The principle is validated: Making the second-hop scan unconditional (always reading retrieved passage text for implied entities) fixed ex31 (The Dinner Party artwork — LM correctly read the Barbe de Verrue article and identified "The Dinner Party" as the required installation). The principle is sound and generalizable.
- "PRIORITIZE second-hop entity" is too aggressive: The instruction "If a retrieved passage explicitly names an entity strongly implied by the claim, PRIORITIZE that second-hop entity over remaining claim entities" caused ex63 (F.E.A.R.) to regress: the LM chose "Jupiter EX engine" (a technical sub-component mentioned in the SAS passage) over "F.E.A.R." (the primary game of the series). The priority rule fails when the second-hop entity is a technical detail, not a primary subject.
- Correct framing for future attempts: Frame as softer guidance — "when a retrieved article explicitly names an entity that directly satisfies a core claim relationship (e.g., the film a stunt performer worked on, the founder's co-founder), prefer that second-hop entity over peripheral claim details." Avoid language like "PRIORITIZE" or "over remaining claim entities" — the LM over-applies this.
Failure Pattern Distribution: Iteration 5 Child Trace (13 failures from 50)
-
Wrong entity chains / wrong article selection (~7/13): LM pursues plausible but non-gold entities:
- ex3 (Elena Shaddow): Queries "Best Score and Best Orchestrations" awards category instead of "Elena Shaddow" directly
- ex4 (Rosi Golan): Queries "Artsana" then "Mayaeni Strauss" (wrong Belgian co-composer) instead of "Rosi Golan"
- ex18 (Guy Davis (comics)): After finding Crimson Peak, queries Guillermo del Toro → Pacific Rim instead of "Guy Davis (comics)"
- ex24 (F.E.A.R.): Prioritizes "Jupiter EX engine" (second-hop) over "F.E.A.R." (primary game)
- ex26 (Punchlines/Bill Cullen): Goes completely off-track querying Val Doonican articles; never finds Punchlines or Bill Cullen
- ex33 (Felicity Jones): Queries Oxford Dramatic Society, The Comedy of Errors, Rogue One — but never directly queries "Felicity Jones" herself
- ex40 (Charlotte Baldwin Allen): Queries "Augustus Chapman Allen" (co-founder of Houston) but skips "Charlotte Baldwin Allen" (the required article)
-
Query repetition — LM ignores
previous_queries(3/13):- ex30: Queries "Ronnie Flex" 3 times (all 3 hops). The artist's Wikipedia article is under "High Contrast" (Lincoln Barrett's stage name), not "Ronnie Flex" — LM can't distinguish "article doesn't exist under this name" from "not yet retrieved."
- ex32: Queries "2005 Sundance Film Festival" in hops 2 AND 4 despite it being in previous_queries. Never queries "Shim Ji-ho."
- ex43: Queries "The Broken Tower" and "The Broken Tower (novel)" in hops 2 AND 3. Never queries "Hart Crane."
-
Wrong disambiguation suffix (2/13):
- ex44: Queries "Space Cowboy (song)" — needs "Space Cowboy (musician)"
- ex45: Queries "The Company (book)" — needs "The Company (Ehrlichman novel)"
-
Sub-concept vs. parent article confusion (within above categories):
- ex25 (Ancient Egyptian religion): Queries "Weighing of the Heart", "Lake of fire", "Book of the Dead" — all sub-concepts — but never "Ancient Egyptian religion" (the parent article). The second-hop scan was supposed to help here (it explicitly included "broader parent/overview article" as a case) but the LM still drilled into sub-concepts.
Key new observation from ex30 (Ronnie Flex / High Contrast): The claim contains the wrong name for the artist — it says "Ronnie Flex" but the Wikipedia article is "High Contrast" (real name Lincoln Barrett). This is a claim-error case: the LM should recognize that "Ronnie Flex" returns nothing and try "Lincoln Barrett" or "High Contrast". This class of failure (Wikipedia article uses a different name than the claim) is distinct from normal wrong-entity chains.
Failure Pattern Distribution: Iteration 7 Child Trace (Round 2, 14 failures from 50)
-
Wrong entity chains / wrong article selection (7/14): LM pursues plausible but non-gold entities:
- ex5 (Robinsons Galleria): Claim says "Metro Manila is in Turkmenistan" (intentionally false). LM queries Turkmenistan instead of pursuing Robinsons Galleria. Wrong entity introduced by a misleading claim — the LM partially follows the false context.
- ex12 (Adam Guettel / How Glory Goes): Queries "Best Score and Best Orchestrations" (a Broadway award category) and "Elana Shaddow" (wrong spelling) → Audra McDonald. Never queries "Adam Guettel" (the songwriter) or "How Glory Goes" (the title song).
- ex14 (Robert E. Howard): Correctly queries The Lay of the Land and Richard Ford. Hop 4 queries "California" instead of "Robert E. Howard." Wrong entity in hop 4.
- ex30 (Additi Gupta / Ishqbaaaz): Queries Star Plus → Qubool Hai → Star India. Never queries the actress (Additi Gupta) or the required drama series (Ishqbaaaz).
- ex39 (The Greatest Game Ever Played): Correctly queries Josh Flitter but then derives "Scalplock" and "The Iron Horse" (wrong films) instead of "The Greatest Game Ever Played."
- ex50 (Swoosh / Just Do It / Dan Wieden): Queries Nike, Inc. → Wieden+Kennedy → Nike logo. Never issues the three required specific article names.
- ex123 (Denmark v Sweden UEFA Euro 2008 / Christian Poulsen): Queries general "UEFA Euro 2008 qualification" and "Denmark national football team" instead of the specific match article and Christian Poulsen.
-
Second-hop inference failure (3/14): LM retrieves the bridge article but fails to derive the next hop from reading it:
- ex31 (The Dinner Party): Correctly retrieves Barbe de Verrue and Sojourner Truth but never derives "The Dinner Party" art installation from their text. This is the same failure as ex31 in iterations 5/6 — the second-hop scan principle should fix this.
- ex82 (Moonrunners): Correctly retrieves Briscoe Darling Jr., The Dukes of Hazzard. Hop 4 queries "Uncle Jesse" (a character) instead of reading Dukes of Hazzard text to find "Moonrunners" (the 1975 film that inspired it). Persistent across iterations 4, 5, 6, 7.
- ex122 (Winnie the Pooh 2011 film): Correctly retrieves LA Urban Rangers and Huell Howser. Hop 3 queries "Backson (Home on the Range)" — wrong disambiguation. Should query "Winnie the Pooh (2011 film)." Same failure across iterations 5, 6, 7.
-
ColBERT retrieval gap (2/14): Correct entity queried but article not returned in top-7:
- ex20 (Air Lituanica): "Air Lituanica" IS queried (hop 2) but the article isn't in the final 21 docs. Likely evicted by round-robin or ColBERT returned near-misses.
- ex48 (Jonathan Lynn): "Jonathan Lynn" IS queried (hop 4) but ColBERT returns "Jonathan Griffiths", "George Lynn (composer)", "Wiley Lynn", "Uriel Lynn" — approximate-name matches — not the actual Jonathan Lynn article. Persistent across iterations 4, 5, 6, 7. This is a genuine ColBERT retrieval gap, not an LM failure.
-
Ran out of hops after initial misstep (1/14):
- ex85 (Flex club / Waves Vienna): Hops 2-3 wasted on "Ronnie Flex" (no Wikipedia article under this name). Hop 4 queries "Lincoln Barrett" → ColBERT returns "High Contrast" (found!). But "Flex (club)" and "Waves Vienna" are never queried — no 5th hop available. Also confirmed: retry mechanism fired in hop 3 but produced "Ronnie Flex" again (same entity, no Wikipedia article = LM's only candidate).
-
Missing 2+ required articles, wrong chain from start (1/14):
- ex53 (Douglas MacArthur's escape / Texas Raiders): Queries Douglas MacArthur (general biography, not the specific escape article) and Conroe North Houston Regional Airport twice (different punctuation). "Douglas MacArthur's escape from the Philippines" (specific article) and "Texas Raiders" (the specific B-17 at that airport) never queried. Duplicate-query on airport with slightly different punctuation bypassed the retry check.
Key new observation from ex53: The retry mechanism checks exact lowercase string match. "Conroe North Houston Regional Airport" vs "Conroe–North Houston Regional Airport" (with em-dash) are treated as different queries by the retry, even though they represent the same entity. The LM issued both forms, wasting a hop. Fuzzy/normalized duplicate detection could help.
Key new observation from ex48 (persistent): ColBERT for "Jonathan Lynn" consistently returns partial-name matches (Wiley Lynn, George Lynn, Uriel Lynn, Jonathans with different surnames) instead of the exact article. This is a ColBERT index/ranking issue. Possible fix: try "Jonathan Lynn (director)" or "Jonathan Lynn writer" as the query to improve precision.
Failure Pattern Distribution: Iteration 6 Child Trace (Round 2, 10 failures from 50)
-
Wrong entity chains / wrong article selection (7/10): LM pursues plausible but non-gold entities:
- ex1 (Matthew Bailes): Queries Swinburne University → Melbourne → Hawthorn, Victoria. Matthew Bailes (CAS director, a second-hop implied entity from the CAS article) never queried.
- ex2 (Allan Goldstein): Queries Charles Bronson → Leslie Nielsen → The Naked Gun. Allan Goldstein (director of the comedy) never queried despite being derivable from the Naked Gun article.
- ex24 (F.E.A.R.): Sierra Entertainment → F.E.A.R. (queried in hop 3) → Jupiter EX. F.E.A.R. WAS queried but ColBERT did not return its article in the top-7 results. Persistent failure across iterations.
- ex25 (Airlines of Africa): KLM → OR Tambo International Airport → Sun Air (wrong BA franchise carrier in Denmark). "Airlines of Africa" (Comair subsidiary) never queried.
- ex36 (Charlotte Baldwin Allen): Augustus Chapman Allen → Texas → History of Texas. Charlotte Baldwin Allen (female co-founder of Houston) never queried — the LM retrieves only the prominent co-founder.
- ex47 (Isatis): Crepis (correctly queried) → Asteraceae → Brassicaceae. "Isatis" — an entity explicitly named in the claim — is never directly queried; LM drills into family articles instead.
- ex48 (Beyond Rangoon): Victor Slezak → Johnny Depp → Ed Wood. The unnamed 1995 film (Beyond Rangoon) is never reached; LM pursues the "Johnny Depp" connection instead.
-
Retry mechanism activated but entity not identifiable (1/10):
- ex39 (Winnie the Pooh 2011 film): 5 LM calls (2 retries triggered). "Backson" queried 3 times before retries redirected. LM issues Backson → Backson → LA Urban Rangers → Backson → Huell Howser. "Winnie the Pooh (2011 film)" requires knowledge not derivable from the claim text and is never queried. Retry mechanism correctly fired on repeats but cannot fix the root entity-identification failure.
-
Correct query issued but ColBERT does not return article (1/10):
- ex16 (Jonathan Lynn): Hops 2-4 query Antony Jay → Yes, Prime Minister → Jonathan Lynn. Jonathan Lynn IS queried in hop 4 but "jonathan lynn" is not in the 21 retrieved docs. This may be a ColBERT retrieval gap (query "Jonathan Lynn" returns 7 docs but not the Jonathan Lynn article itself) or a round-robin slot displacement.
-
Specific historical season/article not inferable from claim (1/10):
- ex45 (1974-75 New York Islanders season): New Jersey Devils → Madison Square Garden → New York metropolitan area. The claim says "New York Islanders" generically but the required article is a specific historical season that cannot be derived from the claim alone.
Key new observations from iter6 trace:
- Retry mechanism is architecturally sound but insufficient alone: ex39 confirms the retry fires and prevents repeated queries but cannot fix "can't identify the right entity at all" failures.
- Explicitly-named entities still missed (Isatis): The claim says "before Isatis" — Isatis is in the claim text — but the LM never queries it directly. This is a regression from the expected behavior, suggesting the coverage-check logic in
IdentifyNextTargetstep 2 may be failing for comparison entities in the claim. - Co-founder omission persists (Charlotte Baldwin Allen): Same as iter5 ex40. The LM consistently retrieves only the prominent male co-founder and skips the female co-founder even when both names should be in the plan. Pre-planning would fix this if the plan enumerates both.
- Pre-planning catastrophic failure confirmed: The "STRONGLY PREFER" framing with a weak LM (gpt-5.4-nano, low reasoning effort) transforms any plan error into an irreversible multi-hop waste. This is a critical design constraint for any future pre-planning attempt.
Failure Pattern Distribution: Iteration 8 Child Trace (5-hop, 7 failures from 50)
-
Reasoning-to-query conversion failure (2/7): LM reasoning correctly identifies the entity but issues a different query:
- ex95 (Felicity Jones): After retrieving Rogue One (hop 4), hop 5 reasoning correctly identifies Felicity Jones as needed but issues "Game of Thrones" as the actual query — a reasoning-to-query conversion failure. Rachelle Beinart's article mentioned "Game of Thrones stunt teams" and distracted the LM. Gold articles (Rogue One retrieved, Felicity Jones and Rachelle Beinart not found).
- ex146 (Ellis Ferreira / 1997 Stockholm Open): 1997 Stockholm Open Doubles article says "Galbraith partnered Ellis Ferreira, losing in the final." LM instead concluded Mikael Tillström was Kulti's 1997 partner (confusion with 1999 data). Ellis Ferreira was never queried as the correct doubles partner.
-
Wrong disambiguation from hop 1 (1/7): Wrong article retrieved in hop 1, all subsequent hops follow wrong path:
- ex117 (This Is England / The Secret Agent TV series): Hop 1 retrieved "The Secret Agent (film)" — the 1996 Christopher Hampton film starring Bob Hoskins — instead of "The Secret Agent (TV series)" with Stephen Graham. All 5 hops followed the wrong path. None of the 3 gold articles (Stephen Graham, This Is England, The Secret Agent TV series) were found.
-
Deep ColBERT chain gap (2/7): Correct entities queryable, but no retrieved passage bridges to the gold article:
- ex129 (Stranger in Paradise / Polovtsian Dances): LM queries Borodin → Kipchaks → Cumans → Prince Igor (all reasonable). No retrieved article mentions "Stranger in Paradise" (song from Kismet musical adapted from Polovtsian Dances). The bridge between Polovtsian Dances and "Stranger in Paradise" is not in any retrieved text.
- ex141 (1974-75 New York Islanders season): LM queries New Jersey Devils → Madison Square Garden → NHL → NY metropolitan area. The specific historical season article requires inferring a year from context not present in the claim; the LM never narrows to "1974-75 New York Islanders season."
-
Round-robin displacement + query repetition (1/7): Gold article retrieved in early hop but displaced from final 21 by repeated hop 5:
- ex14 (Robert E. Howard / The Lay of the Land): Hops 1-3 retrieve correctly. Hops 4 and 5 both query "Frank Bascombe" (fictional character from The Lay of the Land), each returning 0 new docs. Robert E. Howard was at rank 7 of hop 1; with 5-hop round-robin each hop only gets 4 guaranteed slots, so hop 1's rank-7 doc is at position 25+ in round-robin order and falls outside the 21-doc cap. The model sees Robert E. Howard in
retrieved_passagesand (incorrectly) declares the entity covered in its coverage check, then wastes hops 4 and 5 on the fictional character.
- ex14 (Robert E. Howard / The Lay of the Land): Hops 1-3 retrieve correctly. Hops 4 and 5 both query "Frank Bascombe" (fictional character from The Lay of the Land), each returning 0 new docs. Robert E. Howard was at rank 7 of hop 1; with 5-hop round-robin each hop only gets 4 guaranteed slots, so hop 1's rank-7 doc is at position 25+ in round-robin order and falls outside the 21-doc cap. The model sees Robert E. Howard in
-
ColBERT entity name mismatch (1/7): Correct entity identified but wrong title form used:
- ex32 (Mars, Incorporated / Darkened Skye / Skittles): LM correctly traces chain to the Mars company but queries "Mars, Inc." — ColBERT returns Mars Canada, Mars Music, Mars family, but NOT "Mars, Incorporated" (the exact Wikipedia article title). Abbreviation fails despite correct chain reasoning.
Key new observations from iter8 trace:
- no_results_queries never fires: Confirmed across all 50 examples — ColBERT always returns at least some passages, so the zero-result feedback loop is architecturally broken for this index. Remove or repurpose.
- 5-hop slot displacement is a real regression vector: ex14 directly demonstrates how a 5-hop round-robin displaces a rank-7 result from hop 1 that was safely included in a 4-hop round-robin. This structural regression explains part of the valset decline.
- Query repetition (46% of examples) is the critical unsolved problem: The high repetition rate wastes hop budgets, reduces effective diversity of retrieved docs, and enables round-robin displacement. The programmatic retry mechanism (
_get_query_with_retry) is necessary — instruction compliance alone is insufficient. - Persistent failures across 5+ iterations: ex129 (Stranger in Paradise) appears for the first time in iter8. ex82 (Moonrunners), ex122 (Winnie the Pooh 2011 film), ex31 (The Dinner Party), ex14 (Robert E. Howard) persist from previous iterations. These represent inherent limitations of the claim→entity→ColBERT chain approach for deeply-implied or misnamed entities.
Key Technical Observations (updated post iteration 25)
-
Current best valset (candidate 14, iter21) is the base: 4+1 conditional hop, asymmetric k (hop1=6, hops2-4=5, hop5=12), incremental dedup, all-queries tracking, priority interleaving (hop1[:6] first, then hops 2-5 4-way round-robin for positions 7-21 when hop5 fires; 4-hop equal round-robin when hop5 doesn't fire), context trimming (hop1[:6] to context2, hop2[:5]+hop3[:5] to context3/context4, hop2[:4]+hop3[:4]+hop4[:4] to context5), retry mechanism (
_normalize_query+_get_query_with_retrywith dash/hyphen normalization + NONE_PATTERNS guard), seen-titles guard for hop5, fruitless-query tracking (all_fruitless_queries+fruitless_str()+fruitless_queriesInputField), phantom-entity guard in Steps 1/3, false-presence Step 2 example, sub-article false-coverage fix in Step 2 (with type-qualifier fix from iter20), Step 1 claim-verbatim self-check, Step 3 disambiguation suffix guidance + CRITICAL type-qualifier enforcement (iter21), strengthened Step 4 body-scan patterns (including multi-membership bullet, anti-fame-bias, defunct entity pattern, parent company/owner bullet, town/location-of bullet, event venue bullet), partner bullet clarification, Step 1 extended to routes/genera/scientific theories. Best valset is candidate 14 (iter21, 0.8748). NEXT IMPROVEMENT TO ADD: full legal name variant coverage fix (from iter24/25) + code-level hop5 fire-rate reduction — apply to candidate 14 as a standalone. -
Step 3 CRITICAL type-qualifier enforcement (iter21): Adding a CRITICAL-flagged rule with explicit bad→good example ("F.E.A.R." → "F.E.A.R. (video game)") dramatically improved LM compliance vs. the softer prior guidance (~6/250 uptake). Confirmed valset improvement: +3.5% relative (0.8551→0.8748). The lesson: strong directive framing (CRITICAL marker + negative example) is safe for TYPE/MEDIA disambiguation (where the claim itself provides the qualifier — no inference needed), unlike entity SELECTION where strong framing causes over-triggering.
-
CRITICAL label for COVERAGE/SCOPE rules is dangerous — confirmed by iter25: Iter25 tested a CRITICAL PERSON COVERAGE RULE ("org/film article naming a person does NOT cover their biographical article") and produced a −5.7% valset regression despite a +7.2% subsample gain. The CRITICAL label drove universal LM compliance, causing it to query biographical articles for every person mentioned in any retrieved article — even non-gold entities like directors and minor cast members. The rule is conceptually correct for the Matthew Bailes class (person IS required gold fact but org coverage doesn't count), but the universal CRITICAL framing removes all conditionality. Fix: a non-CRITICAL version conditioned on "claim explicitly names or implies this person through a direct relationship" would provide the benefit without the over-triggering cost.
-
Parent company bullet ordering risk (iter21 new observation): The Step 4 parent company extraction bullet may cause the LM to shortcut ownership chains, skipping an intermediate required product/brand article. When the product itself is a required supporting fact (e.g., Skittles in the Darkened Skye claim), the LM should query the PRODUCT first and derive the parent company from its article. The fix: add a condition to the bullet — "only output the parent company if the product/brand article is ALREADY in retrieved docs; otherwise, output the product first."
-
✅ Disambiguation suffix coverage check bug (FIXED in iter20): The iter19 bug — where Step 2's sub-article wording inadvertently blocked VALID type-qualifier coverage — has been resolved. Step 2 now explicitly distinguishes: sub-page suffixes ("bibliography", "filmography", "discography", "early life", "health" — do NOT cover X) vs. type-qualifier suffixes ("film", "TV series", "video game", "song", "album", "musician", "artwork" — DO cover X). Confirmed fix: The Dinner Party (artwork) in iter20. The F.E.A.R. (video game) class is also fixed by this wording.
-
seen_titles pollution: NEVER increase k for intermediate hops (iter16 Round 1 confirmation): k=12 for hops 2-4 caused −10.4% subsample regression. The mechanism: each intermediate hop retrieves 12 docs but only 4 go to round-robin output (4-way priority interleaving allocates 4 slots per hop for hops 2-4). The other 8 docs per hop land in
seen_titleswithout appearing in the output. A gold article at rank 5-12 of an intermediate hop is "silently consumed" — blocked from appearing in the final output AND blocked from any subsequent hop'sget_new_unique. Only the LAST hop that fires can safely use k=12 (no subsequent hops to pollute). Current architecture: hop5 is the last hop in ~92% of examples; when hop5 query is a repeat, hop4 is last. -
k=12 for hop5 is safe and confirmed useful (iter16): hop5 is the last retrieval hop (no subsequent seen_titles consumer). k=12 retrieves 12 docs; all go to
seen_titles, and new unique ones enter the priority interleave. The 3-slot allocation for hop5 in priority interleaving means at most 3 enter the final output, but the extra docs don't pollute any future hop. Confirmed fix: ex42 (Winnie the Pooh 2011 film) likely benefited from higher coverage in hop5. Keep k=12 for hop5. -
Step 4 director/actress/choreographer pattern: RISKY — confirmed valset regression (iter16): The pattern caused a 3.5% valset drop (0.8450 → 0.8152) when included in iter16. When multiple film articles exist in the retrieved context, the LM applies the pattern to the WRONG film — e.g., retrieving True Romance and identifying Johnny Depp from it instead of querying Beyond Rangoon (the correct gap). The pattern should only fire when the claim EXPLICITLY implies a specific person behind a specific already-retrieved film (i.e., the claim contains phrasing like "directed by" or "starred in" and names the film). As a general body-scan trigger it is too broad. Do NOT reuse the broad director/actress bullet from iter16; tighten its trigger condition before re-applying.
-
None-query guard (iter15/16): Low-frequency (fired once in 50 examples across all observed traces), but structurally correct and zero-risk. Keep in architecture.
-
Hop5 fire rate is ~92% on iter16 seed (46/50). The iter14 estimate was ~80%. The true rate may vary by seed but is consistently very high. Almost all examples pay the 0.002 penalty. Step 4's body-scan nearly always surfaces some new entity, making hop5 nearly unconditional in practice.
-
Fruitless detection scope is limited to true zero-result queries: iter13 confirmed that
Isatis(genus) query returnsIsatis tinctoria(species, a new unique doc), so it is NOT marked fruitless. The mechanism correctly catches "entity has no Wikipedia article" cases but cannot detect "wrong article returned at top rank" cases. For the latter, disambiguation suffix retry is the appropriate fix. -
Context trimming is a confirmed structural fix: With k=7 and 4-hop round-robin, rank-7 docs from hop1 land at position 25 (evicted). Passing
hop1_new[:6](not all 7) to context2 prevents the LM from falsely marking evicted docs as "covered." Confirmed by ex31 (Sojourner Truth fix) and valset improvement (+3.8% relative). Similarly for hop2/hop3: pass[:5]slices to subsequent hop contexts. -
Pre-planning with gpt-5.4-nano at reasoning_effort=low is confirmed unreliable at ALL framing strengths: Iter6 (strong priority) and iter12 Round 1 (soft advisory, claim-text-only) both failed. Even restricting to claim-text entities, the LM copies typos verbatim and includes peripheral entities. Do NOT attempt pre-planning again with this LM unless: (a) using a stronger model/higher reasoning effort for the planning step, (b) adding a code-level ColBERT-existence check to validate each plan entity before using it, or (c) using NER-based extraction instead of LM generation for the planning step.
-
Candidate 5 (5-hop) is definitively not a productive base for incremental changes: Every incremental prompt change applied to the 5-hop architecture (iters 9, 10) has been neutral or negative. The slot displacement problem inherent to 5-way round-robin amplifies every LM behavioral change. Only try 5-hop again if introducing a fundamentally new structure (e.g., conditional hop 5).
-
Step 4 directive strength is a critical parameter: Three evidence points all confirm the same pattern — any language that overrides Step 3 causes premature/wrong-path triggering: (a) iter5 "PRIORITIZE second-hop entity" caused F.E.A.R. regression; (b) iter9 PRIORITY RULE ("prefer implied over peripheral claim entities") caused dangerous ambiguity; (c) iter10 "OUTPUT THAT IMPLIED ENTITY AS YOUR QUERY IMMEDIATELY" caused Queens (ex35) regression. The correct Step 4 framing is moderate: "output the most important implied entity from the text that directly advances the claim chain" with no "IMMEDIATELY," no "STRONGLY PREFER," no "over remaining claim entities" language.
-
Step 1 entity enumeration is incomplete for abstract concept articles: iter10 ex38 confirmed — "Asymptotic safety in quantum gravity" is explicitly named in the claim as a scientific concept but Step 1's entity types ("people, places, organizations, works, songs, films, awards, titles") do not cover "theories, scientific concepts, mathematical models, proposals." Extending Step 1 to include these should fix at least 1-2 per subsample.
-
Phantom-entity guard (iter11) insufficient by itself: The guard tells the LM to skip descriptive phrases like "feather of truth," "lake of fire." It fixed ex100 but not ex65 (LM still invented these in Step 3 despite the instruction). Code-level enforcement is needed: when
get_new_unique()returns an empty list after a hop (zero NEW unique docs retrieved), mark that query as fruitless AND add it tofruitless_queries(separate fromprevious_queries) so the NEXT hop can use Step 4 scan immediately rather than retrying a semantically equivalent query. -
Partner extraction is a confirmed recurring failure sub-type (ex38 and ex146 in iter11 trace): When a 2-person event article is retrieved, the LM queries one of the two people rather than specifically targeting the PARTNER of the claim's named subject. Step 4 example for "doubles partner" was added in iter11 but did not fix these cases — the example wording may need to be more explicit: "e.g., if the claim says 'partner of [X]' and retrieved article lists two players/names, output the one who is NOT [X]."
-
Wrong entity chains remain the primary failure mode (~4/15 in iter10 trace categorized as second-hop inference, ~3/15 as explicitly-named entities skipped): Persistent and systematic. Soft pre-planning remains the highest-priority architectural change not yet tried successfully.
-
Second-hop inference is the second-largest failure mode (4/15 in iter10 trace): Moonrunners (10+ iterations persistent), On the Buses (persistent), Matthew Bailes (persistent), Airlines of Africa (persistent). The problem is LM extraction quality — the LM reads the bridge article but does not select the right implied entity. A clear but non-aggressive Step 4 framing is needed.
-
Retry mechanism fires in ~20% of 4-hop examples (10/50 in iter11): More frequent than earlier estimate of 8% (from iter9). It is net-positive and should remain in the architecture. Only failure case is ex85 (Ronnie Flex — no Wikipedia article under any form the LM tries).
-
em-dash / hyphen normalization gap in retry:
_normalize_querydoes not treat hyphens and em-dashes as equivalent. ex53 (Douglas MacArthur's escape) had two distinct airport queries that differed only by a hyphen, bypassing the duplicate check. Easy low-risk fix: normalize-,–,—to spaces in_normalize_query. -
±3% per-run stochasticity is a hard evaluation constraint: Confirmed in iter9 (same SHA scored 0.7570 and 0.7171). Changes below ±5% expected effect cannot be confirmed with a single subsample eval. Either make large structural changes or run multiple evals before accepting/rejecting.
-
5-hop round-robin changes slot allocation — risk of regression: Moving from 4-hop to 5-hop round-robin reduces each hop's guaranteed slot count from ~5 to ~4. Articles at rank 5-7 in earlier hops that were previously included can now be displaced past position 21. This is a structural regression risk confirmed in ex14. If a 5th hop is to be added, it MUST be conditional (only run when needed) to avoid displacing existing passing articles.
-
no_results_queries is completely inert for this ColBERT index: ColBERT always returns at least some passages for every query. Do NOT build future features around the premise that ColBERT returns empty results. The true failure mode is not "zero results" but "results that don't contain the gold article."
-
Title-list context format is structurally incompatible with round-robin interleaving: Confirmed bad idea. Do NOT combine.
-
"STRONGLY PREFER" framing is fatal with weak LMs: Iteration 6 confirmed. Any future pre-planning must use advisory/soft language.
-
ColBERT retrieval gap confirmed — Air Lituanica and Jonathan Lynn are especially persistent: Air Lituanica queried correctly but ColBERT returns "Lituanica" variants. Jonathan Lynn is now FIXED by the k=6 for hop1 change (iter17) — it was a seen_titles pollution failure, not a true ColBERT ranking gap: the article was at rank-7 of hop1 and polluted
seen_titles. With k=6, it is no longer polluted and later hops find it. Also confirmed for "Mars, Incorporated": abbreviations fail. Try disambiguation suffixes: "Air Lituanica airline". -
Second-hop inference failures are consistently 3-4 cases per subsample: Moonrunners (10+ iterations, LM retrieves James Mitchum/Dukes of Hazzard but not the 1975 film), On the Buses (persistent — Harry Booth article retrieved but LM goes to filmography/Go for a Take instead), Matthew Bailes (persistent — CAS article retrieved but LM goes geographic). The concurrent body-scan principle (iter5) is validated as correct but Step 4 language must remain moderate.
-
Misleading/false-premise claim entities are a distinct failure mode: Christian Poulsen called "Nigerian midfielder" (ex44, iter10), Metro Manila "in Turkmenistan" (iter9). Hard to fix without claim veracity understanding.
-
Disambiguation suffixes remain critical: Wrong-suffix failures persist (The Secret Agent film vs TV series, iter10 ex42).
-
Round-robin displacement bug: A gold article correctly retrieved at rank 7 of an early hop can be pushed past position 21 when later hops waste slots. The model sees the article in
retrieved_passagesand (incorrectly) declares it covered, but it never appears inretrieved_docs. -
Search penalty: 4 hops = 0.004 penalty (score 0.996 per pass). 5 hops = 0.006 penalty (score 0.994 per pass). The extra 0.002 per example costs the valset score materially if the number of new fixes is small.
-
LM reranker with gpt-5.4-nano at reasoning_effort=low is NOT viable for full 21-slot selection (iter22): The model fails to reliably select 21 specific 1-based indices from a 25-30 item pool. Capability mismatch — not a prompt design problem. A conservative reranker (only fill last 2-3 slots, not all 21) would limit LM error surface. Alternatively, a code-level scoring heuristic (e.g., TF-IDF claim-title overlap) could implement reranking without LM invocation.
-
Prompt improvements from candidate 14's asymmetric-k architecture are NOT portable to k=7 architecture (iter22): The iter18-21 improvements — especially Step 2 sub-article false-coverage wording — were designed for hop1=6, hops2-4=5, hop5=12. Porting verbatim to k=7 (candidate 9's architecture) caused regressions. Always test improvements on the architecture they were designed for; porting across architectures requires re-validation.
-
Film→performer Step 4 bullet is timing-dependent (iter22): The bullet helps extract the lead actress/director from a film article IF the film is retrieved in hops 1-4 (leaving a subsequent hop to query the person). When the film is only in hop5 (the last hop), the bullet has zero effect. For ex95 Felicity Jones class, the fix requires the film (Rogue One) to appear in an earlier hop — which means better entity identification from the claim: Rachelle Beinart's stunt work connection should drive the LM to query Rogue One in hop2 or hop3.
-
Broad-topic-chain failure class (ex18 Heathrow, iter22): The LM sometimes pursues list/category articles ("List of busiest airports in the United Kingdom") instead of resolving a claim description ("the busiest airport outside London") to a specific named entity ("Heathrow Airport"). Step 1 extension may help: "if the claim contains a superlative or unique descriptor ('the busiest X', 'the only Y in Z'), identify the specific named entity that fills that role and enumerate it as an entity to retrieve."
Highest-Leverage Opportunities (ranked, post iteration 25)
CRITICAL: Build on candidate 14 (iter21, valset 0.8748 = current best). Do NOT build on candidate 17 (iter26, valset 0.8351), candidate 16 (iter25, valset 0.8252), or candidate 10 (iter16, valset 0.8152). Do NOT build on candidate 5 (iter8, unconditional 5-hop). Do NOT attempt pre-planning again without code-level entity validation. Do NOT use CRITICAL PERSON COVERAGE RULE in universal form. Do NOT add COMPARISON/RANKING bullet in isolation without further isolation testing — iter26 data suggests it causes ~0.04 valset regression.
-
Conditional 5th hop (only run when needed)DONE in iteration 14 (candidate 9, valset 0.8450). -
Asymmetric k: hop1=6, hops2-4=5, hop5=12DONE in iteration 18 (candidate 11, valset 0.8550). -
Sub-article false-coverage fixDONE in iteration 18 (Robert E. Howard bibliography class).⚠️ Needs patchPATCHED in iteration 20: type-qualifier suffix coverage check fixed — "X (film/TV series/video game/artwork)" now correctly recognized as covering X. Full coverage check is now correct for sub-pages, type-qualifiers, name-form variants, and disambiguation suffixes. -
Step 1 claim-verbatim self-checkDONE in iteration 18. -
Multi-membership bullet for multi-org membership claimsDONE in iteration 19 (Glenn Hughes fix confirmed; generalizes to multi-org membership claims). -
Fix disambiguation suffix coverage check bug (iter19 discovery)DONE in iteration 20: Step 2 now explicitly allows type-qualifier parentheticals while blocking sub-page suffixes. Confirmed fix: The Dinner Party (artwork). Valset improvement: +0.0001 (negligible — the class of examples requiring rare type qualifiers is small in the valset). -
Fix parent company bullet ordering to prevent skipping intermediate product articleATTEMPTED in iteration 23 (ORDERING RULE added to parent company bullet in candidate 14). Result: test inconclusive — ex32 (Darkened Skye/Skittles) was not in the iter23 subsample seed, so the fix was not directly tested. The ORDERING RULE is in the current program (candidate 15) and candidate 14's architecture already has the standard parent company bullet. If Skittles/Mars class persists on the valset, consider reinforcing the ordering rule.
7b. Full legal name variant coverage fix (iter24 confirmed structural) DONE in iteration 25 (carried from iter24) and retained in iteration 26. The fix "Boris Becker covers Boris Franz Becker" is confirmed structural and low-risk. When building on candidate 14 in the next iteration, include this fix as a standalone addition. Note: iter26 retained this fix alongside the COMPARISON/RANKING bullet; the valset was 0.8351 vs candidate 14's 0.8748 — the delta is attributed to COMPARISON/RANKING, not the formal-name fix.
-
Tighten hop5 firing condition to reduce ~95% fire rate: Hop5 fires in 95.5% of examples (iter24 trace: 42/44 passing used 5 searches — highest measured rate), paying the 0.002 penalty nearly universally. A tighter condition: only fire hop5 if
len(hop4_new) == 0(hop4 returned zero new unique docs) ORlen(hop4_new) < 3. Targets genuine hop-exhaustion while skipping examples where 4 hops already retrieved all docs. Expected to reduce fire rate to ~20-30%, recovering ~0.001 avg score. Low risk (non-firing examples fall back to 4-hop round-robin). This remains the highest-priority untested structural refinement — never tested in 25 iterations. -
Code-level hop1 disambiguation fix for TV/film confusion (ex117 class): Disambiguation suffix guidance in Step 3 has minimal practical uptake. ex117 (Secret Agent TV series) is a persistent hop1 failure — ColBERT returns the 1996 film instead of the 2016 TV series. Consider a code-level post-hop1 check: if the claim implies a TV series and hop1 returned a film article for that title, retry hop1 with "(TV series)" appended. Medium complexity; high value for this class of failure.
-
ColBERT disambiguation suffix strategy for persistent ranking failures:
Moonrunners(8+ iterations),Swoosh(7+ iterations),Asymptotic safety in quantum gravity(persistent),Airlines of Africa(persistent) remain unresolved.F.E.A.R.was fixed by the CRITICAL type-qualifier enforcement in iter21 (but stochastically regressed in iter23 — compliance is ~85%). Consider a code-level fallback in_get_query_with_retry: when a query is fruitless (returns no new unique docs), automatically retry with a Wikipedia disambiguation suffix. Medium risk. -
Partner extraction Step 4 example refinement: Renáta Tomanová (false-premise claim, persistent 8+ iterations) and Ellis Ferreira remain unresolved. For false-premise partner claims (e.g., "Boris Diaw partner in mixed doubles"), the LM is confused because the named person (Boris Diaw the NBA player) doesn't exist in tennis context. Hard to fix. For legitimate partner extraction failures (Ellis Ferreira), explicitly specify "output the partner — find the TWO participants in the event article, output the one who is NOT already retrieved."
-
Host/presenter extraction from show article (Bill Cullen / Pat Ashton pattern): HOST/CAST MEMBER bullet was added in iter23 to candidate 15, but did NOT fix ex126 (On the Buses/Pat Ashton) despite Thick as Thieves TV series being retrieved. The Thick as Thieves article may not prominently name Pat Ashton in the leading text snippet, or the LM deprioritizes the host-scan when other claim entities dominate. Options: (a) strengthen the HOST/CAST MEMBER bullet wording to require the LM to explicitly scan for star/host credits in any retrieved show article; (b) add a concrete example that exactly matches the "TV series names its star" pattern; (c) investigate whether the Thick as Thieves Wikipedia article actually names Pat Ashton prominently. Still unresolved after iter23 — bullet in place but not firing.
-
Song/adaptation extraction from musical article (ex129 Stranger in Paradise): Kismet (musical) IS in retrieved titles across multiple seeds, but "Stranger in Paradise (song)" is never extracted. The LM pursues Borodin → Kipchaks → Prince Igor instead of reading the Kismet article to find the adapted song. Consider a new Step 4 bullet: "the specific SONG, ARIA, or MUSICAL PIECE named in a retrieved musical or theatrical article as an adaptation or standout number — e.g., if a retrieved musical article mentions 'Stranger in Paradise' as its hit song (adapted from Borodin), query that song's article directly." This is a distinct pattern from the CREATOR bullet (which targets people) and from the existing named-song bullet (which may not be specific enough). Not yet attempted — persistent 10+ iteration failure.
-
Air Lituanica — defunct entity inference: The LM retrieves Vilnius Airport and AirBaltic but does NOT infer that a defunct airline (Air Lituanica) needs its own article. Hop5 never fires because the LM declares all entities covered (ex85 and ex92 both showed only 4 searches used — LM declared coverage complete). A Step 4 defunct entity pattern was added in iter20 but did NOT fix this — the Vilnius Airport article text doesn't appear to prominently mention Air Lituanica. Alternative approach: code-level check that fires hop5 when only 4 searches were used AND the claim explicitly mentions an entity that "ceased operations" or "was dissolved." Medium complexity.
-
Charlotte Baldwin Allen (ex114) — CO-FOUNDER bullet non-compliance: CO-FOUNDER bullet added in iter23 but did not fire. Two hypotheses: (a) Augustus Chapman Allen's Wikipedia article body text doesn't mention Charlotte Baldwin Allen prominently enough in the retrieved snippet; (b) the LM doesn't recognize the co-founding context when reading the Allen article. If (a), no prompt fix is possible — need a different retrieval path (e.g., querying "Charlotte Baldwin Allen" directly if "Allen Houston" is retrieved). If (b), consider strengthening the CO-FOUNDER bullet with a more explicit trigger or concrete example. Would need to verify whether Charlotte Allen appears in the Augustus Allen article snippet.
-
Shim Ji-ho (Sundance festival anchor) — systemic loop: The LM repeats "2005 Sundance Film Festival" 4+ times despite retry mechanism. In iter23, hop5 didn't even fire (only 4 searches). The Green Chair and Suh Jung articles are found but Shim Ji-ho (the co-lead actor) is never reached. Possible fixes: (a) code-level count check — when a normalized query appears in
previous_queries2+ times, force Step 4 body-scan mode only; (b) Step 4 bullet for co-lead actor extraction from a retrieved film article when the claim implies a second principal actor. Medium complexity. -
Misleading claim entity discrimination: "Charpes Lane" (typo), "Nigerian midfielder" (wrong nationality), "Boris Diaw" (wrong sport), garbled birth names cause systematic failures. Hard to fix without claim veracity understanding.
-
⚠️ Do NOT attempt pre-planning again without code-level validation: Confirmed failed twice (iter6 strong priority, iter12 soft advisory). The LM at reasoning_effort=low cannot reliably extract claim entities.
-
⚠️ Fruitless detection does NOT fix ColBERT ranking gaps:
Isatisquery returnsIsatis tinctoria(new unique doc, not marked fruitless). For ranking gaps, disambiguation suffix retry is the correct fix. -
⚠️ Do NOT increase k above the slot count for any hop: Confirmed by iter16 Round 1. Only the LAST hop that actually fires can use k=12. Correct limits: hop1=6, hops2-4=5, hop5=12.
-
⚠️ Do NOT reuse the Step 4 director/actress/choreographer bullet from iter16: Confirmed caused valset regression (0.8450→0.8152). Only re-introduce with a tighter trigger condition.
-
⚠️ Do NOT attempt LM reranker full 21-slot selection with gpt-5.4-nano at reasoning_effort=low: Confirmed failed (iter22). The model cannot reliably select 21 precise indices from 25-30. A conservative reranker (only last 2-3 slots) or code-level scoring heuristic is the correct approach.
-
⚠️ Always build on candidate 14 (iter21, asymmetric-k architecture) for next iteration targeting best valset: Candidate 15 (iter23, 0.8550) and candidate 16 (iter25, 0.8252) are both below best. Iter22 was built on candidate 9 (k=7 uniform) and caused regressions. Prompt improvements coupled to asymmetric-k CANNOT be ported to k=7 without re-validation.
-
⚠️ New Step 4 bullets carry cumulative over-triggering risk: Iter23 added 4 new Step 4 bullets and the valset dropped −2.3% despite a subsample gain. Iter24 added 2 new bullets (CREATOR + COMPARISON/RANKING) to candidate 14 and again caused ~5/50 soft regressions (examples shifting from 4-hop to 5-hop). The cumulative pattern is clear: each pair of new body-scan bullets costs ~5/50 examples in soft penalty regressions. When adding multiple new body-scan bullets, the LM may apply some spuriously when no matching entity exists in the retrieved article — wasting a hop. Future bullet additions should be targeted at classes confirmed to have the target entity prominently in retrieved article text. Avoid adding more than 1-2 bullets per iteration. Consider whether each bullet genuinely generalizes beyond subsample examples before including it — CREATOR and COMPARISON/RANKING bullets appear useful for specific confirmed cases but may be too broad for general use.
-
Superlative/unique-descriptor entity identification (iter22 observation, partially addressed by COMPARISON/RANKING bullet in iter23): The COMPARISON/RANKING bullet fixed ex18 (Heathrow Airport) in iter23 subsample but FAILED to fix it in iter25 subsample (LM queried broad entities first, exhausting hop budget before body-scan). Step 1 extension would help more directly: "if the claim contains 'the busiest X', 'the only Y in Z', 'the largest W' describing an entity NOT explicitly named, identify the specific Wikipedia article for that entity by its own name." This puts the superlative resolution in Step 1/3 (where the LM directly queries "Heathrow Airport") rather than deferring to Step 4 body-scan (which may not execute in time). Medium-high confidence this would fix the Heathrow class of failures.
-
⚠️ Do NOT use CRITICAL PERSON COVERAGE RULE in universal form: Iter25 confirmed: the rule "org/film/work article naming a person does NOT cover that person's biographical article" causes −5.7% valset regression when labeled CRITICAL and applied universally. The Matthew Bailes failure class requires a CONDITIONED version: "query a person's biographical article ONLY IF the claim explicitly mentions that person by name or implies them through a direct claim relationship (e.g., 'the director of X' when X is retrieved) — NOT just any person mentioned as a role-holder in a retrieved article." The conditioned version could be tested as a non-CRITICAL rule with specific examples to guide activation.
-
⚠️ COMPARISON/RANKING bullet likely causes ~0.04 valset regression when used alone: Iter23 (candidate 14 + 5 bullets including COMPARISON/RANKING) got valset 0.8550 (−0.0198 vs candidate 14). Iter26 (candidate 14 + formal-name fix + COMPARISON/RANKING alone) got valset 0.8351 (−0.0397 vs candidate 14). The formal-name fix is expected ~neutral. This implies the COMPARISON/RANKING bullet alone costs approximately 0.04 valset points — likely because it triggers broadly on any comparison text in retrieved articles (not just the exact pattern the claim describes). If retested, must be paired with a stronger trigger condition: "ONLY if the retrieved article EXPLICITLY names the comparison entity using a superlative matching the claim's description (e.g., 'X is the busiest airport in the UK') — NOT general comparative mentions." Do NOT add as a standalone change to candidate 14 without first reformulating the trigger condition.
-
Tightly-conditioned film→performer bullet (iter26 new observation): Iter26 trace confirms: Rogue One IS retrieved in hop4, hop5 is available for querying Felicity Jones, but hop5 chose "Game of Thrones" instead. The film→performer bullet (removed after iter16's −3.5% valset regression) is needed but must be conditioned: only fire when (a) the claim explicitly implies "the actress/actor who starred in [film]" AND (b) the specific film article is in retrieved_docs from hops 1-4. The iter16 version triggered too broadly on ANY retrieved film article. A conditioned version with a claim-relevance check could fix the Felicity Jones class without broad regression. Medium-high priority — the film (Rogue One) is now consistently found in hop4 across multiple seeds, making the timing correct for a hop5 person query.