{
  "project": {
    "name": "Efficient New Language",
    "short_name": "EML",
    "canonical_domain": "efficientnewlanguage.org",
    "maintainer": "Neo.K / EveMissLab",
    "license": "Apache-2.0",
    "patent": "Taiwan Utility Model M672933 (Taiwan only)",
    "repository": "https://github.com/kakon77777-commits/efficientnewlanguage",
    "status": "active-experimental",
    "spec": "EML-LANG-2026-v1.0",
    "eml_impl": "0.1.0",
    "ai_layer_version": "0.1.0",
    "updated": "2026-07-19"
  },
  "purpose": {
    "summary": "Machine-readable corpus and bounded tool interface for EML — a deterministic semantic-overlay layer that compresses high-frequency program intent into symbols and transpiles, rule-based and reversibly, to Python.",
    "target_consumers": [
      "LLM crawlers",
      "autonomous agents",
      "reasoning systems",
      "documentation agents",
      "future model ingestion pipelines",
      "programmatic clients"
    ]
  },
  "entrypoints": {
    "human_home": "/",
    "playground": "/app",
    "docs": "/docs",
    "origins": "/origins",
    "related": "/related",
    "llms": "/llms.txt",
    "ai_index": "/ai/index.md",
    "manifest": "/ai/manifest.json",
    "version": "/ai/version.json"
  },
  "corpus": [
    {
      "id": "eml-origin",
      "path": "/ai/corpus/eml-origin.md",
      "format": "markdown",
      "role": "conceptual genealogy"
    },
    {
      "id": "eml-u-profile",
      "path": "/ai/corpus/eml-u-profile.md",
      "format": "markdown",
      "role": "EML-U (Universal Semantic Profile) — the original, broader vision; theory-preservation stage, no engineering yet"
    },
    {
      "id": "eml-p-eml-u-compatibility",
      "path": "/ai/corpus/eml-p-eml-u-compatibility.md",
      "format": "markdown",
      "role": "subset relation, projection function, and no-silent-loss rule between EML-P and EML-U"
    },
    {
      "id": "eml-current",
      "path": "/ai/corpus/eml-current.md",
      "format": "markdown",
      "role": "current implementation explanation"
    },
    {
      "id": "eml-design-history",
      "path": "/ai/corpus/eml-design-history.md",
      "format": "markdown",
      "role": "evolution from concept to implementation"
    },
    {
      "id": "eml-engineering-notes",
      "path": "/ai/corpus/eml-engineering-notes.md",
      "format": "markdown",
      "role": "behavioral facts & invariants for generators"
    }
  ],
  "specs": [
    {
      "id": "eml-v1",
      "path": "/ai/specs/eml-v1.md",
      "format": "markdown",
      "role": "v1.0 spec digest"
    },
    {
      "id": "eml-semantic-model-v1.5",
      "path": "/ai/specs/eml-semantic-model-v1.5.md",
      "format": "markdown",
      "role": "self-contained AI-semantic spec: status vocabulary, twelve-loop taxonomy, bug/repair/criticality models"
    },
    {
      "id": "eml-grammar",
      "path": "/ai/specs/eml-grammar.ebnf",
      "format": "ebnf",
      "role": "normative grammar"
    },
    {
      "id": "eml-ast-schema",
      "path": "/ai/specs/eml-ast-schema.json",
      "format": "json-schema",
      "role": "AST schema"
    },
    {
      "id": "eml-trace-schema",
      "path": "/ai/specs/eml-trace-schema.json",
      "format": "json-schema",
      "role": "eml-trace-v1 trace schema"
    },
    {
      "id": "eml-error-schema",
      "path": "/ai/specs/eml-error-schema.json",
      "format": "json-schema",
      "role": "diagnostics & tool error schema"
    }
  ],
  "examples": [
    {
      "id": "000-arithmetic",
      "path": "/ai/examples/000-arithmetic.eml.md",
      "title": "Arithmetic & augmented assign",
      "description": "Demonstrates the two-stage `^+` rule (declare then augment) and `^*` / `^0`."
    },
    {
      "id": "001-summation",
      "path": "/ai/examples/001-summation.eml.md",
      "title": "Summation (Σ) over an inclusive range",
      "description": "The canonical EML demo: an algebraic-sum intent compressed into one symbol."
    },
    {
      "id": "002-conditional",
      "path": "/ai/examples/002-conditional.eml.md",
      "title": "Conditional & membership",
      "description": "Ternary `?:` and inclusive-range membership (`in [1:100]` → `range(1, 101)`)."
    },
    {
      "id": "003-coldhot",
      "path": "/ai/examples/003-coldhot.eml.md",
      "title": "Cold / hot functions",
      "description": "`@cold` pure logic becomes cacheable (`@functools.cache`, auto-imported); `@hot` is a marker only. Function definitions and `@cold` round-trip. `@hot` has one documented cosmetic exception."
    },
    {
      "id": "004-closure",
      "path": "/ai/examples/004-closure.eml.md",
      "title": "Closures (nested functions)",
      "description": "A nested `def` captures the enclosing parameter `n` (lexical closure)."
    },
    {
      "id": "005-recursion",
      "path": "/ai/examples/005-recursion.eml.md",
      "title": "Recursion",
      "description": "Self-recursive factorial via the ternary `?:`. `loopKind: recursive` (deterministic; not statically proven terminating)."
    },
    {
      "id": "006-mvp-number-guessing-game",
      "path": "/ai/examples/006-mvp-number-guessing-game.eml.md",
      "title": "MVP proof: a second real, recognizable program ported to EML",
      "description": "`number_guessing_game.eml` is the second \"does EML actually work for something real\" test (see [`examples/mvp-tic-tac-toe/`](../mvp-tic-tac-toe/) for the first) — a genuine, independently-authored small program expressed end to end in EML: transpiled to Python, executed, and verified against real Python via the interpreter equivalence gate."
    },
    {
      "id": "007-mvp-tic-tac-toe",
      "path": "/ai/examples/007-mvp-tic-tac-toe.eml.md",
      "title": "MVP proof: a real, recognizable program ported to EML",
      "description": "`tic_tac_toe.eml` is a \"does EML actually work for something real\" test — not a new-language-feature regression fixture like the other `examples/phaseN-*` directories, but a demonstration that a genuine, independently-authored small program can be expressed end to end in EML: transpiled to Python, executed, and verified against real Python via the interpreter equivalence gate."
    },
    {
      "id": "008-todo-list-manager",
      "path": "/ai/examples/008-todo-list-manager.eml.md",
      "title": "Case corpus: a self-authored class-based todo-list manager",
      "description": "`todo_list_manager.eml` is the third case in a self-authored batch (see [`examples/unit-temperature-converter/`](../unit-temperature-converter/) and [`examples/word-frequency-counter/`](../word-frequency-counter/) for the other two) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "009-unit-temperature-converter",
      "path": "/ai/examples/009-unit-temperature-converter.eml.md",
      "title": "Case corpus: a self-authored unit-conversion program",
      "description": "`temperature_converter.eml` is the first case in a self-authored batch (see [`examples/word-frequency-counter/`](../word-frequency-counter/) and [`examples/todo-list-manager/`](../todo-list-manager/) for the other two) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "010-word-frequency-counter",
      "path": "/ai/examples/010-word-frequency-counter.eml.md",
      "title": "Case corpus: a self-authored word-frequency counter",
      "description": "`word_frequency_counter.eml` is the second case in a self-authored batch (see [`examples/unit-temperature-converter/`](../unit-temperature-converter/) and [`examples/todo-list-manager/`](../todo-list-manager/) for the other two) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "011-anagram-checker",
      "path": "/ai/examples/011-anagram-checker.eml.md",
      "title": "Anagram checker",
      "description": "`anagram_checker.eml` checks five sample word pairs — `listen`/`silent`, `evil`/`vile`, `dormitory`/`dirtyroom`, `night`/`thing`, and `cat`/`dog` — for whether each pair is an anagram of the other."
    },
    {
      "id": "012-armstrong-number-checker",
      "path": "/ai/examples/012-armstrong-number-checker.eml.md",
      "title": "Armstrong number checker",
      "description": "`armstrong_number_checker.eml` checks whether each of four sample numbers (153, 370, 9474 — all genuine Armstrong numbers — and 123, which is not) is an Armstrong number: the sum of its digits, each raised to the power of the digit count, equals the number itself."
    },
    {
      "id": "013-bank-account-simulator",
      "path": "/ai/examples/013-bank-account-simulator.eml.md",
      "title": "Case corpus: a self-authored bank account simulator",
      "description": "`bank_account_simulator.eml` is a class-based case in a self-authored batch of six OOP utilities (alongside `examples/simple-stack/`, `examples/simple-queue/`, `examples/inventory-tracker/`, `examples/library-catalog/`, and `examples/parking-lot-tracker/`) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "014-base-converter",
      "path": "/ai/examples/014-base-converter.eml.md",
      "title": "Base converter (decimal to binary/octal)",
      "description": "`base_converter.eml` converts three sample decimal integers (156, 2024, 45) to their binary and octal string representations by manual repeated-division-and-remainder — no `bin()`/`oct()`/`hex()` call is used; the digit string is built by hand."
    },
    {
      "id": "015-caesar-cipher",
      "path": "/ai/examples/015-caesar-cipher.eml.md",
      "title": "Caesar cipher",
      "description": "`caesar_cipher.eml` encodes the sample message `\"Meet me at the old bridge at midnight\"` with a fixed shift-7 Caesar cipher, then decodes the result back to the original, printing all three lines (original / encoded / decoded) to demonstrate the round trip."
    },
    {
      "id": "016-collatz-sequence",
      "path": "/ai/examples/016-collatz-sequence.eml.md",
      "title": "Collatz sequence",
      "description": "`collatz_sequence.eml` runs the Collatz conjecture step (halve if even, `3n + 1` if odd) from three starting numbers — 6, 11, and the famously long-running 27 (111 steps) — until each reaches 1, printing the full sequence and step count for every run."
    },
    {
      "id": "017-contact-book",
      "path": "/ai/examples/017-contact-book.eml.md",
      "title": "Contact book",
      "description": "`contact_book.eml` is a small class-based `ContactBook` — add a contact, look one up, remove one — backed by a `self.contacts` dict mapping name to phone number."
    },
    {
      "id": "018-dice-roll-tally",
      "path": "/ai/examples/018-dice-roll-tally.eml.md",
      "title": "Case corpus: a self-authored dice roll tally",
      "description": "`dice_roll_tally.eml` is one of a six-case self-authored batch of deterministic simulations and pattern generators (see [`examples/fizzbuzz/`](../fizzbuzz/), [`examples/multiplication-table-generator/`](../multiplication-table-generator/), [`examples/triangle-pattern-printer/`](../triangle-pattern-printer/), [`examples/simple-calculator/`](../simple-calculator/), and [`examples/rock-paper-scissors-simulator/`](../rock-paper-scissors-simulator/) for the other five) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project. EML's interpreter models no random-number generation, so the dice rolls here are a fixed, hardcoded 20-value list, not real randomness."
    },
    {
      "id": "019-digit-sum-calculator",
      "path": "/ai/examples/019-digit-sum-calculator.eml.md",
      "title": "Digit sum + digital root calculator",
      "description": "`digit_sum_calculator.eml` takes a small list of sample integers and, for each one, computes its digit sum (the sum of its base-10 digits) and its \"digital root\" — the single digit left after repeatedly re-summing digits until only one remains."
    },
    {
      "id": "020-duplicate-remover",
      "path": "/ai/examples/020-duplicate-remover.eml.md",
      "title": "Duplicate remover",
      "description": "`duplicate_remover.eml` removes duplicates from a sample grocery-basket list while preserving first-seen order — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/list-statistics/`](../list-statistics/), [`examples/list-rotator/`](../list-rotator/), [`examples/matrix-transpose-manual/`](../matrix-transpose-manual/), [`examples/intersection-union-finder/`](../intersection-union-finder/), [`examples/second-largest-finder/`](../second-largest-finder/), and [`examples/shopping-cart-total/`](../shopping-cart-total/) for the other six)."
    },
    {
      "id": "021-fibonacci-sequence",
      "path": "/ai/examples/021-fibonacci-sequence.eml.md",
      "title": "Fibonacci sequence (iterative)",
      "description": "`fibonacci_sequence.eml` generates the first 15 Fibonacci numbers using a `while` loop with two running variables (`a`, `b`) that are swapped and advanced each iteration — deliberately iterative, since recursion is already covered elsewhere in this corpus (`examples/phase6-control-flow/` covers a similar iterative shape for a single Fibonacci value; this case generates the whole sequence as a list and prints both the full sequence and its last term)."
    },
    {
      "id": "022-fizzbuzz",
      "path": "/ai/examples/022-fizzbuzz.eml.md",
      "title": "Case corpus: a self-authored FizzBuzz",
      "description": "`fizzbuzz.eml` is one of a six-case self-authored batch of deterministic simulations and pattern generators (see [`examples/multiplication-table-generator/`](../multiplication-table-generator/), [`examples/triangle-pattern-printer/`](../triangle-pattern-printer/), [`examples/simple-calculator/`](../simple-calculator/), [`examples/rock-paper-scissors-simulator/`](../rock-paper-scissors-simulator/), and [`examples/dice-roll-tally/`](../dice-roll-tally/) for the other five) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "023-gcd-lcm-calculator",
      "path": "/ai/examples/023-gcd-lcm-calculator.eml.md",
      "title": "GCD/LCM calculator",
      "description": "`gcd_lcm_calculator.eml` computes the greatest common divisor of two numbers via the classic iterative Euclidean algorithm, then derives the least common multiple from the GCD, for three realistic number pairs (e.g. two recurring events on 48-day and 18-day cycles next line up on their LCM)."
    },
    {
      "id": "024-intersection-union-finder",
      "path": "/ai/examples/024-intersection-union-finder.eml.md",
      "title": "Intersection / union finder",
      "description": "`intersection_union_finder.eml` computes the intersection and union of two sample lists of team-roster names — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/list-statistics/`](../list-statistics/), [`examples/duplicate-remover/`](../duplicate-remover/), [`examples/list-rotator/`](../list-rotator/), [`examples/matrix-transpose-manual/`](../matrix-transpose-manual/), [`examples/second-largest-finder/`](../second-largest-finder/), and [`examples/shopping-cart-total/`](../shopping-cart-total/) for the other six)."
    },
    {
      "id": "025-inventory-tracker",
      "path": "/ai/examples/025-inventory-tracker.eml.md",
      "title": "Case corpus: a self-authored stock inventory tracker",
      "description": "`inventory_tracker.eml` is a class-based case in a self-authored batch of six OOP utilities (alongside `examples/bank-account-simulator/`, `examples/simple-stack/`, `examples/simple-queue/`, `examples/library-catalog/`, and `examples/parking-lot-tracker/`) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "026-library-catalog",
      "path": "/ai/examples/026-library-catalog.eml.md",
      "title": "Case corpus: a self-authored library checkout catalog",
      "description": "`library_catalog.eml` is a class-based case in a self-authored batch of six OOP utilities (alongside `examples/bank-account-simulator/`, `examples/simple-stack/`, `examples/simple-queue/`, `examples/inventory-tracker/`, and `examples/parking-lot-tracker/`) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "027-list-rotator",
      "path": "/ai/examples/027-list-rotator.eml.md",
      "title": "List rotator",
      "description": "`list_rotator.eml` rotates two sample lists — a song playlist and a job queue — left and right by a given amount, using slice concatenation — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/list-statistics/`](../list-statistics/), [`examples/duplicate-remover/`](../duplicate-remover/), [`examples/matrix-transpose-manual/`](../matrix-transpose-manual/), [`examples/intersection-union-finder/`](../intersection-union-finder/), [`examples/second-largest-finder/`](../second-largest-finder/), and [`examples/shopping-cart-total/`](../shopping-cart-total/) for the other six)."
    },
    {
      "id": "028-list-statistics",
      "path": "/ai/examples/028-list-statistics.eml.md",
      "title": "List statistics",
      "description": "`list_statistics.eml` computes the minimum, maximum, sum, and average of a sample list of hourly temperature readings — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/duplicate-remover/`](../duplicate-remover/), [`examples/list-rotator/`](../list-rotator/), [`examples/matrix-transpose-manual/`](../matrix-transpose-manual/), [`examples/intersection-union-finder/`](../intersection-union-finder/), [`examples/second-largest-finder/`](../second-largest-finder/), and [`examples/shopping-cart-total/`](../shopping-cart-total/) for the other six)."
    },
    {
      "id": "029-matrix-transpose-manual",
      "path": "/ai/examples/029-matrix-transpose-manual.eml.md",
      "title": "Matrix transpose (manual)",
      "description": "`matrix_transpose_manual.eml` transposes a small 2x3 matrix, represented as a plain list of lists, via nested loops and manual index bookkeeping — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/list-statistics/`](../list-statistics/), [`examples/duplicate-remover/`](../duplicate-remover/), [`examples/list-rotator/`](../list-rotator/), [`examples/intersection-union-finder/`](../intersection-union-finder/), [`examples/second-largest-finder/`](../second-largest-finder/), and [`examples/shopping-cart-total/`](../shopping-cart-total/) for the other six)."
    },
    {
      "id": "030-multiplication-table-generator",
      "path": "/ai/examples/030-multiplication-table-generator.eml.md",
      "title": "Case corpus: a self-authored multiplication table generator",
      "description": "`multiplication_table_generator.eml` is one of a six-case self-authored batch of deterministic simulations and pattern generators (see [`examples/fizzbuzz/`](../fizzbuzz/), [`examples/triangle-pattern-printer/`](../triangle-pattern-printer/), [`examples/simple-calculator/`](../simple-calculator/), [`examples/rock-paper-scissors-simulator/`](../rock-paper-scissors-simulator/), and [`examples/dice-roll-tally/`](../dice-roll-tally/) for the other five) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "031-palindrome-checker",
      "path": "/ai/examples/031-palindrome-checker.eml.md",
      "title": "Palindrome checker",
      "description": "`palindrome_checker.eml` checks whether each of six sample words — `level`, `radar`, `python`, `deified`, `civic`, `transpiler` — reads the same forwards and backwards, printing a verdict for each one."
    },
    {
      "id": "032-parking-lot-tracker",
      "path": "/ai/examples/032-parking-lot-tracker.eml.md",
      "title": "Case corpus: a self-authored parking lot tracker",
      "description": "`parking_lot_tracker.eml` is a class-based case in a self-authored batch of six OOP utilities (alongside `examples/bank-account-simulator/`, `examples/simple-stack/`, `examples/simple-queue/`, `examples/inventory-tracker/`, and `examples/library-catalog/`) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "033-prime-checker",
      "path": "/ai/examples/033-prime-checker.eml.md",
      "title": "Prime checker",
      "description": "`prime_checker.eml` checks primality by trial division (dividing up to `sqrt(n)`, computed without a square-root call by comparing `divisor * divisor <= n`) for a handful of sample numbers, then separately builds the full list of primes up to 30 by looping over an inclusive range and growing a list."
    },
    {
      "id": "034-quadratic-solver",
      "path": "/ai/examples/034-quadratic-solver.eml.md",
      "title": "Quadratic equation solver",
      "description": "`quadratic_solver.eml` solves `ax^2 + bx + c = 0` via the quadratic formula for three sample coefficient triples that all have real roots — `(1, -3, 2)` -> roots 1 and 2, `(2, -7, 3)` -> roots 0.5 and 3, `(1, -5, 6)` -> roots 2 and 3. The discriminant-negative (complex-root) case is deliberately skipped, as scoped for this case."
    },
    {
      "id": "035-rock-paper-scissors-simulator",
      "path": "/ai/examples/035-rock-paper-scissors-simulator.eml.md",
      "title": "Case corpus: a self-authored rock-paper-scissors simulator",
      "description": "`rock_paper_scissors_simulator.eml` is one of a six-case self-authored batch of deterministic simulations and pattern generators (see [`examples/fizzbuzz/`](../fizzbuzz/), [`examples/multiplication-table-generator/`](../multiplication-table-generator/), [`examples/triangle-pattern-printer/`](../triangle-pattern-printer/), [`examples/simple-calculator/`](../simple-calculator/), and [`examples/dice-roll-tally/`](../dice-roll-tally/) for the other five) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project. EML's interpreter models no random-number generation, so the \"simulation\" here is a fixed, hardcoded sequence of six rounds, not real randomness."
    },
    {
      "id": "036-run-length-encoder",
      "path": "/ai/examples/036-run-length-encoder.eml.md",
      "title": "Run-length encoder",
      "description": "`run_length_encoder.eml` run-length-encodes the DNA-style base sequence `\"AAAAGGGGCCCCTTTTAAAAGGA\"` (a genuine RLE use case — simple compression of repeated-symbol sequences, e.g. in bioinformatics or fax-style bitmap rows), producing `4A4G4C4T4A2G1A`."
    },
    {
      "id": "037-second-largest-finder",
      "path": "/ai/examples/037-second-largest-finder.eml.md",
      "title": "Second-largest finder",
      "description": "`second_largest_finder.eml` finds the largest and second-largest *distinct* values in a sample list of exam scores (with repeats) via a manual single-pass loop tracking two running maxima — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/list-statistics/`](../list-statistics/), [`examples/duplicate-remover/`](../duplicate-remover/), [`examples/list-rotator/`](../list-rotator/), [`examples/matrix-transpose-manual/`](../matrix-transpose-manual/), [`examples/intersection-union-finder/`](../intersection-union-finder/), and [`examples/shopping-cart-total/`](../shopping-cart-total/) for the other six)."
    },
    {
      "id": "038-shopping-cart-total",
      "path": "/ai/examples/038-shopping-cart-total.eml.md",
      "title": "Shopping cart total",
      "description": "`shopping_cart_total.eml` models a shopping cart as a list of `(item_name, unit_price, quantity)` tuples and prints an itemized receipt with a grand total — one of a seven-case self-authored batch of list/collection utilities for the EML case corpus (see [`examples/list-statistics/`](../list-statistics/), [`examples/duplicate-remover/`](../duplicate-remover/), [`examples/list-rotator/`](../list-rotator/), [`examples/matrix-transpose-manual/`](../matrix-transpose-manual/), [`examples/intersection-union-finder/`](../intersection-union-finder/), and [`examples/second-largest-finder/`](../second-largest-finder/) for the other six)."
    },
    {
      "id": "039-simple-calculator",
      "path": "/ai/examples/039-simple-calculator.eml.md",
      "title": "Case corpus: a self-authored simple calculator",
      "description": "`simple_calculator.eml` is one of a six-case self-authored batch of deterministic simulations and pattern generators (see [`examples/fizzbuzz/`](../fizzbuzz/), [`examples/multiplication-table-generator/`](../multiplication-table-generator/), [`examples/triangle-pattern-printer/`](../triangle-pattern-printer/), [`examples/rock-paper-scissors-simulator/`](../rock-paper-scissors-simulator/), and [`examples/dice-roll-tally/`](../dice-roll-tally/) for the other five) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "040-simple-queue",
      "path": "/ai/examples/040-simple-queue.eml.md",
      "title": "Case corpus: a self-authored FIFO queue",
      "description": "`simple_queue.eml` is a class-based case in a self-authored batch of six OOP utilities (alongside `examples/bank-account-simulator/`, `examples/simple-stack/`, `examples/inventory-tracker/`, `examples/library-catalog/`, and `examples/parking-lot-tracker/`) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "041-simple-quiz-grader",
      "path": "/ai/examples/041-simple-quiz-grader.eml.md",
      "title": "Simple quiz grader",
      "description": "`simple_quiz_grader.eml` grades a 5-question quiz from `(question, correct_answer, given_answer)` tuples, printing per-question feedback and a final percentage score."
    },
    {
      "id": "042-simple-stack",
      "path": "/ai/examples/042-simple-stack.eml.md",
      "title": "Case corpus: a self-authored LIFO stack",
      "description": "`simple_stack.eml` is a class-based case in a self-authored batch of six OOP utilities (alongside `examples/bank-account-simulator/`, `examples/simple-queue/`, `examples/inventory-tracker/`, `examples/library-catalog/`, and `examples/parking-lot-tracker/`) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "043-string-reverser",
      "path": "/ai/examples/043-string-reverser.eml.md",
      "title": "String reverser",
      "description": "`string_reverser.eml` reverses four sample strings — `\"Hello World\"`, `\"EML Transpiler\"`, `\"Neo.K\"`, `\"EveMissLab 2026\"`."
    },
    {
      "id": "044-survey-score-analyzer",
      "path": "/ai/examples/044-survey-score-analyzer.eml.md",
      "title": "Survey score analyzer",
      "description": "`survey_score_analyzer.eml` analyzes a small customer-satisfaction survey — `(respondent_name, score)` tuples on a 1-10 scale — splitting respondents into satisfied/unsatisfied groups, averaging all scores, and previewing the first couple of responses."
    },
    {
      "id": "045-task-priority-bucketer",
      "path": "/ai/examples/045-task-priority-bucketer.eml.md",
      "title": "Task priority bucketer",
      "description": "`task_priority_bucketer.eml` takes a sample task list — `(task_name, priority_number)` tuples on a 1-10 scale — and sorts them into high/medium/low priority buckets for a simple daily triage report."
    },
    {
      "id": "046-temperature-alert-system",
      "path": "/ai/examples/046-temperature-alert-system.eml.md",
      "title": "Temperature alert system",
      "description": "`temperature_alert_system.eml` classifies a day's worth of hourly Celsius readings from a weather station into \"cold\"/\"mild\"/\"hot\" bands, prints a per-reading alert line (flagging severe extremes), and tallies how many readings landed in each band."
    },
    {
      "id": "047-triangle-pattern-printer",
      "path": "/ai/examples/047-triangle-pattern-printer.eml.md",
      "title": "Case corpus: a self-authored triangle pattern printer",
      "description": "`triangle_pattern_printer.eml` is one of a six-case self-authored batch of deterministic simulations and pattern generators (see [`examples/fizzbuzz/`](../fizzbuzz/), [`examples/multiplication-table-generator/`](../multiplication-table-generator/), [`examples/simple-calculator/`](../simple-calculator/), [`examples/rock-paper-scissors-simulator/`](../rock-paper-scissors-simulator/), and [`examples/dice-roll-tally/`](../dice-roll-tally/) for the other five) — part of growing the EML case corpus toward AI-native training scale, not a port of an existing project."
    },
    {
      "id": "048-vowel-consonant-counter",
      "path": "/ai/examples/048-vowel-consonant-counter.eml.md",
      "title": "Vowel/consonant counter",
      "description": "`vowel_consonant_counter.eml` counts vowels, consonants, and spaces in the sample sentence `\"the quick brown fox jumps over the lazy dog\"` and prints a small report."
    },
    {
      "id": "049-word-capitalizer",
      "path": "/ai/examples/049-word-capitalizer.eml.md",
      "title": "Word capitalizer",
      "description": "`word_capitalizer.eml` title-cases the sample sentence `\"the quick brown fox jumps over the lazy dog\"` into `\"The Quick Brown Fox Jumps Over The Lazy Dog\"` without using a `.title()`/`.capitalize()` builtin."
    },
    {
      "id": "050-binary-search",
      "path": "/ai/examples/050-binary-search.eml.md",
      "title": "Binary search",
      "description": "`binary_search.eml` searches for five sample targets (`34, 100, 3, 91, 50`) in the fixed pre-sorted list `[3, 8, 15, 22, 34, 41, 56, 63, 79, 91]` using a manual `while`-loop binary search — no `bisect` module."
    },
    {
      "id": "051-bubble-sort",
      "path": "/ai/examples/051-bubble-sort.eml.md",
      "title": "Bubble sort",
      "description": "`bubble_sort.eml` sorts the sample list `[64, 34, 25, 12, 22, 11, 90]` into ascending order using a classic bubble sort — a manual double loop with an index-based adjacent-element swap — instead of the `sorted()`/`.sort()` builtins."
    },
    {
      "id": "052-elevator-simulator",
      "path": "/ai/examples/052-elevator-simulator.eml.md",
      "title": "Elevator simulator",
      "description": "`elevator_simulator.eml` simulates a single elevator serving a fixed queue of floor requests (`5, 1, 8, 3`), starting at floor 0 and moving one floor per step toward its current target."
    },
    {
      "id": "053-factorial-recursive",
      "path": "/ai/examples/053-factorial-recursive.eml.md",
      "title": "Factorial (recursive)",
      "description": "`factorial_recursive.eml` computes `0!` through `10!` via genuine self-recursion — a `factorial` function that calls itself — rather than an iterative loop."
    },
    {
      "id": "054-insertion-sort",
      "path": "/ai/examples/054-insertion-sort.eml.md",
      "title": "Insertion sort",
      "description": "`insertion_sort.eml` sorts the sample list `[29, 10, 14, 37, 14, 5, 88]` (with a deliberate duplicate, `14`) into ascending order using insertion sort: builds the sorted prefix one element at a time by shifting larger elements right — the third simple sort in the corpus alongside [`examples/bubble-sort/`](../bubble-sort/) and [`examples/selection-sort/`](../selection-sort/)."
    },
    {
      "id": "055-linear-search",
      "path": "/ai/examples/055-linear-search.eml.md",
      "title": "Linear search",
      "description": "`linear_search.eml` searches for five sample targets (`56, 100, 47, 89, 71`) in the fixed unsorted list `[47, 12, 89, 3, 56, 23, 89, 71]` via a single scanning loop with `break` on the first match — the natural counterpart to [`examples/binary-search/`](../binary-search/)'s pre-sorted, divide-and-conquer approach. The value `89` is deliberately repeated to demonstrate that linear search returns the *first* occurrence (index 2, not 6)."
    },
    {
      "id": "056-merge-two-sorted-lists",
      "path": "/ai/examples/056-merge-two-sorted-lists.eml.md",
      "title": "Merge two sorted lists",
      "description": "`merge_two_sorted_lists.eml` merges two already-sorted sample lists (`[1, 4, 6, 9, 15]` and `[2, 3, 5, 8, 10, 20]`) into one sorted list via the classic two-pointer merge — the building block behind merge sort."
    },
    {
      "id": "057-pascals-triangle",
      "path": "/ai/examples/057-pascals-triangle.eml.md",
      "title": "Pascal's triangle",
      "description": "`pascals_triangle.eml` generates the first 8 rows of Pascal's triangle, each row built from the previous one."
    },
    {
      "id": "058-perfect-number-checker",
      "path": "/ai/examples/058-perfect-number-checker.eml.md",
      "title": "Perfect number checker",
      "description": "`perfect_number_checker.eml` checks whether six sample numbers (`6, 28, 12, 496, 100, 8128`) are perfect numbers — numbers whose proper divisors sum back to the number itself — via trial division. `6`, `28`, `496`, and `8128` are the first four perfect numbers; `12` and `100` are not."
    },
    {
      "id": "059-power-recursive",
      "path": "/ai/examples/059-power-recursive.eml.md",
      "title": "Power (recursive)",
      "description": "`power_recursive.eml` computes `base^exponent` for five sample pairs (`2^10, 3^4, 5^0, 7^3, 10^6`) via genuine recursion — a `power` function that calls itself, decrementing the exponent each time."
    },
    {
      "id": "060-prime-factorization",
      "path": "/ai/examples/060-prime-factorization.eml.md",
      "title": "Prime factorization",
      "description": "`prime_factorization.eml` finds the prime factorization (with multiplicity) of five sample numbers (`60, 97, 360, 1000000, 17`) via trial division — a manual nested `while` loop — no external number-theory library."
    },
    {
      "id": "061-selection-sort",
      "path": "/ai/examples/061-selection-sort.eml.md",
      "title": "Selection sort",
      "description": "`selection_sort.eml` sorts the sample list `[64, 25, 12, 22, 11, 90, 34]` into ascending order using selection sort: for each position, scan the remainder for the minimum and swap it into place once — a different strategy from [`examples/bubble-sort/`](../bubble-sort/)'s repeated adjacent-element swap."
    },
    {
      "id": "062-sum-of-digits-recursive",
      "path": "/ai/examples/062-sum-of-digits-recursive.eml.md",
      "title": "Sum of digits (recursive)",
      "description": "`sum_of_digits_recursive.eml` computes the digit sum of five sample numbers (`4527, 918273, 60, 999999, 7`) via genuine recursion — a `digit_sum` function that calls itself on the number with its last digit stripped off."
    },
    {
      "id": "063-traffic-light-simulator",
      "path": "/ai/examples/063-traffic-light-simulator.eml.md",
      "title": "Traffic light simulator",
      "description": "`traffic_light_simulator.eml` simulates a traffic light cycling Red -> Green -> Yellow -> Red over 20 steps, each state held for a fixed number of steps (Red: 3, Green: 4, Yellow: 1)."
    },
    {
      "id": "064-vending-machine-simulator",
      "path": "/ai/examples/064-vending-machine-simulator.eml.md",
      "title": "Vending machine simulator",
      "description": "`vending_machine_simulator.eml` simulates a vending machine processing four fixed purchases against a small product catalog (Soda 150, Chips 200, Candy 100, Water 125, in arbitrary currency units) — each purchase inserts a list of coins, accumulates a balance, and either dispenses the item with change or reports the shortfall."
    },
    {
      "id": "065-binary-search-recursive",
      "path": "/ai/examples/065-binary-search-recursive.eml.md",
      "title": "Binary search (recursive)",
      "description": "`binary_search_recursive.eml` searches for the exact same five targets (`34, 100, 3, 91, 50`) in the exact same fixed pre-sorted list as [`examples/binary-search/`](../binary-search/) — same algorithm, same inputs, expressed via self-recursion instead of a `while` loop."
    },
    {
      "id": "066-collatz-recursive",
      "path": "/ai/examples/066-collatz-recursive.eml.md",
      "title": "Collatz steps (recursive)",
      "description": "`collatz_recursive.eml` counts the number of Collatz-conjecture steps needed to reach `1`, for four sample starting numbers (`6, 11, 27, 1`)."
    },
    {
      "id": "067-counting-sort",
      "path": "/ai/examples/067-counting-sort.eml.md",
      "title": "Counting sort",
      "description": "`counting_sort.eml` sorts a fixed sample list `[4, 2, 2, 8, 3, 3, 1, 0, 5]` (values known to be in `0..8`) via counting sort."
    },
    {
      "id": "068-digital-root-recursive",
      "path": "/ai/examples/068-digital-root-recursive.eml.md",
      "title": "Digital root (recursive)",
      "description": "`digital_root_recursive.eml` computes the digital root (repeated digit-sum until one digit remains) of five sample numbers (`12345, 999, 8, 0, 132189`)."
    },
    {
      "id": "069-door-lock-keypad-simulator",
      "path": "/ai/examples/069-door-lock-keypad-simulator.eml.md",
      "title": "Door lock keypad simulator",
      "description": "`door_lock_keypad_simulator.eml` simulates a keypad door lock through a fixed sequence of 6 PIN attempts, ending in a lockout."
    },
    {
      "id": "070-euclidean-gcd-recursive",
      "path": "/ai/examples/070-euclidean-gcd-recursive.eml.md",
      "title": "Euclidean GCD (recursive)",
      "description": "`euclidean_gcd_recursive.eml` computes the greatest common divisor of five sample pairs (`(48,18)`, `(1071,462)`, `(17,5)`, `(100,75)`, `(0,9)`) via Euclid's algorithm."
    },
    {
      "id": "071-fibonacci-recursive",
      "path": "/ai/examples/071-fibonacci-recursive.eml.md",
      "title": "Fibonacci (recursive)",
      "description": "`fibonacci_recursive.eml` prints `fib(0)` through `fib(10)` via genuine double-call self-recursion."
    },
    {
      "id": "072-is-palindrome-recursive",
      "path": "/ai/examples/072-is-palindrome-recursive.eml.md",
      "title": "Is palindrome (recursive)",
      "description": "`is_palindrome_recursive.eml` checks six sample strings (`\"racecar\"`, `\"hello\"`, `\"level\"`, `\"python\"`, `\"a\"`, `\"\"`) for whether they read the same forwards and backwards."
    },
    {
      "id": "073-jump-search",
      "path": "/ai/examples/073-jump-search.eml.md",
      "title": "Jump search",
      "description": "`jump_search.eml` searches for five sample targets (`34, 100, 3, 91, 999`) in the fixed pre-sorted list `[3, 8, 15, 22, 34, 41, 56, 63, 79, 91, 100, 108, 121]` via jump search."
    },
    {
      "id": "074-merge-sort",
      "path": "/ai/examples/074-merge-sort.eml.md",
      "title": "Merge sort",
      "description": "`merge_sort.eml` sorts a fixed sample list `[8, 3, 5, 1, 9, 2, 7, 4, 6]` via classic recursive divide-and-conquer merge sort — no `sorted()` builtin."
    },
    {
      "id": "075-quicksort-recursive",
      "path": "/ai/examples/075-quicksort-recursive.eml.md",
      "title": "Quicksort (recursive)",
      "description": "`quicksort_recursive.eml` sorts a fixed sample list `[5, 2, 9, 1, 5, 6, 3, 8, 4]` (with a repeated value) via recursive quicksort with Lomuto-style in-place partitioning."
    },
    {
      "id": "076-reverse-string-recursive",
      "path": "/ai/examples/076-reverse-string-recursive.eml.md",
      "title": "Reverse string (recursive)",
      "description": "`reverse_string_recursive.eml` reverses five sample strings (`\"hello\"`, `\"EML\"`, `\"a\"`, `\"\"`, `\"racecar\"`)."
    },
    {
      "id": "077-tower-of-hanoi",
      "path": "/ai/examples/077-tower-of-hanoi.eml.md",
      "title": "Tower of Hanoi",
      "description": "`tower_of_hanoi.eml` solves the classic Tower of Hanoi puzzle for 3 disks, moving them from peg `A` to peg `C` using peg `B` as auxiliary."
    },
    {
      "id": "078-turnstile-simulator",
      "path": "/ai/examples/078-turnstile-simulator.eml.md",
      "title": "Turnstile simulator",
      "description": "`turnstile_simulator.eml` simulates a subway turnstile through a fixed sequence of 8 `push`/`coin` events, tracking coins collected and rejected pushes."
    },
    {
      "id": "079-washing-machine-cycle-simulator",
      "path": "/ai/examples/079-washing-machine-cycle-simulator.eml.md",
      "title": "Washing machine cycle simulator",
      "description": "`washing_machine_cycle_simulator.eml` steps a washing machine through its fixed cycle (`fill -> wash -> rinse -> spin -> done`), each stage with its own duration, accumulating a running total."
    },
    {
      "id": "080-balanced-brackets-checker",
      "path": "/ai/examples/080-balanced-brackets-checker.eml.md",
      "title": "Balanced brackets checker",
      "description": "`balanced_brackets_checker.eml` checks seven sample strings for correctly nested and matched brackets, covering the mismatched (`\"(]\"`), unclosed (`\"(((\"`), closer-before-opener (`\")(\"`), and empty (`\"\"`) edge cases as well as the well-formed ones."
    },
    {
      "id": "081-binary-search-tree",
      "path": "/ai/examples/081-binary-search-tree.eml.md",
      "title": "Binary search tree",
      "description": "`binary_search_tree.eml` inserts `[50, 30, 70, 20, 40, 60, 80, 35]` into a BST, then walks it in-order to recover `[20, 30, 35, 40, 50, 60, 70, 80]` — the tree's defining property, demonstrated rather than asserted."
    },
    {
      "id": "082-coin-change-dp",
      "path": "/ai/examples/082-coin-change-dp.eml.md",
      "title": "Coin change (dynamic programming)",
      "description": "`coin_change_dp.eml` finds the fewest coins that make a given amount, using a 1D DP table filled from 1 up to the target."
    },
    {
      "id": "083-edit-distance",
      "path": "/ai/examples/083-edit-distance.eml.md",
      "title": "Edit distance (Levenshtein)",
      "description": "`edit_distance.eml` computes the fewest single-character insertions, deletions or substitutions needed to turn one string into another, for five sample pairs — including the canonical `'kitten' -> 'sitting' : 3`."
    },
    {
      "id": "084-fibonacci-memoized",
      "path": "/ai/examples/084-fibonacci-memoized.eml.md",
      "title": "Fibonacci (memoized)",
      "description": "`fibonacci_memoized.eml` prints `fib(0)`..`fib(15)` and then `fib(50) = 12586269025`, using recursion with a dict cache."
    },
    {
      "id": "085-graph-bfs-traversal",
      "path": "/ai/examples/085-graph-bfs-traversal.eml.md",
      "title": "Graph BFS traversal",
      "description": "`graph_bfs_traversal.eml` visits a small directed graph breadth-first from node `A`, reaching all 6 nodes in order `A, B, C, D, E, F`."
    },
    {
      "id": "086-graph-dfs-recursive",
      "path": "/ai/examples/086-graph-dfs-recursive.eml.md",
      "title": "Graph DFS traversal (recursive)",
      "description": "`graph_dfs_recursive.eml` visits the **same graph** as [`examples/graph-bfs-traversal/`](../graph-bfs-traversal/) depth-first from node `A`, so the two orders can be read side by side:"
    },
    {
      "id": "087-happy-number",
      "path": "/ai/examples/087-happy-number.eml.md",
      "title": "Happy number",
      "description": "`happy_number.eml` tests six numbers for \"happiness\": repeatedly replace a number with the sum of the squares of its digits, and it is happy if that process reaches 1 (`19 -> 82 -> 68 -> 100 -> 1`)."
    },
    {
      "id": "088-longest-common-subsequence",
      "path": "/ai/examples/088-longest-common-subsequence.eml.md",
      "title": "Longest common subsequence",
      "description": "`longest_common_subsequence.eml` finds the longest sequence of characters appearing in both strings in order (not necessarily adjacent), for four sample pairs — including the textbook `'AGGTAB' & 'GXTXAYB' -> 'GTAB'`."
    },
    {
      "id": "089-luhn-algorithm",
      "path": "/ai/examples/089-luhn-algorithm.eml.md",
      "title": "Luhn algorithm",
      "description": "`luhn_algorithm.eml` validates five numbers with the Luhn check-digit algorithm — the checksum behind credit-card and IMEI numbers."
    },
    {
      "id": "090-matrix-multiplication",
      "path": "/ai/examples/090-matrix-multiplication.eml.md",
      "title": "Matrix multiplication",
      "description": "`matrix_multiplication.eml` multiplies a 2x3 matrix by a 3x2 matrix, producing the 2x2 product `[[58, 64], [139, 154]]`."
    },
    {
      "id": "091-max-subarray-kadane",
      "path": "/ai/examples/091-max-subarray-kadane.eml.md",
      "title": "Maximum subarray (Kadane's algorithm)",
      "description": "`max_subarray_kadane.eml` finds the largest sum obtainable from any contiguous run of a list, for five samples — including the classic `[-2, 1, -3, 4, -1, 2, 1, -5, 4] -> 6`."
    },
    {
      "id": "092-roman-numeral-converter",
      "path": "/ai/examples/092-roman-numeral-converter.eml.md",
      "title": "Roman numeral converter",
      "description": "`roman_numeral_converter.eml` converts ten sample integers to Roman numerals, spanning every subtractive form (`1994 -> MCMXCIV`, `3999 -> MMMCMXCIX`)."
    },
    {
      "id": "093-rpn-evaluator",
      "path": "/ai/examples/093-rpn-evaluator.eml.md",
      "title": "Reverse Polish Notation evaluator",
      "description": "`rpn_evaluator.eml` evaluates four RPN expressions, e.g. `[3, 4, '+', 2, '*', 7, '/'] = 2` and `[5, 1, 2, '+', 4, '*', '+', 3, '-'] = 14`."
    },
    {
      "id": "094-sieve-of-eratosthenes",
      "path": "/ai/examples/094-sieve-of-eratosthenes.eml.md",
      "title": "Sieve of Eratosthenes",
      "description": "`sieve_of_eratosthenes.eml` lists every prime up to 50 (15 of them) via the classic sieve."
    },
    {
      "id": "095-bin-packing-first-fit",
      "path": "/ai/examples/095-bin-packing-first-fit.eml.md",
      "title": "Bin packing (first-fit)",
      "description": "`bin_packing_first_fit.eml` packs seven items into bins of capacity 10 by dropping each item into the first bin it still fits in, printing the resulting contents of every bin."
    },
    {
      "id": "096-binary-heap",
      "path": "/ai/examples/096-binary-heap.eml.md",
      "title": "Binary heap (min-heap priority queue)",
      "description": "`binary_heap.eml` pushes `[5, 3, 8, 1, 9, 2, 7]` into a min-heap one at a time (printing the array after each push, so the heap property is visible) then drains it, recovering `[1, 2, 3, 5, 7, 8, 9]`."
    },
    {
      "id": "097-conway-game-of-life",
      "path": "/ai/examples/097-conway-game-of-life.eml.md",
      "title": "Conway's Game of Life",
      "description": "`conway_game_of_life.eml` evolves a glider on a 6x6 grid for four generations, printing every generation."
    },
    {
      "id": "098-day-of-week-zeller",
      "path": "/ai/examples/098-day-of-week-zeller.eml.md",
      "title": "Day of week (Zeller's congruence)",
      "description": "`day_of_week_zeller.eml` computes which weekday a calendar date falls on, arithmetically, with no date library — and checks all five results against independently known answers."
    },
    {
      "id": "099-flood-fill",
      "path": "/ai/examples/099-flood-fill.eml.md",
      "title": "Flood fill",
      "description": "`flood_fill.eml` is the paint-bucket tool: starting from one cell, spread into the four orthogonal neighbors for as long as they still hold the original color. Prints the grid before and after, filling 13 cells from `(0,2)`."
    },
    {
      "id": "100-hamming-distance",
      "path": "/ai/examples/100-hamming-distance.eml.md",
      "title": "Hamming distance",
      "description": "`hamming_distance.eml` counts how many positions two equal-length strings differ in, for five sample pairs — including the classic `'karolin' vs 'kathrin' : 3`."
    },
    {
      "id": "101-linked-list-operations",
      "path": "/ai/examples/101-linked-list-operations.eml.md",
      "title": "Linked list operations",
      "description": "`linked_list_operations.eml` builds a four-node singly linked list, prints it, reverses it in place, and prints it again — showing the internal link array before and after."
    },
    {
      "id": "102-longest-common-prefix",
      "path": "/ai/examples/102-longest-common-prefix.eml.md",
      "title": "Longest common prefix",
      "description": "`longest_common_prefix.eml` finds the longest starting string every word in a list shares, e.g. `['flower', 'flow', 'flight'] -> 'fl'`."
    },
    {
      "id": "103-roman-to-integer",
      "path": "/ai/examples/103-roman-to-integer.eml.md",
      "title": "Roman numeral to integer",
      "description": "`roman_to_integer.eml` converts Roman numerals back to integers, and reports `10 of 10 round-tripped back to the original integer`."
    },
    {
      "id": "104-spiral-matrix-traversal",
      "path": "/ai/examples/104-spiral-matrix-traversal.eml.md",
      "title": "Spiral matrix traversal",
      "description": "`spiral_matrix_traversal.eml` reads a matrix in a clockwise inward spiral, e.g. the 3x4 grid `1..12` comes out as `[1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7]`."
    },
    {
      "id": "105-stock-buy-sell-profit",
      "path": "/ai/examples/105-stock-buy-sell-profit.eml.md",
      "title": "Best single buy/sell profit",
      "description": "`stock_buy_sell_profit.eml` finds the best profit obtainable from buying once and selling once later, across five price series — e.g. `[7, 1, 5, 3, 6, 4] -> best profit 5` (buy at 1, sell at 6)."
    },
    {
      "id": "106-substring-search",
      "path": "/ai/examples/106-substring-search.eml.md",
      "title": "Substring search (all positions)",
      "description": "`substring_search.eml` slides a pattern along a text and collects **every** match position, not just the first — e.g. `'aba' in 'abababa' -> [0, 2, 4]`."
    },
    {
      "id": "107-topological-sort",
      "path": "/ai/examples/107-topological-sort.eml.md",
      "title": "Topological sort (Kahn's algorithm)",
      "description": "`topological_sort.eml` orders a course-prerequisite graph so every prerequisite comes before whatever needs it, then runs the same function against a deliberately impossible cyclic graph."
    },
    {
      "id": "108-tournament-bracket",
      "path": "/ai/examples/108-tournament-bracket.eml.md",
      "title": "Tournament bracket",
      "description": "`tournament_bracket.eml` runs a single-elimination tournament: pair up adjacent teams, the stronger rating advances, repeat on the surviving half until one team is left. Eight teams take exactly three rounds."
    },
    {
      "id": "109-vigenere-cipher",
      "path": "/ai/examples/109-vigenere-cipher.eml.md",
      "title": "Vigenère cipher",
      "description": "`vigenere_cipher.eml` encodes `\"attack at dawn\"` with the key `\"lemon\"` to `\"lxfopv ef rnhr\"`, then decodes it back — the textbook example, letter for letter."
    },
    {
      "id": "110-bisection-root-finder",
      "path": "/ai/examples/110-bisection-root-finder.eml.md",
      "title": "Bisection root finder",
      "description": "`bisection_root_finder.eml` finds roots by halving an interval whose endpoints give the function opposite signs — a root must lie between them."
    },
    {
      "id": "111-days-between-dates",
      "path": "/ai/examples/111-days-between-dates.eml.md",
      "title": "Days between dates",
      "description": "`days_between_dates.eml` counts the days between two calendar dates by converting each to a day number since a fixed epoch and subtracting."
    },
    {
      "id": "112-fraction-arithmetic",
      "path": "/ai/examples/112-fraction-arithmetic.eml.md",
      "title": "Fraction arithmetic (exact rationals)",
      "description": "`fraction_arithmetic.eml` adds and multiplies fractions held as `[numerator, denominator]` pairs, always reduced by their greatest common divisor."
    },
    {
      "id": "113-histogram-builder",
      "path": "/ai/examples/113-histogram-builder.eml.md",
      "title": "Histogram builder",
      "description": "`histogram_builder.eml` buckets 20 scores into equal-width ranges and draws each bucket as a bar:"
    },
    {
      "id": "114-manual-csv-parser",
      "path": "/ai/examples/114-manual-csv-parser.eml.md",
      "title": "Manual CSV parser",
      "description": "`manual_csv_parser.eml` splits CSV lines into fields one character at a time, tracking whether the scan is currently inside a quoted region."
    },
    {
      "id": "115-matrix-determinant",
      "path": "/ai/examples/115-matrix-determinant.eml.md",
      "title": "Matrix determinant (cofactor expansion)",
      "description": "`matrix_determinant.eml` computes determinants by expanding along the top row and recursing on each minor, checked against five independently known answers."
    },
    {
      "id": "116-maze-solver-backtracking",
      "path": "/ai/examples/116-maze-solver-backtracking.eml.md",
      "title": "Maze solver (backtracking)",
      "description": "`maze_solver_backtracking.eml` finds a route through a 6x6 maze from the top-left to the bottom-right, then renders the board with the path marked:"
    },
    {
      "id": "117-modular-exponentiation",
      "path": "/ai/examples/117-modular-exponentiation.eml.md",
      "title": "Modular exponentiation",
      "description": "`modular_exponentiation.eml` computes `base^exponent mod m` by repeated squaring — the operation underneath RSA and Diffie-Hellman."
    },
    {
      "id": "118-moving-average",
      "path": "/ai/examples/118-moving-average.eml.md",
      "title": "Moving average (sliding window)",
      "description": "`moving_average.eml` computes a moving average incrementally — the first window is summed once, and every window after it adds the entering value and subtracts the leaving one."
    },
    {
      "id": "119-n-queens",
      "path": "/ai/examples/119-n-queens.eml.md",
      "title": "N-Queens",
      "description": "`n_queens.eml` places N queens on an NxN board so none attacks another, for N = 4, 5, 6 — then renders all four 6-queens solutions."
    },
    {
      "id": "120-newton-sqrt",
      "path": "/ai/examples/120-newton-sqrt.eml.md",
      "title": "Newton's method for square roots",
      "description": "`newton_sqrt.eml` computes square roots by repeatedly averaging a guess with `value / guess`, and prints the convergence step by step:"
    },
    {
      "id": "121-permutations-generator",
      "path": "/ai/examples/121-permutations-generator.eml.md",
      "title": "Permutations generator",
      "description": "`permutations_generator.eml` produces every ordering of a list — all 6 of `[\"A\",\"B\",\"C\"]`, then confirms 24 for a four-item list."
    },
    {
      "id": "122-rank-with-ties",
      "path": "/ai/examples/122-rank-with-ties.eml.md",
      "title": "Ranking with ties",
      "description": "`rank_with_ties.eml` ranks a leaderboard containing two pairs of tied scores, under both standard conventions at once:"
    },
    {
      "id": "123-subset-sum-backtracking",
      "path": "/ai/examples/123-subset-sum-backtracking.eml.md",
      "title": "Subset sum (backtracking)",
      "description": "`subset_sum_backtracking.eml` finds every subset of `[3, 34, 4, 12, 5, 2]` adding up to 9 — `[3, 4, 2]` and `[4, 5]` — then shows that nothing reaches 100."
    },
    {
      "id": "124-sudoku-solver-4x4",
      "path": "/ai/examples/124-sudoku-solver-4x4.eml.md",
      "title": "Sudoku solver (4x4)",
      "description": "`sudoku_solver_4x4.eml` solves a 4x4 Sudoku from four clues, then checks its own answer with an independent validator."
    },
    {
      "id": "125-arithmetic-series-sigma",
      "path": "/ai/examples/125-arithmetic-series-sigma.eml.md",
      "title": "Arithmetic series (Σ)",
      "description": "`arithmetic_series_sigma.eml` sums arithmetic progressions with EML's summation operator, checking every result against a closed form."
    },
    {
      "id": "126-bank-account-invariant",
      "path": "/ai/examples/126-bank-account-invariant.eml.md",
      "title": "A class that defends an invariant",
      "description": "`bank_account_invariant.eml` keeps one rule — the balance is never negative — and raises rather than returning a status when asked to break it."
    },
    {
      "id": "127-cold-cache-key-identity",
      "path": "/ai/examples/127-cold-cache-key-identity.eml.md",
      "title": "What counts as \"the same arguments\"",
      "description": "`cold_cache_key_identity.eml` measures which argument values share a `@cold` cache entry. The obvious guess — Python equality, so `1 == 1.0 == True` is one entry — is wrong, and wrong in a way that depends on **how many arguments the function takes**."
    },
    {
      "id": "128-cold-memoization-visible",
      "path": "/ai/examples/128-cold-memoization-visible.eml.md",
      "title": "@cold, made visible",
      "description": "`cold_memoization_visible.eml` is the corpus's **first use of EML's temperature model**. The 124 programs before it used neither `@cold` nor `@hot`, despite those being among EML's most distinctive features."
    },
    {
      "id": "129-cold-stale-state",
      "path": "/ai/examples/129-cold-stale-state.eml.md",
      "title": "When @cold changes the answer",
      "description": "`cold_stale_state.eml` is the other half of [`examples/cold-vs-hot-fibonacci/`](../cold-vs-hot-fibonacci/). That case makes the reassuring point — for a genuinely pure function, `@cold` and `@hot` agree on every value and differ only in cost. This one makes the point that actually bites."
    },
    {
      "id": "130-cold-vs-hot-fibonacci",
      "path": "/ai/examples/130-cold-vs-hot-fibonacci.eml.md",
      "title": "@cold vs @hot: same answers, different costs",
      "description": "`cold_vs_hot_fibonacci.eml` writes the same recursive Fibonacci twice — once `@cold`, once `@hot` — to separate two things the temperature model does not confuse."
    },
    {
      "id": "131-dot-product-sigma",
      "path": "/ai/examples/131-dot-product-sigma.eml.md",
      "title": "Dot product (Σ)",
      "description": "`dot_product_sigma.eml` computes vector dot products as a summation over paired list positions."
    },
    {
      "id": "132-duck-typed-shapes",
      "path": "/ai/examples/132-duck-typed-shapes.eml.md",
      "title": "Polymorphism without inheritance",
      "description": "`duck_typed_shapes.eml` dispatches `area()` across five unrelated classes."
    },
    {
      "id": "133-exception-finally-ordering",
      "path": "/ai/examples/133-exception-finally-ordering.eml.md",
      "title": "try / except / finally ordering",
      "description": "`exception_finally_ordering.eml` prints the order these actually run in, rather than describing it."
    },
    {
      "id": "134-harmonic-series-sigma",
      "path": "/ai/examples/134-harmonic-series-sigma.eml.md",
      "title": "Harmonic series (Σ)",
      "description": "`harmonic_series_sigma.eml` computes harmonic numbers `H(n) = Σ(1/i, i in [1:n])` — a summation over a **float** summand."
    },
    {
      "id": "135-hot-mutable-input",
      "path": "/ai/examples/135-hot-mutable-input.eml.md",
      "title": "Why @hot exists",
      "description": "`hot_mutable_input.eml` argues that `@hot` is a **correctness** annotation that happens to disable an optimisation — not an optimisation annotation that happens to be a no-op."
    },
    {
      "id": "136-retry-until-success",
      "path": "/ai/examples/136-retry-until-success.eml.md",
      "title": "Retry loops",
      "description": "`retry_until_success.eml` uses exceptions for control flow rather than for reporting a crash."
    },
    {
      "id": "137-sum-of-squares-sigma",
      "path": "/ai/examples/137-sum-of-squares-sigma.eml.md",
      "title": "Sum of squares (Σ)",
      "description": "`sum_of_squares_sigma.eml` computes `Σ(i^2, i in [1:n])` for five values of `n`, checking each against the closed form `n(n+1)(2n+1)/6`."
    },
    {
      "id": "138-ternary-decision-table",
      "path": "/ai/examples/138-ternary-decision-table.eml.md",
      "title": "Ternary chains",
      "description": "`ternary_decision_table.eml` exercises EML's `cond ? a : b`, which the corpus had almost no coverage of before this."
    },
    {
      "id": "139-variance-with-sigma",
      "path": "/ai/examples/139-variance-with-sigma.eml.md",
      "title": "Variance two ways (Σ)",
      "description": "`variance_with_sigma.eml` computes population variance with two algebraically identical summations, and shows them disagreeing."
    },
    {
      "id": "140-comprehension-pipeline",
      "path": "/ai/examples/140-comprehension-pipeline.eml.md",
      "title": "List comprehensions, and what they do differently",
      "description": "`comprehension_pipeline.eml` examines list comprehensions — four corpus programs had used one, none had looked at it."
    },
    {
      "id": "141-continue-and-break-filters",
      "path": "/ai/examples/141-continue-and-break-filters.eml.md",
      "title": "`continue` and `break` are not symmetric",
      "description": "`continue_and_break_filters.eml` pins the interaction of the two loop escapes — used by two and nine corpus programs respectively, and never examined together."
    },
    {
      "id": "142-dict-inventory-report",
      "path": "/ai/examples/142-dict-inventory-report.eml.md",
      "title": "Dictionaries as the primary structure",
      "description": "`dict_inventory_report.eml` builds an inventory around a dict — seven corpus programs used a dict literal, none of them centrally."
    },
    {
      "id": "143-exception-suppressing-manager",
      "path": "/ai/examples/143-exception-suppressing-manager.eml.md",
      "title": "`__exit__`'s return value decides everything",
      "description": "`exception_suppressing_manager.eml` isolates the part of the context-manager protocol that surprises people."
    },
    {
      "id": "144-indented-report-writer",
      "path": "/ai/examples/144-indented-report-writer.eml.md",
      "title": "A context manager that isn't about resources",
      "description": "`indented_report_writer.eml` uses `with` to manage the *shape of output* rather than to release anything."
    },
    {
      "id": "145-manager-enter-failure",
      "path": "/ai/examples/145-manager-enter-failure.eml.md",
      "title": "When cleanup does *not* run",
      "description": "`manager_enter_failure.eml` covers the context-manager rule almost nobody states, and the one that decides whether \"cleanup always runs\" is actually true."
    },
    {
      "id": "146-multiline-help-text",
      "path": "/ai/examples/146-multiline-help-text.eml.md",
      "title": "Triple-quoted strings, and the whitespace they capture",
      "description": "`multiline_help_text.eml` uses triple-quoted string literals, which EML has supported since Phase 9 and which no corpus program had used."
    },
    {
      "id": "147-receipt-formatter",
      "path": "/ai/examples/147-receipt-formatter.eml.md",
      "title": "A receipt, and what `%` rounding actually does",
      "description": "`receipt_formatter.eml` is the smallest honest excuse to use every part of `%`-formatting at once: left-aligned names, right-aligned integers, fixed two-decimal money, and a percentage."
    },
    {
      "id": "148-resource-guard-with",
      "path": "/ai/examples/148-resource-guard-with.eml.md",
      "title": "Cleanup that cannot be skipped (`with`)",
      "description": "`resource_guard_with.eml` is the corpus's **first use of `with`**. EML has had context managers with a real `__enter__`/`__exit__` protocol since Phase 9, and in 134 programs not one of them used it."
    },
    {
      "id": "149-run-length-encoding",
      "path": "/ai/examples/149-run-length-encoding.eml.md",
      "title": "A round-trip property that found a broken format",
      "description": "`run_length_encoding.eml` implements RLE and its inverse, and checks them against each other rather than against hand-written expected strings."
    },
    {
      "id": "150-set-membership-dedup",
      "path": "/ai/examples/150-set-membership-dedup.eml.md",
      "title": "What a set is for, and what it costs",
      "description": "`set_membership_dedup.eml` covers set literals — used incidentally by the corpus, never examined — and the one thing they are unambiguously for: asking *have I seen this before* without scanning."
    },
    {
      "id": "151-slice-toolkit",
      "path": "/ai/examples/151-slice-toolkit.eml.md",
      "title": "Slicing is half-open, and that's the whole story",
      "description": "`slice_toolkit.eml` works through slicing, which five corpus programs had touched only in passing."
    },
    {
      "id": "152-text-banner-builder",
      "path": "/ai/examples/152-text-banner-builder.eml.md",
      "title": "Sequence repetition",
      "description": "`text_banner_builder.eml` covers `\"-\" * n` and `[0] * n` — which no corpus program had used, and which is the workhorse behind every box, rule, bar chart and padded column."
    },
    {
      "id": "153-transaction-rollback-with",
      "path": "/ai/examples/153-transaction-rollback-with.eml.md",
      "title": "All-or-nothing, with rollback",
      "description": "`transaction_rollback_with.eml` is the pattern `with` exists for: a change that either fully happens or fully doesn't, decided by how the block was left."
    },
    {
      "id": "154-word-wrap",
      "path": "/ai/examples/154-word-wrap.eml.md",
      "title": "Greedy word wrap",
      "description": "`word_wrap.eml` implements the algorithm behind every terminal that reflows text, using the string tools EML actually has."
    },
    {
      "id": "155-absolute-error-tracker",
      "path": "/ai/examples/155-absolute-error-tracker.eml.md",
      "title": "Absolute error tracker",
      "description": "`absolute_error_tracker.eml` compares five readings against a target and reports which ones fall outside a tolerance band."
    },
    {
      "id": "156-attendance-register",
      "path": "/ai/examples/156-attendance-register.eml.md",
      "title": "Updating a key does not move it",
      "description": "`attendance_register.eml` keeps an attendance dict as instance state on a class, updated one mark at a time."
    },
    {
      "id": "157-char-frequency-table",
      "path": "/ai/examples/157-char-frequency-table.eml.md",
      "title": "Counting with a dict, in first-appearance order",
      "description": "`char_frequency_table.eml` tallies the characters of a phrase and prints a bar chart."
    },
    {
      "id": "158-config-defaults-merge",
      "path": "/ai/examples/158-config-defaults-merge.eml.md",
      "title": "Presence is not truthiness",
      "description": "`config_defaults_merge.eml` layers user settings over defaults, and shows the mistake that makes this harder than it looks."
    },
    {
      "id": "159-coordinate-distance-table",
      "path": "/ai/examples/159-coordinate-distance-table.eml.md",
      "title": "Points are tuples",
      "description": "`coordinate_distance_table.eml` measures four points against the origin, two ways."
    },
    {
      "id": "160-exam-score-records",
      "path": "/ai/examples/160-exam-score-records.eml.md",
      "title": "A list of tuples is a table",
      "description": "`exam_score_records.eml` holds `(name, score, attempts)` rows and reports on them."
    },
    {
      "id": "161-inventory-ledger",
      "path": "/ai/examples/161-inventory-ledger.eml.md",
      "title": "A dict iterates in insertion order",
      "description": "`inventory_ledger.eml` compares stock levels against reorder floors and prints a report by walking the dict."
    },
    {
      "id": "162-min-max-selection",
      "path": "/ai/examples/162-min-max-selection.eml.md",
      "title": "`min()` and `max()` have two call shapes",
      "description": "`min_max_selection.eml` demonstrates the rule that decides which one you are using, and the sharp edge it creates."
    },
    {
      "id": "163-numeric-string-parser",
      "path": "/ai/examples/163-numeric-string-parser.eml.md",
      "title": "What `int()` and `float()` actually accept",
      "description": "`numeric_string_parser.eml` walks fourteen candidate strings and reports, for each, what `int()` and `float()` do with it."
    },
    {
      "id": "164-polynomial-evaluator",
      "path": "/ai/examples/164-polynomial-evaluator.eml.md",
      "title": "A polynomial as (coefficient, exponent) pairs",
      "description": "`polynomial_evaluator.eml` evaluates `2x^3 - 4x^2 + 7x + 5` at four points by summing its terms explicitly."
    },
    {
      "id": "165-rgb-palette-blender",
      "path": "/ai/examples/165-rgb-palette-blender.eml.md",
      "title": "Blending colours, one channel at a time",
      "description": "`rgb_palette_blender.eml` adds and scales `(r, g, b)` tuples with each channel clamped independently."
    },
    {
      "id": "166-running-total-sum",
      "path": "/ai/examples/166-running-total-sum.eml.md",
      "title": "`sum()` is less boring than it looks",
      "description": "`running_total_sum.eml` exercises the three behaviours of `sum()` that matter and are easy to get wrong."
    },
    {
      "id": "167-tuple-vs-list-choice",
      "path": "/ai/examples/167-tuple-vs-list-choice.eml.md",
      "title": "Tuple or list?",
      "description": "`tuple_vs_list_choice.eml` states the rule and demonstrates both halves of it in one program."
    },
    {
      "id": "168-unique-tag-collector",
      "path": "/ai/examples/168-unique-tag-collector.eml.md",
      "title": "Sets answer questions; lists produce sequences",
      "description": "`unique_tag_collector.eml` counts distinct tags and demonstrates the one thing EML-P deliberately **refuses** to do with a set."
    },
    {
      "id": "169-word-length-grouping",
      "path": "/ai/examples/169-word-length-grouping.eml.md",
      "title": "Grouping into lists, not counters",
      "description": "`word_length_grouping.eml` buckets words by length — the other half of the dict-as-accumulator pattern, where the values are lists that grow rather than numbers that increment."
    },
    {
      "id": "170-feature-flag-rollout",
      "path": "/ai/examples/170-feature-flag-rollout.eml.md",
      "title": "Promotion as a subset question",
      "description": "`feature_flag_rollout.eml` — compares feature flags across environments."
    },
    {
      "id": "171-frozen-membership-quirk",
      "path": "/ai/examples/171-frozen-membership-quirk.eml.md",
      "title": "A set you can ask about but never store",
      "description": "`frozen_membership_quirk.eml` — isolates one genuine CPython quirk."
    },
    {
      "id": "172-grid-coordinate-map",
      "path": "/ai/examples/172-grid-coordinate-map.eml.md",
      "title": "A grid keyed by (row, col)",
      "description": "`grid_coordinate_map.eml` — a sparse grid whose keys are coordinate tuples."
    },
    {
      "id": "173-hashable-key-rules",
      "path": "/ai/examples/173-hashable-key-rules.eml.md",
      "title": "What can be a key",
      "description": "`hashable_key_rules.eml` — shows which values can key a dict or join a set, and what the failure says."
    },
    {
      "id": "174-inventory-diff-report",
      "path": "/ai/examples/174-inventory-diff-report.eml.md",
      "title": "Difference is directional",
      "description": "`inventory_diff_report.eml` — reconciles two stock snapshots."
    },
    {
      "id": "175-memo-key-tuples",
      "path": "/ai/examples/175-memo-key-tuples.eml.md",
      "title": "Why a tuple key, not a joined string",
      "description": "`memo_key_tuples.eml` — memoises a two-argument function by hand."
    },
    {
      "id": "176-move-history-log",
      "path": "/ai/examples/176-move-history-log.eml.md",
      "title": "Tuples doing two jobs at once",
      "description": "`move_history_log.eml` — logs game moves as tuples inside a tuple."
    },
    {
      "id": "177-partial-order-trap",
      "path": "/ai/examples/177-partial-order-trap.eml.md",
      "title": "Sorting by a partial order",
      "description": "`partial_order_trap.eml` — runs the same sort over the same sets in two input orders."
    },
    {
      "id": "178-pattern-tiler",
      "path": "/ai/examples/178-pattern-tiler.eml.md",
      "title": "Repetition preserves the type",
      "description": "`pattern_tiler.eml` — tiles a pattern to fill a width."
    },
    {
      "id": "179-percent-format-arguments",
      "path": "/ai/examples/179-percent-format-arguments.eml.md",
      "title": "What `%` does with its right operand",
      "description": "`percent_format_arguments.eml` — walks the argument rules of %-formatting."
    },
    {
      "id": "180-permission-set-algebra",
      "path": "/ai/examples/180-permission-set-algebra.eml.md",
      "title": "For sets, `<` means subset",
      "description": "`permission_set_algebra.eml` — models roles and permissions with set algebra."
    },
    {
      "id": "181-prerequisite-checker",
      "path": "/ai/examples/181-prerequisite-checker.eml.md",
      "title": "\"Are all requirements met\" is a subset test",
      "description": "`prerequisite_checker.eml` — checks course eligibility."
    },
    {
      "id": "182-route-path-builder",
      "path": "/ai/examples/182-route-path-builder.eml.md",
      "title": "Extending a path without mutating it",
      "description": "`route_path_builder.eml` — builds a route by concatenating tuples."
    },
    {
      "id": "183-set-order-discipline",
      "path": "/ai/examples/183-set-order-discipline.eml.md",
      "title": "What you may and may not ask a set",
      "description": "`set_order_discipline.eml` — states the line between order-free and order-dependent set operations."
    },
    {
      "id": "184-type-preserving-ops",
      "path": "/ai/examples/184-type-preserving-ops.eml.md",
      "title": "One operator, four meanings",
      "description": "`type_preserving_ops.eml` — shows what `+` and `*` mean per operand family."
    },
    {
      "id": "185-bracket-tree-outline",
      "path": "/ai/examples/185-bracket-tree-outline.eml.md",
      "title": "Bracket tree: the round trip is the proof",
      "description": "`bracket_tree_outline.eml` parses a bracketed string into a tree, renders it as an indented outline, and serialises it back."
    },
    {
      "id": "186-connection-pool-release",
      "path": "/ai/examples/186-connection-pool-release.eml.md",
      "title": "Connection pool: release on every exit path",
      "description": "`connection_pool_release.eml` is a lease-based connection pool whose releases are driven by a context manager. It exists to answer one question: does the release still happen when the body does **not** fall off the end?"
    },
    {
      "id": "187-event-router-ignored-branches",
      "path": "/ai/examples/187-event-router-ignored-branches.eml.md",
      "title": "Event router: branches that do nothing, on purpose",
      "description": "`event_router_ignored_branches.eml` routes four kinds of event and **deliberately ignores two of them**."
    },
    {
      "id": "188-factorial-exact-digits",
      "path": "/ai/examples/188-factorial-exact-digits.eml.md",
      "title": "50! exactly, checked four ways",
      "description": "`factorial_exact_digits.eml` computes 50! and then checks it against facts known independently of the multiplication that produced it."
    },
    {
      "id": "189-fibonacci-cassini-exact",
      "path": "/ai/examples/189-fibonacci-cassini-exact.eml.md",
      "title": "Fibonacci to F(200), checked with Cassini",
      "description": "`fibonacci_cassini_exact.eml` builds Fibonacci numbers to F(200) and checks them with an identity a float implementation cannot pass and cannot fake."
    },
    {
      "id": "190-long-division-exact",
      "path": "/ai/examples/190-long-division-exact.eml.md",
      "title": "Exact integer division, by hand",
      "description": "`long_division_exact.eml` implements exact integer division digit by digit, **because EML-P has no `//` operator**."
    },
    {
      "id": "191-money-in-cents",
      "path": "/ai/examples/191-money-in-cents.eml.md",
      "title": "The same invoice, in floats and in cents",
      "description": "`money_in_cents.eml` totals one invoice twice — in floating-point dollars and in integer cents — and reconciles both against a bank that only accepts whole cents."
    },
    {
      "id": "192-nested-config-merge",
      "path": "/ai/examples/192-nested-config-merge.eml.md",
      "title": "Deep config merge: the sibling that disappears",
      "description": "`nested_config_merge.eml` merges layered configuration — defaults, then overrides — the way every “defaults, environment, command line” system has to."
    },
    {
      "id": "193-pascal-row-exact",
      "path": "/ai/examples/193-pascal-row-exact.eml.md",
      "title": "Row 80 of Pascal’s triangle, exactly",
      "description": "`pascal_row_exact.eml` builds row 80 of Pascal's triangle by addition and checks it against three global properties."
    },
    {
      "id": "194-recursive-descent-calculator",
      "path": "/ai/examples/194-recursive-descent-calculator.eml.md",
      "title": "Recursive descent: precedence lives in the nesting",
      "description": "`recursive_descent_calculator.eml` parses and evaluates arithmetic expressions with real operator precedence, parentheses, unary minus and error reporting."
    },
    {
      "id": "195-retry-with-backoff-ledger",
      "path": "/ai/examples/195-retry-with-backoff-ledger.eml.md",
      "title": "Retry with backoff, and the ledger that audits it",
      "description": "`retry_with_backoff_ledger.eml` implements exponential-backoff retry and then proves the retry loop did not lie about what it did."
    },
    {
      "id": "196-ring-buffer-bounds-report",
      "path": "/ai/examples/196-ring-buffer-bounds-report.eml.md",
      "title": "Ring buffer: telling a bad read from a bad write",
      "description": "`ring_buffer_bounds_report.eml` is a fixed-capacity ring buffer whose error handler tells reads and writes apart **by reading the message**."
    },
    {
      "id": "197-shift-roster-constraints",
      "path": "/ai/examples/197-shift-roster-constraints.eml.md",
      "title": "Shift roster: the builder does not get to grade itself",
      "description": "`shift_roster_constraints.eml` builds a weekly roster greedily under four hard constraints, then audits the finished roster against those same constraints re-derived from scratch."
    },
    {
      "id": "198-thermostat-class-defaults",
      "path": "/ai/examples/198-thermostat-class-defaults.eml.md",
      "title": "Thermostats: a factory default shared until it is overridden",
      "description": "`thermostat_class_defaults.eml` models the shape every settings object has — a default on the **class**, a per-object override on the **instance** — and checks that the boundary between them holds."
    },
    {
      "id": "199-transaction-rollback-finally",
      "path": "/ai/examples/199-transaction-rollback-finally.eml.md",
      "title": "Transaction log: `finally` as the only thing holding the books",
      "description": "`transaction_rollback_finally.eml` is a small transaction log in which `finally` is the only thing standing between a half-applied batch and a consistent one."
    },
    {
      "id": "200-base32-codec-padding",
      "path": "/ai/examples/200-base32-codec-padding.eml.md",
      "title": "The padding table is the whole specification",
      "description": "`base32_codec_padding.eml` is a hand-written Base32 codec, and the only hard part is how many `=` characters go on the end."
    },
    {
      "id": "201-dict-key-identity-collapse",
      "path": "/ai/examples/201-dict-key-identity-collapse.eml.md",
      "title": "Three keys that are one key",
      "description": "`dict_key_identity_collapse.eml` is about `{1: \"int\", 1.0: \"float\", True: \"bool\"}` having one entry, and the asymmetry that makes it hard to see."
    },
    {
      "id": "202-dimensional-unit-guard",
      "path": "/ai/examples/202-dimensional-unit-guard.eml.md",
      "title": "A factor table will convert metres to seconds",
      "description": "`dimensional_unit_guard.eml` converts between units and refuses to convert between dimensions - which is the part a factor table cannot do."
    },
    {
      "id": "203-fixed-width-record-parser",
      "path": "/ai/examples/203-fixed-width-record-parser.eml.md",
      "title": "Fixed-width records: where clamping does the most damage",
      "description": "`fixed_width_record_parser.eml` parses column-offset records — the format in which a truncated line and a valid line are indistinguishable after the slices have run."
    },
    {
      "id": "204-iban-mod97-validator",
      "path": "/ai/examples/204-iban-mod97-validator.eml.md",
      "title": "Mod 97 on a number too big to hold",
      "description": "`iban_mod97_validator.eml` validates IBANs by the ISO 13616 rule - rearrange, expand letters to digits, take the whole thing mod 97 - and does it twice, because the number does not fit anywhere."
    },
    {
      "id": "205-interval-overlap-detector",
      "path": "/ai/examples/205-interval-overlap-detector.eml.md",
      "title": "Back-to-back is not an overlap",
      "description": "`interval_overlap_detector.eml` decides whether two time intervals overlap, and the whole case is one comparison operator."
    },
    {
      "id": "206-longest-palindromic-run",
      "path": "/ai/examples/206-longest-palindromic-run.eml.md",
      "title": "Longest palindrome: an off-by-one that produces a longer answer",
      "description": "`longest_palindromic_run.eml` finds the longest palindromic substring by expanding around every centre, and never trusts what it extracts."
    },
    {
      "id": "207-rotate-without-step",
      "path": "/ai/examples/207-rotate-without-step.eml.md",
      "title": "Rotation: the two-slice idiom, and why it needs a modulo",
      "description": "`rotate_without_step.eml` rotates a sequence with two slices and reverses one without a step — because EML-P slices take two parts and `xs[::-1]` does not parse."
    },
    {
      "id": "208-run-length-escaping",
      "path": "/ai/examples/208-run-length-escaping.eml.md",
      "title": "The fix that feels right and makes it worse",
      "description": "`run_length_escaping.eml` implements run-length encoding three ways, and the point is that the middle one - the obvious fix - is worse than the bug it was meant to repair."
    },
    {
      "id": "209-schema-validator-all-errors",
      "path": "/ai/examples/209-schema-validator-all-errors.eml.md",
      "title": "Report every error, not the first one",
      "description": "`schema_validator_all_errors.eml` validates records against a small schema twice - stopping at the first problem, and collecting all of them - and checks the thing that separates the two."
    },
    {
      "id": "210-sliding-window-slices",
      "path": "/ai/examples/210-sliding-window-slices.eml.md",
      "title": "Sliding windows: the bug is always at the ends",
      "description": "`sliding_window_slices.eml` builds sliding windows over a sequence entirely from slices, and checks them where every windowing bug lives — at the two boundaries."
    },
    {
      "id": "211-sort-stability-witness",
      "path": "/ai/examples/211-sort-stability-witness.eml.md",
      "title": "Sorted is not the same as stable",
      "description": "`sort_stability_witness.eml` runs two insertion sorts that differ by one character, verifies both sort correctly, and shows only one of them is usable."
    },
    {
      "id": "212-state-machine-trace-audit",
      "path": "/ai/examples/212-state-machine-trace-audit.eml.md",
      "title": "Two different ways for a log to be illegal",
      "description": "`state_machine_trace_audit.eml` replays an event log against a state machine and reports what the machine did with each event - rather than whether the log as a whole is valid."
    },
    {
      "id": "213-text-truncate-ellipsis",
      "path": "/ai/examples/213-text-truncate-ellipsis.eml.md",
      "title": "Truncating with an ellipsis: three silent bugs in one line",
      "description": "`text_truncate_ellipsis.eml` truncates text to a column budget, and shows what the four-line version everyone writes actually does."
    },
    {
      "id": "214-verhoeff-check-digit",
      "path": "/ai/examples/214-verhoeff-check-digit.eml.md",
      "title": "A checksum that notices order",
      "description": "`verhoeff_check_digit.eml` implements the Verhoeff check digit and measures the thing it does that Luhn cannot."
    },
    {
      "id": "215-at-least-once-delivery",
      "path": "/ai/examples/215-at-least-once-delivery.eml.md",
      "title": "Duplicates are a property of the handler",
      "description": "`at_least_once_delivery.eml` replays a delivery log with known redeliveries through three handlers and compares each against the answer computed from the distinct messages alone."
    },
    {
      "id": "216-average-of-averages",
      "path": "/ai/examples/216-average-of-averages.eml.md",
      "title": "Winning every group and losing the company",
      "description": "`average_of_averages.eml` computes a company-wide rate two ways over the same data and shows the two disagree about which method is better."
    },
    {
      "id": "217-cache-staleness-witness",
      "path": "/ai/examples/217-cache-staleness-witness.eml.md",
      "title": "Evicting the key you wrote is not enough",
      "description": "`cache_staleness_witness.eml` replays a write history against three cache-invalidation strategies and asks every question after every write."
    },
    {
      "id": "218-case-fold-collisions",
      "path": "/ai/examples/218-case-fold-collisions.eml.md",
      "title": "Two ways to lose a user, one of them silent",
      "description": "`case_fold_collisions.eml` folds usernames for uniqueness three ways and measures each against a separately stated ground truth about who is who."
    },
    {
      "id": "219-comparator-not-a-total-order",
      "path": "/ai/examples/219-comparator-not-a-total-order.eml.md",
      "title": "Sorted twelve different ways",
      "description": "`comparator_not_a_total_order.eml` sorts one multiset under three comparators, over every permutation of the input, and counts the distinct answers."
    },
    {
      "id": "220-error-masked-by-finally",
      "path": "/ai/examples/220-error-masked-by-finally.eml.md",
      "title": "Cleanup that deletes the reason",
      "description": "`error_masked_by_finally.eml` runs the same failing operation through four `try/finally` shapes and reports what the caller actually observes."
    },
    {
      "id": "221-float-key-instability",
      "path": "/ai/examples/221-float-key-instability.eml.md",
      "title": "Three wrong premises about floating point",
      "description": "`float_key_instability.eml` looks values up in a table keyed by a number that was computed rather than typed, and records the three premises it started from — all wrong."
    },
    {
      "id": "222-idempotence-witness",
      "path": "/ai/examples/222-idempotence-witness.eml.md",
      "title": "Safe once, not safe twice",
      "description": "`idempotence_witness.eml` applies four cleanup routines up to five times each and checks the property that every retry depends on: `f(f(x)) == f(x)`."
    },
    {
      "id": "223-lost-update-schedule",
      "path": "/ai/examples/223-lost-update-schedule.eml.md",
      "title": "Every interleaving, written down",
      "description": "`lost_update_schedule.eml` enumerates all 20 interleavings of two read-modify-write transactions and runs three strategies over every one."
    },
    {
      "id": "224-memo-key-collision",
      "path": "/ai/examples/224-memo-key-collision.eml.md",
      "title": "The cache key that answers the wrong question",
      "description": "`memo_key_collision.eml` memoizes a two-argument function three ways and measures which of the three keys is a key at all."
    },
    {
      "id": "225-partial-parse-accepted",
      "path": "/ai/examples/225-partial-parse-accepted.eml.md",
      "title": "The parser that reads as far as it understands",
      "description": "`partial_parse_accepted.eml` compares two parsers for the same grammar, differing by one check: whether the whole input was consumed."
    },
    {
      "id": "226-partial-write-rollback",
      "path": "/ai/examples/226-partial-write-rollback.eml.md",
      "title": "Validating first is not a way back",
      "description": "`partial_write_rollback.eml` replays a transfer history against three write strategies and checks the one invariant that can see the damage."
    },
    {
      "id": "227-successive-percentage-order",
      "path": "/ai/examples/227-successive-percentage-order.eml.md",
      "title": "Three tiers of commuting, and only one is safe",
      "description": "`successive_percentage_order.eml` applies promotion stacks in every order over several prices and counts the distinct outcomes."
    },
    {
      "id": "228-timeout-vs-completion",
      "path": "/ai/examples/228-timeout-vs-completion.eml.md",
      "title": "A timeout is a fact about the client",
      "description": "`timeout_vs_completion.eml` sweeps a matrix of when the server finishes against how long the client waits, under three client policies."
    },
    {
      "id": "229-top-n-undefined-tiebreak",
      "path": "/ai/examples/229-top-n-undefined-tiebreak.eml.md",
      "title": "The top three is not a set",
      "description": "`top_n_undefined_tiebreak.eml` computes \"the top three\" four ways over every permutation of a leaderboard with a three-way tie."
    },
    {
      "id": "230-absent-vs-empty-vs-zero",
      "path": "/ai/examples/230-absent-vs-empty-vs-zero.eml.md",
      "title": "Three kinds of nothing, one falsy value",
      "description": "`absent_vs_empty_vs_zero.eml` merges a user config over defaults three ways and compares each against a separately stated intent."
    },
    {
      "id": "231-apportionment-remainder",
      "path": "/ai/examples/231-apportionment-remainder.eml.md",
      "title": "Every part rounded correctly, and the total is wrong",
      "description": "`apportionment_remainder.eml` allocates a whole across shares three ways and checks that the parts sum back to the whole."
    },
    {
      "id": "232-base-conversion-roundtrip",
      "path": "/ai/examples/232-base-conversion-roundtrip.eml.md",
      "title": "Round-tripping and canonicality are different claims",
      "description": "`base_conversion_roundtrip.eml` encodes and decodes integers in every base from 2 to 16 and checks two separate properties."
    },
    {
      "id": "233-boundary-inclusive-or-not",
      "path": "/ai/examples/233-boundary-inclusive-or-not.eml.md",
      "title": "Four readings of one sentence, differing on two values",
      "description": "`boundary_inclusive_or_not.eml` compares the four interval conventions and checks the property consecutive ranges need."
    },
    {
      "id": "234-catastrophic-cancellation",
      "path": "/ai/examples/234-catastrophic-cancellation.eml.md",
      "title": "Same algebra, and one arrangement keeps its digits",
      "description": "`catastrophic_cancellation.eml` computes variance, a quadratic root and a difference of squares two ways each, against an exact reference."
    },
    {
      "id": "235-counter-vs-histogram",
      "path": "/ai/examples/235-counter-vs-histogram.eml.md",
      "title": "The percentile you threw away at write time",
      "description": "`counter_vs_histogram.eml` summarises two workloads with the same mean and very different tails, then tries to recover the percentiles from each summary."
    },
    {
      "id": "236-empty-input-conventions",
      "path": "/ai/examples/236-empty-input-conventions.eml.md",
      "title": "Four empty answers are forced; the fifth has none",
      "description": "`empty_input_conventions.eml` checks each aggregate's empty-input answer against the law that forces it."
    },
    {
      "id": "237-event-order-without-clock",
      "path": "/ai/examples/237-event-order-without-clock.eml.md",
      "title": "Most pairs right, and the ones that matter inverted",
      "description": "`event_order_without_clock.eml` reconstructs an event order from timestamps written by two clocks that disagree, and checks it against causality."
    },
    {
      "id": "238-fixed-width-overflow",
      "path": "/ai/examples/238-fixed-width-overflow.eml.md",
      "title": "Correct in Python, wrong everywhere it will be ported",
      "description": "`fixed_width_overflow.eml` implements 32-bit signed arithmetic explicitly and runs the same computations both ways."
    },
    {
      "id": "239-integer-division-sign",
      "path": "/ai/examples/239-integer-division-sign.eml.md",
      "title": "Two right answers to -7 / 2",
      "description": "`integer_division_sign.eml` implements truncating division alongside Python's floor division and checks both against the identity that defines them."
    },
    {
      "id": "240-log-sampling-bias",
      "path": "/ai/examples/240-log-sampling-bias.eml.md",
      "title": "Same number of records, different questions",
      "description": "`log_sampling_bias.eml` samples a request stream two ways and measures which questions each sample can still answer."
    },
    {
      "id": "241-metric-cardinality-explosion",
      "path": "/ai/examples/241-metric-cardinality-explosion.eml.md",
      "title": "A label that looked like it had five values",
      "description": "`metric_cardinality_explosion.eml` counts the time series each labelling produces and compares them against what the label domains predict."
    },
    {
      "id": "242-percentage-points-vs-percent",
      "path": "/ai/examples/242-percentage-points-vs-percent.eml.md",
      "title": "Points add and reverse; relative changes do not",
      "description": "`percentage_points_vs_percent.eml` distinguishes the two units hiding behind \"it went up 2%\", in integer basis points so no float enters the comparison."
    },
    {
      "id": "243-silent-drop-accounting",
      "path": "/ai/examples/243-silent-drop-accounting.eml.md",
      "title": "Same output, and only one can say what went missing",
      "description": "`silent_drop_accounting.eml` runs a four-stage pipeline twice — once plain, once with a ledger — and reconciles the counts."
    },
    {
      "id": "244-text-length-is-three-numbers",
      "path": "/ai/examples/244-text-length-is-three-numbers.eml.md",
      "title": "One character, three lengths",
      "description": "`text_length_is_three_numbers.eml` measures the same strings in code points, UTF-8 bytes and terminal columns."
    },
    {
      "id": "245-whitespace-normalization-loss",
      "path": "/ai/examples/245-whitespace-normalization-loss.eml.md",
      "title": "All three are idempotent; only one is lossless",
      "description": "`whitespace_normalization_loss.eml` compares trim, collapse and strip-all as normalizers, and checks the property each actually needs."
    },
    {
      "id": "246-age-at-date-leap-day",
      "path": "/ai/examples/246-age-at-date-leap-day.eml.md",
      "title": "Age at a date — three defensible answers on 29 February",
      "description": "`age_at_date_leap_day.eml` computes age four ways and compares them against a reference table written from the definition rather than from any of the implementations."
    },
    {
      "id": "247-backoff-thundering-herd",
      "path": "/ai/examples/247-backoff-thundering-herd.eml.md",
      "title": "Backoff and the thundering herd — a policy that synchronises load",
      "description": "`backoff_thundering_herd.eml` retries 100 clients after a shared outage under four policies — fixed, exponential, jittered, decorrelated — and reports the **peak** concurrent retry count, not the average."
    },
    {
      "id": "248-bounded-queue-backpressure",
      "path": "/ai/examples/248-bounded-queue-backpressure.eml.md",
      "title": "Bounded queue backpressure — a bigger buffer is not more capacity",
      "description": "`bounded_queue_backpressure.eml` runs one burst arrival pattern through three full-queue policies — drop-newest, drop-oldest, block — at three queue sizes, and reports loss, stalls, and the age of what was served."
    },
    {
      "id": "249-cache-eviction-policy",
      "path": "/ai/examples/249-cache-eviction-policy.eml.md",
      "title": "Cache eviction policy — the workload decides, not the policy",
      "description": "`cache_eviction_policy.eml` runs LRU, LFU and FIFO over three access traces chosen because each defeats a different policy, and compares all three against the offline (Belady) optimum."
    },
    {
      "id": "250-date-parse-ambiguity",
      "path": "/ai/examples/250-date-parse-ambiguity.eml.md",
      "title": "Date parse ambiguity — information that is not in the string",
      "description": "`date_parse_ambiguity.eml` parses slashed dates under DD/MM and MM/DD and measures how far apart the two readings land."
    },
    {
      "id": "251-deadlock-by-lock-order",
      "path": "/ai/examples/251-deadlock-by-lock-order.eml.md",
      "title": "Deadlock by lock order — the defect that exists only in the pair",
      "description": "`deadlock_by_lock_order.eml` enumerates every interleaving of two transactions that take the same two locks in opposite orders, then repeats the enumeration with a consistent global lock order."
    },
    {
      "id": "252-leader-lease-expiry",
      "path": "/ai/examples/252-leader-lease-expiry.eml.md",
      "title": "Leader lease expiry — two leaders, no bug",
      "description": "`leader_lease_expiry.eml` runs a lease-based leader election under clock skew and sweeps the guard band to find the value that eliminates both overlap (two leaders) and gap (no leader)."
    },
    {
      "id": "253-local-time-gap-and-overlap",
      "path": "/ai/examples/253-local-time-gap-and-overlap.eml.md",
      "title": "Local time gap and overlap — a label, not an instant",
      "description": "`local_time_gap_and_overlap.eml` maps local times to instants across a spring-forward and an autumn-back transition, and counts how many local times survive a round trip."
    },
    {
      "id": "254-month-end-arithmetic",
      "path": "/ai/examples/254-month-end-arithmetic.eml.md",
      "title": "Month-end arithmetic — two correct answers to \"renew monthly\"",
      "description": "`month_end_arithmetic.eml` renews a subscription that started on 31 January twelve times, two ways: by stepping forward one month at a time, and by adding *n* months to the original start date."
    },
    {
      "id": "255-pagination-shifting-data",
      "path": "/ai/examples/255-pagination-shifting-data.eml.md",
      "title": "Pagination over shifting data — the skip nobody notices",
      "description": "`pagination_shifting_data.eml` walks a collection page by page with a row inserted or deleted *before the window* between requests, under offset pagination and keyset (cursor) pagination."
    },
    {
      "id": "256-partitioned-queue-ordering",
      "path": "/ai/examples/256-partitioned-queue-ordering.eml.md",
      "title": "Partitioned queue ordering — the order you routed on, and no other",
      "description": "`partitioned_queue_ordering.eml` routes a stream of related events through 1 to 6 partitions and counts two different kinds of ordering violation: within a partition key, and across keys."
    },
    {
      "id": "257-rate-limit-window-shape",
      "path": "/ai/examples/257-rate-limit-window-shape.eml.md",
      "title": "Rate limit window shape — three limiters, three actual limits",
      "description": "`rate_limit_window_shape.eml` replays a boundary-exploiting client through a fixed window, a sliding window and two token buckets, and reports the largest number of requests admitted in **any** 60-tick span."
    },
    {
      "id": "258-timeout-budget-across-hops",
      "path": "/ai/examples/258-timeout-budget-across-hops.eml.md",
      "title": "Timeout budget across hops — four 5-second timeouts are not a 5-second bound",
      "description": "`timeout_budget_across_hops.eml` sends a request across four services under fixed per-hop timeouts and under a propagated deadline, and reports the user's wait, whether it succeeded, and how much work ran after the caller had already given up."
    },
    {
      "id": "259-two-phase-commit-window",
      "path": "/ai/examples/259-two-phase-commit-window.eml.md",
      "title": "Two-Phase Commit — the in-doubt window",
      "description": "`two_phase_commit_window.eml` runs 2PC through a coordinator crash at every point in the protocol, under three participant strategies for what to do while in doubt: wait, presume-abort, presume-commit."
    },
    {
      "id": "260-week-numbering-conventions",
      "path": "/ai/examples/260-week-numbering-conventions.eml.md",
      "title": "Week numbering conventions — \"week 1\" is at least three weeks",
      "description": "`week_numbering_conventions.eml` sweeps a year day by day under ISO, \"simple\" (week 1 starts 1 January) and US (weeks start Sunday) numbering, and checks the properties a week number needs to work as a grouping key."
    },
    {
      "id": "261-base-rate-and-precision",
      "path": "/ai/examples/261-base-rate-and-precision.eml.md",
      "title": "Base rate and precision — 99% accurate, and most alerts are false",
      "description": "`base_rate_and_precision.eml` holds a test fixed at 99% sensitivity and 99% specificity, sweeps the base rate, and reports precision at each one."
    },
    {
      "id": "262-leading-zero-identifiers",
      "path": "/ai/examples/262-leading-zero-identifiers.eml.md",
      "title": "Leading-zero identifiers — two customers, one key",
      "description": "`leading_zero_identifiers.eml` runs real-shaped identifiers through an integer round trip and counts three separate failures: identifiers that do not come back as themselves, distinct identifiers that **collide**, and identifiers that lose digits to float precision."
    },
    {
      "id": "263-mean-median-skew",
      "path": "/ai/examples/263-mean-median-skew.eml.md",
      "title": "Mean, median, skew — the average nobody experienced",
      "description": "`mean_median_skew.eml` computes three \"averages\" over a skewed latency sample and a symmetric control, and measures two things a report never shows: what fraction of observations are worse than the mean, and how far one extreme value moves each statistic."
    },
    {
      "id": "264-money-float-accumulation",
      "path": "/ai/examples/264-money-float-accumulation.eml.md",
      "title": "Money in floats — a difference that prints as -0.00",
      "description": "`money_float_accumulation.eml` adds the same money two ways — as floats and as integer cents — over runs of 10 to 2000 items, and reports equality, the direction of the gap, and what a reconciliation report would print."
    },
    {
      "id": "265-non-transitive-comparator",
      "path": "/ai/examples/265-non-transitive-comparator.eml.md",
      "title": "Non-transitive comparator — three answers, and the postcondition likes all of them",
      "description": "`non_transitive_comparator.eml` runs three sorting algorithms over every permutation of a comparator with a three-element cycle, and counts distinct outputs."
    },
    {
      "id": "266-percent-composition",
      "path": "/ai/examples/266-percent-composition.eml.md",
      "title": "Percent composition — a positive average quarter and a losing year",
      "description": "`percent_composition.eml` composes sequences of percentage changes and compares the arithmetic mean of the periods against the actual total."
    },
    {
      "id": "267-percentile-composition",
      "path": "/ai/examples/267-percentile-composition.eml.md",
      "title": "Percentile composition — every backend meets its p99, one request in ten is slow",
      "description": "`percentile_composition.eml` computes the p99 of a request that fans out to N backends and waits for all of them, exactly, with no simulation."
    },
    {
      "id": "268-rounding-rule-drift",
      "path": "/ai/examples/268-rounding-rule-drift.eml.md",
      "title": "Rounding rule drift — why banks use the rule that looks arbitrary",
      "description": "`rounding_rule_drift.eml` rounds every half from 0 to 20 under four tie-breaking rules and measures the drift each one introduces into the total."
    },
    {
      "id": "269-simpsons-paradox",
      "path": "/ai/examples/269-simpsons-paradox.eml.md",
      "title": "Simpson's paradox — a treatment that wins every group and loses overall",
      "description": "`simpsons_paradox.eml` compares two treatments on two kinds of case. A has a better success rate on easy cases **and** on hard cases. B has a better rate overall."
    },
    {
      "id": "270-sort-key-mismatch-binary-search",
      "path": "/ai/examples/270-sort-key-mismatch-binary-search.eml.md",
      "title": "Sort key mismatch — the list is sorted, the item is in it, the search says no",
      "description": "`sort_key_mismatch_binary_search.eml` searches a case-insensitively sorted list with a case-sensitive comparison and counts how many present items come back \"not found\"."
    },
    {
      "id": "271-survivorship-in-cohorts",
      "path": "/ai/examples/271-survivorship-in-cohorts.eml.md",
      "title": "Survivorship in cohorts — satisfaction rises as the product gets worse",
      "description": "`survivorship_in_cohorts.eml` tracks three quantities over eight periods of a steadily worsening product: how many users remain, their average tolerance, and their average headroom."
    },
    {
      "id": "272-tolerance-equality-grouping",
      "path": "/ai/examples/272-tolerance-equality-grouping.eml.md",
      "title": "Tolerance equality — no implementation is wrong, because nothing is right",
      "description": "`tolerance_equality_grouping.eml` groups values under a \"close enough to be the same\" relation two ways, over several orderings of the same input."
    },
    {
      "id": "273-top-n-with-ties",
      "path": "/ai/examples/273-top-n-with-ties.eml.md",
      "title": "Top-N with ties — four people tied for third",
      "description": "`top_n_with_ties.eml` asks for the top 3 from a list where four entries share the third-place score, under three defensible policies, over several orderings of the same data."
    },
    {
      "id": "274-unstable-sort-secondary-key",
      "path": "/ai/examples/274-unstable-sort-secondary-key.eml.md",
      "title": "Unstable sort, secondary key — sorted by department, names out of order",
      "description": "`unstable_sort_secondary_key.eml` runs the two-pass sorting idiom — sort by name, then sort by department — with a stable and an unstable second pass, and counts how many departments kept their names in order."
    },
    {
      "id": "275-version-string-ordering",
      "path": "/ai/examples/275-version-string-ordering.eml.md",
      "title": "Version string ordering — correct until the tenth release",
      "description": "`version_string_ordering.eml` sorts one version list three ways — as text, by numeric component, and by numeric component with missing parts padded to zero — and counts how many ordered **pairs** the rules disagree on."
    },
    {
      "id": "276-cache-stampede-single-flight",
      "path": "/ai/examples/276-cache-stampede-single-flight.eml.md",
      "title": "Cache stampede — the hotter the key, the bigger the crowd at expiry",
      "description": "`cache_stampede_single_flight.eml` replays one arrival pattern across expiry boundaries under four policies and counts three costs separately: recomputations, requests that **waited**, and requests served **stale**."
    },
    {
      "id": "277-cost-model-mismatch",
      "path": "/ai/examples/277-cost-model-mismatch.eml.md",
      "title": "Cost model mismatch — a limit of 100 items, and the resource is bytes",
      "description": "`cost_model_mismatch.eml` runs four workloads through a count limit, a byte limit, and a combined limit, and reports the **maximum** bytes admitted under each."
    },
    {
      "id": "278-fair-share-vs-fifo",
      "path": "/ai/examples/278-fair-share-vs-fifo.eml.md",
      "title": "Fair share vs FIFO — a queue discipline picks who it is fair to",
      "description": "`fair_share_vs_fifo.eml` runs one arrival pattern — 20 jobs from one tenant, 1 each from five others — through FIFO and fair queuing, and reports the wait per **tenant** alongside the mean per **job**."
    },
    {
      "id": "279-fixture-avoids-the-boundary",
      "path": "/ai/examples/279-fixture-avoids-the-boundary.eml.md",
      "title": "Fixture avoids the boundary — which values can detect an off-by-one",
      "description": "`fixture_avoids_the_boundary.eml` sweeps every integer in a window across a correct implementation and three off-by-one variants, and reports which values distinguish which."
    },
    {
      "id": "280-flaky-quarantine-drift",
      "path": "/ai/examples/280-flaky-quarantine-drift.eml.md",
      "title": "Flaky quarantine drift — a green pipeline and a third of the gate gone",
      "description": "`flaky_quarantine_drift.eml` runs the quarantine process week by week and records three quantities: the active suite's pass rate, the number of active tests, and the number of **defects the active suite would still catch**."
    },
    {
      "id": "281-idempotency-key-reuse",
      "path": "/ai/examples/281-idempotency-key-reuse.eml.md",
      "title": "Idempotency key reuse — the key says retry and the body says otherwise",
      "description": "`idempotency_key_reuse.eml` runs a request log containing genuine retries, key reuse with a changed body, and unrelated requests through three policies, and counts three outcomes separately."
    },
    {
      "id": "282-mock-ignores-input",
      "path": "/ai/examples/282-mock-ignores-input.eml.md",
      "title": "A mock that ignores its input — the double agreed with every caller",
      "description": "`mock_ignores_input.eml` runs four deliberately broken callers against three test doubles and counts how many each one catches."
    },
    {
      "id": "283-mutation-survival",
      "path": "/ai/examples/283-mutation-survival.eml.md",
      "title": "Mutation survival — the test that runs the most lines checks the least",
      "description": "`mutation_survival.eml` runs one suite against three mutants of one function and reports which tests kill which, alongside the coverage each test achieves."
    },
    {
      "id": "284-new-enum-value-fallthrough",
      "path": "/ai/examples/284-new-enum-value-fallthrough.eml.md",
      "title": "New enum value fallthrough — the else branch answers for a case it never saw",
      "description": "`new_enum_value_fallthrough.eml` asks four consumers the same question about every value in an old enum and then about a value added afterwards, and classifies each answer as right, silently wrong, or a loud failure."
    },
    {
      "id": "285-pool-reentrancy-deadlock",
      "path": "/ai/examples/285-pool-reentrancy-deadlock.eml.md",
      "title": "Pool reentrancy deadlock — at capacity means deadlocked",
      "description": "`pool_reentrancy_deadlock.eml` sweeps concurrency against pool size for requests holding one, two and three connections, and reports the first concurrency at which progress becomes impossible."
    },
    {
      "id": "286-retry-amplification",
      "path": "/ai/examples/286-retry-amplification.eml.md",
      "title": "Retry amplification — three retries at three layers is twenty-seven",
      "description": "`retry_amplification.eml` computes the bottom-layer request count for every combination of depth and per-layer attempts, and compares retrying at every layer against retrying at the edge only."
    },
    {
      "id": "287-retry-masked-flakiness",
      "path": "/ai/examples/287-retry-masked-flakiness.eml.md",
      "title": "Retry-masked flakiness — one failure in five reports as 99.2%",
      "description": "`retry_masked_flakiness.eml` sweeps true failure rates against attempt counts and computes the observed pass rate exactly, in integer per-mille arithmetic."
    },
    {
      "id": "288-soft-delete-and-uniqueness",
      "path": "/ai/examples/288-soft-delete-and-uniqueness.eml.md",
      "title": "Soft delete and uniqueness — the row is gone and the address is taken",
      "description": "`soft_delete_and_uniqueness.eml` runs sign-ups, deletions and re-sign-ups against four schemes and counts two errors separately: registrations **wrongly refused**, and duplicate **active** accounts wrongly allowed."
    },
    {
      "id": "289-state-from-events-vs-stored",
      "path": "/ai/examples/289-state-from-events-vs-stored.eml.md",
      "title": "State from events vs stored — replay is correct only for some orders",
      "description": "`state_from_events_vs_stored.eml` applies every ordering of one event set and counts distinct final states, then does the same for a stored status column written by whichever handler finished last."
    },
    {
      "id": "290-status-field-conflation",
      "path": "/ai/examples/290-status-field-conflation.eml.md",
      "title": "Status field conflation — the states that cannot be written down",
      "description": "`status_field_conflation.eml` enumerates an order's real state space as the product of two independent dimensions and marks which points a single status enum can name."
    },
    {
      "id": "291-admin-bypass-skips-validation",
      "path": "/ai/examples/291-admin-bypass-skips-validation.eml.md",
      "title": "Admin bypass skips validation — an early return is a jump, not a permission",
      "description": "`admin_bypass_skips_validation.eml` pushes the same seven-record migration payload through two save paths under three roles, then reads the store back and re-validates every row that is in it."
    },
    {
      "id": "292-count-leaks-hidden-items",
      "path": "/ai/examples/292-count-leaks-hidden-items.eml.md",
      "title": "Count leaks hidden items — the rows were filtered and the total was not",
      "description": "`count_leaks_hidden_items.eml` pages through a listing as four viewers, compares what the header claims against what the pages deliver, and then runs the attack that difference enables."
    },
    {
      "id": "293-dedup-key-merges-distinct-records",
      "path": "/ai/examples/293-dedup-key-merges-distinct-records.eml.md",
      "title": "Dedup key merges distinct records — both curves rose, and one was being watched",
      "description": "`dedup_key_merges_distinct_records.eml` sweeps four key definitions from strict to loose over seven records carrying ground-truth entity ids, and scores each key on duplicates joined, strangers joined, and duplicates missed."
    },
    {
      "id": "294-deleted-row-survives-in-derived-copies",
      "path": "/ai/examples/294-deleted-row-survives-in-derived-copies.eml.md",
      "title": "Deleted row survives in derived copies — the delete succeeded against the one surface nobody searches",
      "description": "`deleted_row_survives_in_derived_copies.eml` deletes a record and then interrogates each surface the way a user reaches it, reporting which ones still return content. It also runs the deletion audit the system has."
    },
    {
      "id": "295-denormalized-total-drifts",
      "path": "/ai/examples/295-denormalized-total-drifts.eml.md",
      "title": "Denormalized total drifts — the reconciliation compared a number with itself",
      "description": "`denormalized_total_drifts.eml` applies one ordinary edit to each of four orders, compares the stored total against a total recomputed from the line items, and then runs both the reconciliation the system has and one that re-derives."
    },
    {
      "id": "296-deny-loses-to-allow",
      "path": "/ai/examples/296-deny-loses-to-allow.eml.md",
      "title": "Deny loses to allow — the role that cannot take anything away",
      "description": "`deny_loses_to_allow.eml` computes each user's effective permissions two ways — as a **union of grants** and with **deny winning** — and then sweeps the structural question directly: can attaching a role ever remove a permission?"
    },
    {
      "id": "297-flag-outlives-its-evidence",
      "path": "/ai/examples/297-flag-outlives-its-evidence.eml.md",
      "title": "Flag outlives its evidence — the conclusion stayed and the link back was never stored",
      "description": "`flag_outlives_its_evidence.eml` starts from a stored flag set that is consistent with the evidence by construction, retracts two signals and adds one, then re-derives every flag and splits the disagreements by direction."
    },
    {
      "id": "298-inherited-permission-after-move",
      "path": "/ai/examples/298-inherited-permission-after-move.eml.md",
      "title": "Inherited permission after move — the cache refreshes on write, and a move is not a write",
      "description": "`inherited_permission_after_move.eml` moves four documents between folders and compares, for every (user, action) pair, the grants cached on the document against the grants its current folder actually gives."
    },
    {
      "id": "299-match-predicate-not-transitive",
      "path": "/ai/examples/299-match-predicate-not-transitive.eml.md",
      "title": "Match predicate not transitive — there is no grouping to be right about",
      "description": "`match_predicate_not_transitive.eml` sweeps **all 24 orderings** of four records through a single-pass clusterer, counts how many distinct answers come out, then asks the transitive closure for its answer and checks it against the predicate that produced it."
    },
    {
      "id": "300-merge-drops-the-differing-field",
      "path": "/ai/examples/300-merge-drops-the-differing-field.eml.md",
      "title": "Merge drops the differing field — a gap and a contradiction are the same shape in the code",
      "description": "`merge_drops_the_differing_field.eml` merges four record pairs field by field with \"first non-empty wins\", then re-runs every merge with the two sources swapped and counts how many merged fields change."
    },
    {
      "id": "301-merge-invents-a-match",
      "path": "/ai/examples/301-merge-invents-a-match.eml.md",
      "title": "Merge invents a match — one sweep wrote a value no record held, the next believed it",
      "description": "`merge_invents_a_match.eml` runs a dedup job one sweep at a time and, for every merge, asks whether any original member of one side matched any original member of the other under the same matcher. It compares against the identical job with normalisation moved to compare time."
    },
    {
      "id": "302-path-resolved-twice",
      "path": "/ai/examples/302-path-resolved-twice.eml.md",
      "title": "Path resolved twice — the check and the write agreed on the name, not the document",
      "description": "`path_resolved_twice.eml` runs three requests against every point at which a rename can be interleaved, under two handlers: one that resolves the name twice (once to authorise, once to act) and one that resolves it once and carries the identity."
    },
    {
      "id": "303-rate-numerator-outgrows-denominator",
      "path": "/ai/examples/303-rate-numerator-outgrows-denominator.eml.md",
      "title": "Rate numerator outgrows denominator — the clamp removed the evidence and kept the error",
      "description": "`rate_numerator_outgrows_denominator.eml` computes a conversion rate three ways — with mismatched populations, with the mismatch clamped to 100%, and with both sides drawn from the same population — and reports how many segments each one gets wrong."
    },
    {
      "id": "304-rollup-double-counts-shared-parent",
      "path": "/ai/examples/304-rollup-double-counts-shared-parent.eml.md",
      "title": "Rollup double counts shared parent — the thing it is walking is not a tree",
      "description": "`rollup_double_counts_shared_parent.eml` runs the recursive rollup and a set-based rollup that visits each node once, then attributes the gap to specific nodes by counting how many distinct root-to-node paths reach each one."
    },
    {
      "id": "305-survivor-id-still-referenced",
      "path": "/ai/examples/305-survivor-id-still-referenced.eml.md",
      "title": "Survivor id still referenced — the rows vanished from one report and stayed in the other",
      "description": "`survivor_id_still_referenced.eml` merges two customer records two ways — hard delete, and tombstone with a redirect — then runs two ordinary reports over each result and compares them against the pre-merge totals."
    },
    {
      "id": "306-abandoned-work-still-lands",
      "path": "/ai/examples/306-abandoned-work-still-lands.eml.md",
      "title": "Abandoned work still lands — the caller stopped waiting and the work did not stop working",
      "description": "`abandoned_work_still_lands.eml` runs six requests through three handlers — deadline only, deadline plus a cancel signal, and deadline plus an idempotency key — and compares what the user was **told** against what the store ends up holding."
    },
    {
      "id": "307-aggregates-that-do-not-decompose",
      "path": "/ai/examples/307-aggregates-that-do-not-decompose.eml.md",
      "title": "Aggregates that do not decompose — four survived partitioning, three did not, and the call sites are identical",
      "description": "`aggregates_that_do_not_decompose.eml` computes seven aggregates over sixteen values both whole and per-partition, at three partition sizes, and reports which ones agree at every size."
    },
    {
      "id": "308-attribution-window-picks-the-winner",
      "path": "/ai/examples/308-attribution-window-picks-the-winner.eml.md",
      "title": "Attribution window picks the winner — same model, same data, decided by a number in a config file",
      "description": "`attribution_window_picks_the_winner.eml` holds last-touch attribution fixed and sweeps only the lookback window, reporting per-channel credit, the winner, and how many conversions end up attributed to nobody."
    },
    {
      "id": "309-batch-boundary-changes-order",
      "path": "/ai/examples/309-batch-boundary-changes-order.eml.md",
      "title": "Batch boundary changes order — every batch was handled correctly and the answer was wrong",
      "description": "`batch_boundary_changes_order.eml` runs the same sort-and-dedup pipeline at seven batch sizes over twelve records and compares each result against the batch-free answer."
    },
    {
      "id": "310-cancel-is-not-idempotent",
      "path": "/ai/examples/310-cancel-is-not-idempotent.eml.md",
      "title": "Cancel is not idempotent — both designs cancel correctly once",
      "description": "`cancel_is_not_idempotent.eml` applies cancel one, two and three times to the same booking under two designs — cancel-as-delta and cancel-as-target-state — and reads the resulting seats and refunds back out."
    },
    {
      "id": "311-cancel-lands-between-check-and-act",
      "path": "/ai/examples/311-cancel-lands-between-check-and-act.eml.md",
      "title": "Cancel lands between check and act — accepted, recorded, and too early to matter",
      "description": "`cancel_lands_between_check_and_act.eml` sweeps a cancellation's arrival across every tick of a six-step operation, under three placements of the `if cancelled` check, and counts how many arrival times produce the effect anyway."
    },
    {
      "id": "312-cancelled-work-still-holds-its-slot",
      "path": "/ai/examples/312-cancelled-work-still-holds-its-slot.eml.md",
      "title": "Cancelled work still holds its slot — the pool ran out on a request that was fine",
      "description": "`cancelled_work_still_holds_its_slot.eml` replays a twelve-request stream through a three-slot pool under two release placements, and reports the pool over time plus which request first gets refused."
    },
    {
      "id": "313-flush-timer-is-a-debounce",
      "path": "/ai/examples/313-flush-timer-is-a-debounce.eml.md",
      "title": "Flush timer is a debounce — the latency guarantee held while the system was idle",
      "description": "`flush_timer_is_a_debounce.eml` replays three arrival streams through two buffer implementations and reports the worst latency any record actually experienced, against the bound the timer is supposed to provide."
    },
    {
      "id": "314-last-batch-takes-a-different-path",
      "path": "/ai/examples/314-last-batch-takes-a-different-path.eml.md",
      "title": "Last batch takes a different path — the remainder is zero in every fixture",
      "description": "`last_batch_takes_a_different_path.eml` runs every input length from 0 to 12 through a buffered writer with batch size 4, and checks whether the records that left through the drain path got the same treatment as the rest."
    },
    {
      "id": "315-last-touch-vs-first-touch",
      "path": "/ai/examples/315-last-touch-vs-first-touch.eml.md",
      "title": "Last touch vs first touch — four models, different winners, identical totals",
      "description": "`last_touch_vs_first_touch.eml` scores four channels under four attribution models over eight conversions, computes each model's ranking, and reports how far channels move."
    },
    {
      "id": "316-partial-batch-failure-retries-everything",
      "path": "/ai/examples/316-partial-batch-failure-retries-everything.eml.md",
      "title": "Partial batch failure retries everything — one record that can never succeed rewrote every record that already had",
      "description": "`partial_batch_failure_retries_everything.eml` sends six records — one of them permanently bad — through three writers, and counts what the store holds afterwards plus how many records were delivered more than once."
    },
    {
      "id": "317-rollback-can-fail-too",
      "path": "/ai/examples/317-rollback-can-fail-too.eml.md",
      "title": "Rollback can fail too — every state it can stop in is one the system cannot name",
      "description": "`rollback_can_fail_too.eml` sweeps every cancellation point of a four-step operation against every undo that can refuse, and classifies the resulting state."
    },
    {
      "id": "318-shared-cause-has-no-unique-split",
      "path": "/ai/examples/318-shared-cause-has-no-unique-split.eml.md",
      "title": "Shared cause has no unique split — every factor was necessary, none was sufficient, and the form has one box",
      "description": "`shared_cause_has_no_unique_split.eml` runs a necessity test on every factor of three incidents — remove it, does the outcome still happen — then applies five allocation rules and reports how often they disagree."
    },
    {
      "id": "319-two-systems-both-claim-it",
      "path": "/ai/examples/319-two-systems-both-claim-it.eml.md",
      "title": "Two systems both claim it — both reports were honest and their sum was not",
      "description": "`two_systems_both_claim_it.eml` runs two attribution platforms over the same ten conversions, reports each one's internal reconciliation, then compares the naive sum against reality and attributes the excess."
    },
    {
      "id": "320-usage-reported-as-effect",
      "path": "/ai/examples/320-usage-reported-as-effect.eml.md",
      "title": "Usage reported as effect — the metric was largest where the effect was zero",
      "description": "`usage_reported_as_effect.eml` carries a hidden per-user field saying what each user would have done *without* the feature, computes the reported metric and the true lift side by side, and sweeps the rollout to show which of the two moves."
    },
    {
      "id": "321-commuting-until-a-third-step-arrives",
      "path": "/ai/examples/321-commuting-until-a-third-step-arrives.eml.md",
      "title": "Commuting until a third step arrives — the pair was interchangeable, the pipeline stopped it being a pair",
      "description": "`commuting_until_a_third_step_arrives.eml` measures whether two steps commute, then measures the same two steps with one more placed between them."
    },
    {
      "id": "322-coverage-through-one-caller-is-not-coverage",
      "path": "/ai/examples/322-coverage-through-one-caller-is-not-coverage.eml.md",
      "title": "Coverage through one caller is not coverage — half the helper has never run",
      "description": "`coverage_through_one_caller_is_not_coverage.eml` instruments a four-branch helper with a hit counter and runs it from two callers."
    },
    {
      "id": "323-default-chosen-for-the-first-caller",
      "path": "/ai/examples/323-default-chosen-for-the-first-caller.eml.md",
      "title": "The default chosen for the first caller — and the aggregate that hides it",
      "description": "`default_chosen_for_the_first_caller.eml` runs one `average()` with one empty-input default past two callers for whom that default means opposite things."
    },
    {
      "id": "324-each-stage-keeps-a-different-invariant",
      "path": "/ai/examples/324-each-stage-keeps-a-different-invariant.eml.md",
      "title": "Each stage keeps a different invariant — 3 of 3 checks pass, 1 of 4 invariants survives",
      "description": "`each_stage_keeps_a_different_invariant.eml` runs three stages that each name and keep one invariant, then evaluates four invariants at every stage boundary."
    },
    {
      "id": "325-each-stage-verified-nobody-verified-the-seam",
      "path": "/ai/examples/325-each-stage-verified-nobody-verified-the-seam.eml.md",
      "title": "Each stage verified, nobody verified the seam — three green checks and 130 units of missing money",
      "description": "`each_stage_verified_nobody_verified_the_seam.eml` runs a three-stage pipeline over six billing rows, evaluates each stage's own check, and then asks what happened to the money."
    },
    {
      "id": "326-helper-precondition-only-one-caller-guarantees",
      "path": "/ai/examples/326-helper-precondition-only-one-caller-guarantees.eml.md",
      "title": "The precondition only one caller guarantees — a share of 6.0",
      "description": "`helper_precondition_only_one_caller_guarantees.eml` runs one helper — `max(xs) / sum(xs)` — over two callers' input sets and counts the answers that land outside the range its name implies."
    },
    {
      "id": "327-idempotence-does-not-compose",
      "path": "/ai/examples/327-idempotence-does-not-compose.eml.md",
      "title": "Idempotence does not compose — three retry-safe routines, two retry-unsafe pairs",
      "description": "`idempotence_does_not_compose.eml` measures `f(f(x)) == f(x)` for three cleanup routines, then measures the same property for every ordered pair built from them."
    },
    {
      "id": "328-normalisation-makes-the-old-tests-unreachable",
      "path": "/ai/examples/328-normalisation-makes-the-old-tests-unreachable.eml.md",
      "title": "Normalisation makes the old tests unreachable — 8 cases, 3 doing work, coverage down",
      "description": "`normalisation_makes_the_old_tests_unreachable.eml` puts a normaliser in front of a router and measures what happened to the existing test suite."
    },
    {
      "id": "329-not-found-sentinel-meets-negative-indexing",
      "path": "/ai/examples/329-not-found-sentinel-meets-negative-indexing.eml.md",
      "title": "The not-found sentinel meets negative indexing — a miss returns the last row",
      "description": "`not_found_sentinel_meets_negative_indexing.eml` runs six lookups against a four-row table under a guarded and an unguarded call style."
    },
    {
      "id": "330-order-decides-which-defect-you-find",
      "path": "/ai/examples/330-order-decides-which-defect-you-find.eml.md",
      "title": "Order decides which defect you find — two real bugs, one ticket",
      "description": "`order_decides_which_defect_you_find.eml` runs seven batches through two validation stages in both orders and counts what gets reported."
    },
    {
      "id": "331-returns-a-copy-second-caller-assumed-in-place",
      "path": "/ai/examples/331-returns-a-copy-second-caller-assumed-in-place.eml.md",
      "title": "Returns a copy, the second caller assumed in place — the call site is identical",
      "description": "`returns_a_copy_second_caller_assumed_in_place.eml` calls one cleaning helper two ways over the same input and reports what each caller ends up holding."
    },
    {
      "id": "332-the-pair-reaches-a-state-neither-part-lists",
      "path": "/ai/examples/332-the-pair-reaches-a-state-neither-part-lists.eml.md",
      "title": "The pair reaches a state neither part lists — 3 of 3, 3 of 3, and an illegal pair",
      "description": "`the_pair_reaches_a_state_neither_part_lists.eml` drives two state machines from one event stream, exhaustively over every sequence of length three, and collects the combined states that actually occur."
    },
    {
      "id": "333-the-safe-range-of-a-composition",
      "path": "/ai/examples/333-the-safe-range-of-a-composition.eml.md",
      "title": "The safe range of a composition — neither the union nor the intersection",
      "description": "`the_safe_range_of_a_composition.eml` sweeps every integer input from 0 to 100 through two functions with documented safe ranges and reads the composition's safe set off the results."
    },
    {
      "id": "334-upstream-changed-scale-downstream-kept-thresholds",
      "path": "/ai/examples/334-upstream-changed-scale-downstream-kept-thresholds.eml.md",
      "title": "Upstream changed scale, downstream kept thresholds — both test suites green, the report worthless",
      "description": "`upstream_changed_scale_downstream_kept_thresholds.eml` scores twelve inputs on the old scale and the new one, buckets both with the *same unchanged* code, and compares the distributions."
    },
    {
      "id": "335-upstream-guard-makes-the-downstream-guard-dead",
      "path": "/ai/examples/335-upstream-guard-makes-the-downstream-guard-dead.eml.md",
      "title": "The upstream guard makes the downstream guard dead — and the dead one is wrong",
      "description": "`upstream_guard_makes_the_downstream_guard_dead.eml` runs six orders through two validators in series, then through the second one alone."
    },
    {
      "id": "336-no-observable-distinguishes-the-two",
      "path": "/ai/examples/336-no-observable-distinguishes-the-two.eml.md",
      "title": "No observable distinguishes the two — 1800 observations, zero disagreements",
      "description": "`no_observable_distinguishes_the_two.eml` runs an aliasing store and a copying store side by side and counts how many observations tell them apart."
    },
    {
      "id": "337-both-sides-share-the-normaliser",
      "path": "/ai/examples/337-both-sides-share-the-normaliser.eml.md",
      "title": "Both sides share the normaliser — 4 behaviours change, the suite sees 0",
      "description": "`both_sides_share_the_normaliser.eml` runs the same behaviours under two test styles and measures exactly how much sharing a helper costs."
    },
    {
      "id": "338-over-invalidation-hides-a-broken-cache-key",
      "path": "/ai/examples/338-over-invalidation-hides-a-broken-cache-key.eml.md",
      "title": "Over-invalidation hides a broken cache key — and the cache never worked",
      "description": "`over_invalidation_hides_a_broken_cache_key.eml` sweeps a cache's flush interval and reports when a key that drops a field starts answering."
    },
    {
      "id": "339-repairing-in-the-wrong-order-loses-data",
      "path": "/ai/examples/339-repairing-in-the-wrong-order-loses-data.eml.md",
      "title": "Repairing in the wrong order loses data — a compensating pair cannot be fixed one side at a time",
      "description": "`repairing_in_the_wrong_order_loses_data.eml` runs four deployment sequences against a writer and a reader that agree on the wrong field name."
    },
    {
      "id": "340-the-arbiter-asks-one-of-the-parties",
      "path": "/ai/examples/340-the-arbiter-asks-one-of-the-parties.eml.md",
      "title": "The arbiter asks one of the parties — A wins 4 of 4, and is right once",
      "description": "`the_arbiter_asks_one_of_the_parties.eml` resolves disputes between two services three ways and grades each against the event log."
    },
    {
      "id": "341-the-disagreement-was-resolved-by-widening-the-tolerance",
      "path": "/ai/examples/341-the-disagreement-was-resolved-by-widening-the-tolerance.eml.md",
      "title": "The disagreement was resolved by widening the tolerance",
      "description": "`the_disagreement_was_resolved_by_widening_the_tolerance.eml` sweeps a reconciliation tolerance and measures what it admits besides the difference it was chosen for."
    },
    {
      "id": "342-the-golden-was-regenerated-by-the-code",
      "path": "/ai/examples/342-the-golden-was-regenerated-by-the-code.eml.md",
      "title": "The golden was regenerated by the code — 4 of 4 real changes found, then 0",
      "description": "`the_golden_was_regenerated_by_the_code.eml` applies a set of changes to a renderer and asks each one twice: does it differ from the frozen golden, and does it differ from a golden regenerated from the changed code."
    },
    {
      "id": "343-the-independent-check-is-a-translation",
      "path": "/ai/examples/343-the-independent-check-is-a-translation.eml.md",
      "title": "The independent check is a translation — measured by where it agrees",
      "description": "`the_independent_check_is_a_translation.eml` compares three implementations and finds the measurement that separates a second opinion from a transcription."
    },
    {
      "id": "344-the-majority-is-three-copies",
      "path": "/ai/examples/344-the-majority-is-three-copies.eml.md",
      "title": "The majority is three copies — 4 members, 2 opinions",
      "description": "`the_majority_is_three_copies.eml` puts four implementations to a vote and measures how much evidence the vote actually contains."
    },
    {
      "id": "345-the-monitor-reads-the-cache-it-monitors",
      "path": "/ai/examples/345-the-monitor-reads-the-cache-it-monitors.eml.md",
      "title": "The monitor reads the cache it monitors — 0 of 6 stale ticks caught",
      "description": "`the_monitor_reads_the_cache_it_monitors.eml` grades three freshness monitors against what was actually served."
    },
    {
      "id": "346-the-more-precise-answer-wins",
      "path": "/ai/examples/346-the-more-precise-answer-wins.eml.md",
      "title": "The more precise answer wins — precision is printed, accuracy is not",
      "description": "`the_more_precise_answer_wins.eml` puts a four-decimal estimate and a whole-number estimate against a computed truth."
    },
    {
      "id": "347-the-noisiest-check-is-relaxed-first",
      "path": "/ai/examples/347-the-noisiest-check-is-relaxed-first.eml.md",
      "title": "The noisiest check is relaxed first — 7 of 7 defects caught, then 4",
      "description": "`the_noisiest_check_is_relaxed_first.eml` runs a threshold-tuning policy for several rounds and measures what the suite can still catch after each one."
    },
    {
      "id": "348-the-safety-net-is-load-bearing",
      "path": "/ai/examples/348-the-safety-net-is-load-bearing.eml.md",
      "title": "The safety net is load-bearing — and it is the only correct code in the pipeline",
      "description": "`the_safety_net_is_load_bearing.eml` measures what fraction of a pipeline's correct output arrives through the reconciliation pass rather than through the path that is supposed to produce it."
    },
    {
      "id": "349-two-defects-cancel-in-the-round-trip",
      "path": "/ai/examples/349-two-defects-cancel-in-the-round-trip.eml.md",
      "title": "Two defects cancel in the round trip — and half a fix is worse than none",
      "description": "`two_defects_cancel_in_the_round_trip.eml` runs an encoder and a decoder that are both wrong, through the only test either of them has."
    },
    {
      "id": "350-two-off-by-ones-preserve-the-count",
      "path": "/ai/examples/350-two-off-by-ones-preserve-the-count.eml.md",
      "title": "Two off-by-ones preserve the count — so the length check goes quiet",
      "description": "`two_off_by_ones_preserve_the_count.eml` slides a window whose start is one late and whose end is one late, and reports what a length check can see."
    },
    {
      "id": "351-validated-on-records-that-already-passed",
      "path": "/ai/examples/351-validated-on-records-that-already-passed.eml.md",
      "title": "Validated on records that already passed — a clean run over real production data",
      "description": "`validated_on_records_that_already_passed.eml` runs a validator over the store it produced, and over the submissions that store came from."
    },
    {
      "id": "352-one-fact-counted-as-three-sources",
      "path": "/ai/examples/352-one-fact-counted-as-three-sources.eml.md",
      "title": "One fact counted as three sources — 4 systems agree, 2 origins exist",
      "description": "`one_fact_counted_as_three_sources.eml` traces each system's answer back to where it came from and counts distinct origins rather than distinct systems."
    },
    {
      "id": "353-the-exception-outlived-its-reason",
      "path": "/ai/examples/353-the-exception-outlived-its-reason.eml.md",
      "title": "The exception outlived its reason — 5 of 6 rows removed for a condition that is false",
      "description": "`the_exception_outlived_its_reason.eml` evaluates the stated reason for an exclusion against the rows the exclusion currently removes."
    },
    {
      "id": "354-the-record-says-what-was-decided",
      "path": "/ai/examples/354-the-record-says-what-was-decided.eml.md",
      "title": "The record says what was decided — 6 of 6 answered, 0 of 6 checkable",
      "description": "`the_record_says_what_was_decided.eml` tries to re-derive every decision from each of two records and counts how many it can reach."
    },
    {
      "id": "355-the-rerun-seeds-from-the-last-run",
      "path": "/ai/examples/355-the-rerun-seeds-from-the-last-run.eml.md",
      "title": "The rerun seeds from the last run — and the measurement refused the premise",
      "description": "`the_rerun_seeds_from_the_last_run.eml` runs a warm-started and a cold-started chain over the same daily data, with the same pass cap so the seed is the only difference."
    },
    {
      "id": "356-the-resolution-is-cited-in-the-next-dispute",
      "path": "/ai/examples/356-the-resolution-is-cited-in-the-next-dispute.eml.md",
      "title": "The resolution is cited in the next dispute — 5 decisions, 1 observation",
      "description": "`the_resolution_is_cited_in_the_next_dispute.eml` runs the same disputes under two policies and counts how often each one actually looked at evidence."
    }
  ],
  "tools": {
    "guide": "/ai/tools/tools.md",
    "catalog": "/ai/tools/tool-catalog.json",
    "openapi": "/ai/tools/openapi.json",
    "health": "/ai/tools/health",
    "docs": {
      "parse": "/ai/tools/parse.md",
      "transpile_python": "/ai/tools/transpile-python.md",
      "transpile_eml": "/ai/tools/transpile-eml.md",
      "interpret": "/ai/tools/interpret.md",
      "trace": "/ai/tools/trace.md",
      "roundtrip": "/ai/tools/roundtrip.md"
    },
    "available": [
      "eml.parse",
      "eml.transpile_python",
      "eml.transpile_eml",
      "eml.interpret",
      "eml.trace",
      "eml.roundtrip"
    ],
    "limits": {
      "max_source_length": 20000,
      "allow_network": false,
      "allow_filesystem": false,
      "allow_shell": false,
      "arbitrary_code_execution": false
    }
  },
  "changelog": "/ai/changelog/index.md",
  "snapshots": [
    {
      "id": "latest",
      "path": "/ai/snapshots/latest.md"
    },
    {
      "id": "2026-06-30-site-state",
      "path": "/ai/snapshots/2026-06-30-eml-site-state.md"
    },
    {
      "id": "2026-06-30-public-corpus",
      "path": "/ai/snapshots/2026-06-30-eml-public-corpus.jsonl",
      "format": "jsonl"
    }
  ],
  "reading_order": [
    "/ai/index.md",
    "/ai/corpus/eml-origin.md",
    "/ai/corpus/eml-current.md",
    "/ai/specs/eml-v1.md",
    "/ai/specs/eml-grammar.ebnf",
    "/ai/examples/001-summation.eml.md",
    "/ai/tools/tool-catalog.json"
  ],
  "agent_guidance": [
    "Fetch this manifest first, then follow reading_order.",
    "Prefer structured schemas (AST/trace/error) over UI text.",
    "ASCII canonical form is normative; Unicode (Σ ∈ ⇒ ²) is a display projection.",
    "Do not infer unsupported syntax; the EBNF grammar is the authority.",
    "Call tools only with bounded EML input (<= 20000 chars).",
    "Function definitions, class, @cold, @hot, and matrices (<M>/np.array) are fully round-trippable. Only @temporal_loop and async/await remain forward-only (not round-trippable). @hot joined the round-trippable set once the reverse lexer learned to read its marker comment; it was previously listed as a permanent exception."
  ]
}
