Library+web research for narrow-margin architecture-critical decisions

Established 2026-04-25 during Catala spec Topic 1 scope-approval. 11th session auto-deep-dive win via novel pattern.

The pattern

Trigger conditions (all three must hold):

  1. Narrow margin — decision margin between top 2 options is <2pp under weighted scoring
  2. Architecture-critical — the decision meaningfully shapes downstream work (not trivial wording or sequencing)
  3. Ecosystem-mature — the domain has a production ecosystem with prior-art worth researching (not novel domain)

When triggered, do:

  1. Library deep-read — check ~/off-github/library/indexed/ for relevant notes files; read them thoroughly rather than just noting they exist
  2. Web research — search for recent developments (2024-2026), production modules, ecosystem sub-projects, release notes, pre-existing-similar-work
  3. Cross-reference — match discoveries against the scorecard criteria; update scores based on production-ecosystem evidence

Why

Narrow-margin decisions mean scorecard criteria are roughly balanced. Library+web research surfaces structural signals that the scorecard criteria missed:

  • Production-module separations (e.g., Catala has catala-explain as distinct module — validates CatalaResult-as-first-class-component)
  • Release maturity (v1.0/v1.1 production stable substantially mitigates “research-group dependency” risks)
  • Pre-existing similar work (e.g., French inheritance Catala prior art already exists)

These are architectural facts, not scorecard assumptions. Incorporating them into scoring is research-grounded update, not bias.

Distinct from prior auto-deep-dive patterns

  • Framework-rediscovery (wins 1-9): finds higher-scoring option via framework-reuse (e.g., A-23 vi-6 applied to 2nd classifier)
  • Levelness-reframe (win 10): finds same-total option with better score variance (e.g., Catala ι with light-XKOS)
  • Library-web-research (win 11): finds production-ecosystem evidence that shifts scoring of existing options

All three patterns are research-grounded; this one uses external research rather than internal session-pattern application.

Exemplar — 2026-04-25 Catala scope-approval

Initial state: γ (Expanded-8 with CatalaInvocation) winning 85.3% (0.8pp over δ Expanded-9 with CatalaResult).

Technical-priority weighting (Rich removed c4+c10): δ winning 87.2% (0.6pp over γ). Still narrow margin.

Research trigger: Rich directive: “look in the library and search online to find anything to help improve options γ and δ — take the perspective of the world’s leading Catala expert.”

Research output:

  1. Library deep-read of merigoux-catala-popl2021/notes.md + ray-policy-as-code/notes.md + flatt-akoma-ntoso-profiles/notes.md — 660 total lines of verbatim quotes + synthesis
  2. Web research for Catala 2024-2026 developments + French inheritance prior art
  3. Fetched github.com/CatalaLang/catala-explain + Catala releases page + catala-lang.org

Discoveries:

  1. catala-explain production module (separates explanation-trace; validates δ)
  2. Catala v1.0.0 (Nov 2024) + v1.1.0 “bac d’Eloka” (Jan 2026) stable (v1.1.0 “intermediate variable states” feature maps to δ’s CatalaResult)
  3. catleg French legislative tooling + pre-existing French inheritance Catala work

Score updates applied:

  • γ: c6 9→8 (doesn’t match ecosystem separation); c12 9→8 (implicit Result less cleanly maps to prov:Entity)
  • δ: c7 9→10 (catala-explain ecosystem maturity); c11 9→10 (CatalaResult captures composed outputs)

Final margin: δ 88.6% vs γ 84.5% = 4.1pp (widened from 0.6pp). Research pattern shifted margin 7x.

How to apply

Before a narrow-margin architecture-critical decision:

  1. Check scorecard: is margin between top 2 options <2pp? Is the decision architecture-critical? Is the domain ecosystem-mature?
  2. If YES to all three: pause and do library+web research FIRST before locking
  3. Spend 30-60 minutes on research:
    • ls ~/off-github/library/indexed/ | grep -iE "relevant|keywords"
    • Read notes.md files in relevant library items
    • Web search for “recent developments” / “production modules” / “release notes”
    • Fetch specific ecosystem repos for architectural signals
  4. Update scorecard scores based on discoveries (honest update; document what changed and why)
  5. Re-present scorecard with “research-grounded update” section showing which options gained/lost points and why

Do NOT:

  • Skip this step for narrow-margin decisions (margin <2pp is literally “could go either way”)
  • Artificially widen margins via research (if research doesn’t shift scores, accept the narrow decision)
  • Treat ecosystem-immature domains as candidates for this pattern (research won’t find production patterns)

Anti-patterns

  • Research without updating scores (performative research; same decision pre-determined)
  • Biased research (only search for signals supporting pre-preferred option)
  • Ignoring library in favor of web search (library notes are already-synthesised evidence; web is raw)
  • Research on every decision (inefficient; reserve for narrow-margin architecture-critical cases)
  • feedback_always_check_library_indexed_first — broader library-first discipline; this pattern is specific trigger-conditioned application
  • feedback_auto_deep_dive_via_framework_rediscovery — prior auto-deep-dive wins 1-9
  • feedback_reframe_beats_reweight — levelness-reframe win 10 (2026-04-25 Topic 4 ι)
  • feedback_automatic_deep_dive_when_options_feel_imperfect — related trigger pattern

Sources

  • 2026-04-25 Catala spec Topic 1 scope-approval session (Rich’s “take the perspective of the world’s leading Catala expert” directive)
  • Library deep-read of 3 indexed items (Merigoux Catala POPL + Ray Policy-as-Code + Flatt Akoma Ntoso profiles)
  • Web research: github.com/CatalaLang/catala-explain + releases + catleg