{
  "normalized_source_policy": {
    "formatter": "Prettier 3.9.10",
    "svelte_plugin": "4.1.1",
    "count": "Nonblank formatted lines including comments",
    "exclusions": "Generated output and supplied fixtures; supplied design-token CSS excluded including whitespace-only variations",
    "sveltekit_b2": 946,
    "sveltekit_b2_supplied_css_excluded_lines": 69
  },
  "chart_builds": [
    {
      "framework": "Marionette",
      "build": "b1",
      "generation": {
        "duration_seconds": 334.333,
        "total_input_tokens": 1373295.0,
        "cached_input_tokens": 1320704.0,
        "uncached_input_tokens": 52591.0,
        "output_tokens": 9380.0,
        "chart_token_total": 1382675.0,
        "conditional_api_equivalent_usd": 0.3310524
      },
      "home": {
        "performance_score": 96.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1893.796,
        "tbt_ms": 1.0,
        "cls": 0.111,
        "javascript_transferred_bytes": 26224.0
      },
      "normalized_lines": 998
    },
    {
      "framework": "Marionette",
      "build": "b2",
      "generation": {
        "duration_seconds": 247.268,
        "total_input_tokens": 989328.0,
        "cached_input_tokens": 933120.0,
        "uncached_input_tokens": 56208.0,
        "output_tokens": 8459.0,
        "chart_token_total": 997787.0,
        "conditional_api_equivalent_usd": 0.290318
      },
      "home": {
        "performance_score": 96.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1884.787,
        "tbt_ms": 8.0,
        "cls": 0.111,
        "javascript_transferred_bytes": 24323.0
      },
      "normalized_lines": 950
    },
    {
      "framework": "Marionette",
      "build": "b3",
      "generation": {
        "duration_seconds": 290.147,
        "total_input_tokens": 982101.0,
        "cached_input_tokens": 930304.0,
        "uncached_input_tokens": 51797.0,
        "output_tokens": 9209.0,
        "chart_token_total": 991310.0,
        "conditional_api_equivalent_usd": 0.28871440000000004
      },
      "home": {
        "performance_score": 92.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1864.987,
        "tbt_ms": 1.0,
        "cls": 0.172,
        "javascript_transferred_bytes": 26129.0
      },
      "normalized_lines": 1027
    },
    {
      "framework": "Marionette",
      "build": "b4",
      "generation": {
        "duration_seconds": 318.063,
        "total_input_tokens": 1227620.0,
        "cached_input_tokens": 1168896.0,
        "uncached_input_tokens": 58724.0,
        "output_tokens": 9932.0,
        "chart_token_total": 1237552.0,
        "conditional_api_equivalent_usd": 0.3336576
      },
      "home": {
        "performance_score": 97.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1881.773,
        "tbt_ms": 13.0,
        "cls": 0.103,
        "javascript_transferred_bytes": 26351.0
      },
      "normalized_lines": 1053
    },
    {
      "framework": "Vanilla",
      "build": "b1",
      "generation": {
        "duration_seconds": 295.504,
        "total_input_tokens": 978905.0,
        "cached_input_tokens": 939008.0,
        "uncached_input_tokens": 39897.0,
        "output_tokens": 8166.0,
        "chart_token_total": 987071.0,
        "conditional_api_equivalent_usd": 0.2553548
      },
      "home": {
        "performance_score": 97.0,
        "accessibility_score": 100.0,
        "lcp_ms": 805.136,
        "tbt_ms": 0.0,
        "cls": 0.111,
        "javascript_transferred_bytes": 4406.0
      },
      "normalized_lines": 825
    },
    {
      "framework": "Vanilla",
      "build": "b2",
      "generation": {
        "duration_seconds": 287.249,
        "total_input_tokens": 928280.0,
        "cached_input_tokens": 886528.0,
        "uncached_input_tokens": 41752.0,
        "output_tokens": 7430.0,
        "chart_token_total": 935710.0,
        "conditional_api_equivalent_usd": 0.24645679999999998
      },
      "home": {
        "performance_score": 93.0,
        "accessibility_score": 100.0,
        "lcp_ms": 848.322,
        "tbt_ms": 224.0,
        "cls": 0.103,
        "javascript_transferred_bytes": 4564.0
      },
      "normalized_lines": 771
    },
    {
      "framework": "Vanilla",
      "build": "b3",
      "generation": {
        "duration_seconds": 261.693,
        "total_input_tokens": 895291.0,
        "cached_input_tokens": 854912.0,
        "uncached_input_tokens": 40379.0,
        "output_tokens": 8073.0,
        "chart_token_total": 903364.0,
        "conditional_api_equivalent_usd": 0.2469792
      },
      "home": {
        "performance_score": 91.0,
        "accessibility_score": 100.0,
        "lcp_ms": 773.069,
        "tbt_ms": 0.0,
        "cls": 0.193,
        "javascript_transferred_bytes": 4776.0
      },
      "normalized_lines": 815
    },
    {
      "framework": "Vanilla",
      "build": "b4",
      "generation": {
        "duration_seconds": 271.928,
        "total_input_tokens": 1048456.0,
        "cached_input_tokens": 999040.0,
        "uncached_input_tokens": 49416.0,
        "output_tokens": 8686.0,
        "chart_token_total": 1057142.0,
        "conditional_api_equivalent_usd": 0.285596
      },
      "home": {
        "performance_score": 92.0,
        "accessibility_score": 100.0,
        "lcp_ms": 774.466,
        "tbt_ms": 0.0,
        "cls": 0.182,
        "javascript_transferred_bytes": 4610.0
      },
      "normalized_lines": 865
    },
    {
      "framework": "React Router",
      "build": "b1",
      "generation": {
        "duration_seconds": 393.201,
        "total_input_tokens": 1849272.0,
        "cached_input_tokens": 1737984.0,
        "uncached_input_tokens": 111288.0,
        "output_tokens": 9794.0,
        "chart_token_total": 1859066.0,
        "conditional_api_equivalent_usd": 0.49431440000000004
      },
      "home": {
        "performance_score": 98.0,
        "accessibility_score": 100.0,
        "lcp_ms": 2230.33,
        "tbt_ms": 5.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 118398.0
      },
      "normalized_lines": 1029
    },
    {
      "framework": "React Router",
      "build": "b2",
      "generation": {
        "duration_seconds": 267.153,
        "total_input_tokens": 916148.0,
        "cached_input_tokens": 867328.0,
        "uncached_input_tokens": 48820.0,
        "output_tokens": 7908.0,
        "chart_token_total": 924056.0,
        "conditional_api_equivalent_usd": 0.2634528
      },
      "home": {
        "performance_score": 97.0,
        "accessibility_score": 100.0,
        "lcp_ms": 2164.766,
        "tbt_ms": 51.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 117055.0
      },
      "normalized_lines": 1071
    },
    {
      "framework": "React Router",
      "build": "b3",
      "generation": {
        "duration_seconds": 289.311,
        "total_input_tokens": 1277756.0,
        "cached_input_tokens": 1226240.0,
        "uncached_input_tokens": 51516.0,
        "output_tokens": 9430.0,
        "chart_token_total": 1287186.0,
        "conditional_api_equivalent_usd": 0.319956
      },
      "home": {
        "performance_score": 99.0,
        "accessibility_score": 100.0,
        "lcp_ms": 2117.151,
        "tbt_ms": 0.5,
        "cls": 0.0,
        "javascript_transferred_bytes": 118505.0
      },
      "normalized_lines": 1167
    },
    {
      "framework": "React Router",
      "build": "b4",
      "generation": {
        "duration_seconds": 376.491,
        "total_input_tokens": 1720674.0,
        "cached_input_tokens": 1664256.0,
        "uncached_input_tokens": 56418.0,
        "output_tokens": 9476.0,
        "chart_token_total": 1730150.0,
        "conditional_api_equivalent_usd": 0.37402159999999995
      },
      "home": {
        "performance_score": 98.0,
        "accessibility_score": 100.0,
        "lcp_ms": 2236.093,
        "tbt_ms": 6.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 118466.0
      },
      "normalized_lines": 1009
    },
    {
      "framework": "SvelteKit",
      "build": "b1",
      "generation": {
        "duration_seconds": 371.866,
        "total_input_tokens": 1930950.0,
        "cached_input_tokens": 1876352.0,
        "uncached_input_tokens": 54598.0,
        "output_tokens": 10148.0,
        "chart_token_total": 1941098.0,
        "conditional_api_equivalent_usd": 0.39831120000000003
      },
      "home": {
        "performance_score": 100.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1223.039,
        "tbt_ms": 0.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 37739.0
      },
      "normalized_lines": 940
    },
    {
      "framework": "SvelteKit",
      "build": "b2",
      "generation": {
        "duration_seconds": 431.23,
        "total_input_tokens": 2054555.0,
        "cached_input_tokens": 1987072.0,
        "uncached_input_tokens": 67483.0,
        "output_tokens": 10223.0,
        "chart_token_total": 2064778.0,
        "conditional_api_equivalent_usd": 0.4359032
      },
      "home": {
        "performance_score": 100.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1693.38,
        "tbt_ms": 0.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 37594.0
      },
      "normalized_lines": 946
    },
    {
      "framework": "SvelteKit",
      "build": "b3",
      "generation": {
        "duration_seconds": 357.613,
        "total_input_tokens": 1687566.0,
        "cached_input_tokens": 1626368.0,
        "uncached_input_tokens": 61198.0,
        "output_tokens": 10115.0,
        "chart_token_total": 1697681.0,
        "conditional_api_equivalent_usd": 0.38618280000000005
      },
      "home": {
        "performance_score": 100.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1683.142,
        "tbt_ms": 0.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 37360.0
      },
      "normalized_lines": 959
    },
    {
      "framework": "SvelteKit",
      "build": "b4",
      "generation": {
        "duration_seconds": 320.057,
        "total_input_tokens": 1678585.0,
        "cached_input_tokens": 1559552.0,
        "uncached_input_tokens": 119033.0,
        "output_tokens": 9686.0,
        "chart_token_total": 1688271.0,
        "conditional_api_equivalent_usd": 0.4908812
      },
      "home": {
        "performance_score": 100.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1688.722,
        "tbt_ms": 0.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 37502.0
      },
      "normalized_lines": 981
    },
    {
      "framework": "Nuxt",
      "build": "b1",
      "generation": {
        "duration_seconds": 404.18,
        "total_input_tokens": 2242973.0,
        "cached_input_tokens": 2195712.0,
        "uncached_input_tokens": 47261.0,
        "output_tokens": 10741.0,
        "chart_token_total": 2253714.0,
        "conditional_api_equivalent_usd": 0.4215032
      },
      "home": {
        "performance_score": 97.0,
        "accessibility_score": 100.0,
        "lcp_ms": 2086.339,
        "tbt_ms": 8.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 77830.0
      },
      "normalized_lines": 997
    },
    {
      "framework": "Nuxt",
      "build": "b2",
      "generation": {
        "duration_seconds": 270.883,
        "total_input_tokens": 1103551.0,
        "cached_input_tokens": 1058560.0,
        "uncached_input_tokens": 44991.0,
        "output_tokens": 9165.0,
        "chart_token_total": 1112716.0,
        "conditional_api_equivalent_usd": 0.287488
      },
      "home": {
        "performance_score": 99.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1849.128,
        "tbt_ms": 78.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 84560.0
      },
      "normalized_lines": 1031
    },
    {
      "framework": "Nuxt",
      "build": "b3",
      "generation": {
        "duration_seconds": 425.997,
        "total_input_tokens": 2025491.0,
        "cached_input_tokens": 1970688.0,
        "uncached_input_tokens": 54803.0,
        "output_tokens": 10181.0,
        "chart_token_total": 2035672.0,
        "conditional_api_equivalent_usd": 0.40848480000000004
      },
      "home": {
        "performance_score": 99.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1985.076,
        "tbt_ms": 60.5,
        "cls": 0.0,
        "javascript_transferred_bytes": 84677.0
      },
      "normalized_lines": 981
    },
    {
      "framework": "Nuxt",
      "build": "b4",
      "generation": {
        "duration_seconds": 435.735,
        "total_input_tokens": 2528764.0,
        "cached_input_tokens": 2474880.0,
        "uncached_input_tokens": 53884.0,
        "output_tokens": 12744.0,
        "chart_token_total": 2541508.0,
        "conditional_api_equivalent_usd": 0.482696
      },
      "home": {
        "performance_score": 99.0,
        "accessibility_score": 100.0,
        "lcp_ms": 2022.003,
        "tbt_ms": 31.0,
        "cls": 0.0,
        "javascript_transferred_bytes": 84546.0
      },
      "normalized_lines": 989
    },
    {
      "framework": "Angular",
      "build": "b1",
      "generation": {
        "duration_seconds": 443.797,
        "total_input_tokens": 1905652.0,
        "cached_input_tokens": 1817472.0,
        "uncached_input_tokens": 88180.0,
        "output_tokens": 15239.0,
        "chart_token_total": 1920891.0,
        "conditional_api_equivalent_usd": 0.5104972
      },
      "home": {
        "performance_score": 73.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1545.782,
        "tbt_ms": 983.073,
        "cls": 0.134,
        "javascript_transferred_bytes": 98051.0
      },
      "normalized_lines": 1890
    },
    {
      "framework": "Angular",
      "build": "b2",
      "generation": {
        "duration_seconds": 392.379,
        "total_input_tokens": 1429286.0,
        "cached_input_tokens": 1369344.0,
        "uncached_input_tokens": 59942.0,
        "output_tokens": 12820.0,
        "chart_token_total": 1442106.0,
        "conditional_api_equivalent_usd": 0.38501840000000004
      },
      "home": {
        "performance_score": 80.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1746.748,
        "tbt_ms": 757.783,
        "cls": 0.107,
        "javascript_transferred_bytes": 77749.0
      },
      "normalized_lines": 1343
    },
    {
      "framework": "Angular",
      "build": "b3",
      "generation": {
        "duration_seconds": 480.652,
        "total_input_tokens": 2541453.0,
        "cached_input_tokens": 2467200.0,
        "uncached_input_tokens": 74253.0,
        "output_tokens": 14610.0,
        "chart_token_total": 2556063.0,
        "conditional_api_equivalent_usd": 0.541326
      },
      "home": {
        "performance_score": 93.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1989.485,
        "tbt_ms": 206.0,
        "cls": 0.111,
        "javascript_transferred_bytes": 50172.0
      },
      "normalized_lines": 1392
    },
    {
      "framework": "Angular",
      "build": "b4",
      "generation": {
        "duration_seconds": 352.685,
        "total_input_tokens": 1401683.0,
        "cached_input_tokens": 1337984.0,
        "uncached_input_tokens": 63699.0,
        "output_tokens": 12114.0,
        "chart_token_total": 1413797.0,
        "conditional_api_equivalent_usd": 0.3823364
      },
      "home": {
        "performance_score": 78.0,
        "accessibility_score": 100.0,
        "lcp_ms": 1438.886,
        "tbt_ms": 1031.5,
        "cls": 0.008,
        "javascript_transferred_bytes": 79377.0
      },
      "normalized_lines": 1711
    }
  ],
  "verified_assessment_markdown": "# Marionette 5.1.0: assessment of four functioning applications\n\nThis assessment covers four completed Marionette 5.1.0 applications and four retained applications for each of five peer frameworks: Vanilla, React Router, SvelteKit, Nuxt and Angular. The application, rather than an individual Lighthouse sample, is the unit of comparison.\n\nEach application passed the same 54 independent acceptance tests and has five Lighthouse samples for each of six mobile routes. The defined dataset contains **24 applications, 1,296 successful acceptance-case executions and 720 numeric Lighthouse samples**. These reuse one 54-case fixture; they are not 1,296 distinct requirements.\n\n[Comparison definitions](#comparison-definitions) \u00b7 [Route comparisons](#route-comparisons) \u00b7 [Per-build results](#per-build-results) \u00b7 [Versions and source size](#versions-and-source-size) \u00b7 [Comparability](#comparability)\n\n## Findings\n\nMarionette\u2019s median native-turn generation time was **304.1 seconds** [247.3\u2013334.3]. In these samples, the recorded median was shorter than React Router, SvelteKit, Nuxt and Angular, and longer than Vanilla. This is a comparison of generated applications and agent work, not a causal estimate of framework development speed.\n\nIts median home performance score was **96** [92\u201397], with LCP **1.88 seconds**, TBT **4.5 ms**, CLS **0.111** and JavaScript transfer **25.6 KiB**. JavaScript transfer was smaller than the framework peers and larger than Vanilla. The Pok\u00e9mon route was a clear weakness: performance **75** [74\u201381] and median LCP **6.12 seconds** [4.41\u20136.36]. No overall framework ranking follows from the home page alone.\n\n## Comparison definitions\n\n- **Route statistics:** each application contributes its median of five samples. Tables show the median and [minimum\u2013maximum] of four application medians. The 20 samples per framework/route are not treated as 20 independent builds.\n- **Generation time:** `elapsed_seconds` from each completed native-session receipt, measured by the adapter\u2019s monotonic timer immediately before `turn/start` through the root `turn/completed` notification. It includes agent tool work, documentation reads and self-tests within the turn. CLI startup, account/config/tooling preflight, post-turn checks, output drain/shutdown, independent acceptance and Lighthouse are excluded. The same field and boundary are used for all six frameworks. `finished_at` is recorded after shutdown, so subtracting the ISO receipt timestamps is not this timing metric.\n- **Tokens:** final cumulative root-thread counters. Cached input is a subset of total input; uncached input is total minus cached. Reasoning output is retained as a detail and is not added again. Cache-write values are shown only as reported. Different columns\u2019 medians are calculated independently and are not additive.\n- **Accounting:** these are native usage measurements. Actual ChatGPT subscription/credit debits and provider request counts are unavailable. Tokens and tool invocations are not dollar charges or model-request counts; no API-equivalent dollar estimate is asserted. Child/root usage aggregation is not generalized beyond the retained counters.\n- **Runtime:** performance and accessibility use a 0\u2013100 scale. LCP/TBT are milliseconds; CLS is unitless. Lighthouse uses simulated mobile throttling; these are not unthrottled network timings. JavaScript transfer is measured network bytes, displayed as KiB (1 KiB = 1,024 bytes), not an uncompressed bundle-file estimate.\n\n## Generation and acceptance\n\nEntries are median [minimum\u2013maximum] over four applications.\n\n| Framework | Generation seconds | Acceptance | Input tokens | Cached input | Output tokens |\n|---|---:|---:|---:|---:|---:|\n| Marionette 5.1.0 with Vite | 304.1 [247.3\u2013334.3] | 216/216 | 1,108,474 [982,101\u20131,373,295] | 1,051,008 [930,304\u20131,320,704] | 9,294.5 [8,459\u20139,932] |\n| Vanilla | 279.6 [261.7\u2013295.5] | 216/216 | 953,592.5 [895,291\u20131,048,456] | 912,768 [854,912\u2013999,040] | 8,119.5 [7,430\u20138,686] |\n| React Router | 332.9 [267.2\u2013393.2] | 216/216 | 1,499,215 [916,148\u20131,849,272] | 1,445,248 [867,328\u20131,737,984] | 9,453 [7,908\u20139,794] |\n| SvelteKit | 364.7 [320.1\u2013431.2] | 216/216 | 1,809,258 [1,678,585\u20132,054,555] | 1,751,360 [1,559,552\u20131,987,072] | 10,131.5 [9,686\u201310,223] |\n| Nuxt | 415.1 [270.9\u2013435.7] | 216/216 | 2,134,232 [1,103,551\u20132,528,764] | 2,083,200 [1,058,560\u20132,474,880] | 10,461 [9,165\u201312,744] |\n| Angular | 418.1 [352.7\u2013480.7] | 216/216 | 1,667,469 [1,401,683\u20132,541,453] | 1,593,408 [1,337,984\u20132,467,200] | 13,715 [12,114\u201315,239] |\n\n## Route comparisons\n\nThe six route columns appear in the same order throughout. All 144 application/route accessibility medians are **100**. This automated score does not establish complete accessibility or replace keyboard and assistive-technology review.\n\n### Performance score\n\n| Framework | Home | Filtered home | Pok\u00e9mon | Move | Ability | Type |\n|---|---:|---:|---:|---:|---:|---:|\n| Marionette 5.1.0 with Vite | 96 [92\u201397] | 96 [92\u201397] | 75 [74\u201381] | 96 [95\u201397] | 96.5 [96\u201397] | 96.5 [96\u201397] |\n| Vanilla | 92.5 [91\u201397] | 94.5 [91\u201397] | 94 [82\u201396] | 96.5 [95\u201397] | 97 [97\u201397] | 97 [97\u201397] |\n| React Router | 98 [97\u201399] | 98.5 [98\u201399] | 87 [67\u201390] | 99.5 [98\u2013100] | 99 [99\u201399] | 99 [99\u201399] |\n| SvelteKit | 100 [100\u2013100] | 100 [100\u2013100] | 98 [72\u201398] | 99 [99\u2013100] | 100 [100\u2013100] | 100 [100\u2013100] |\n| Nuxt | 99 [97\u201399] | 99 [99\u201399] | 82.5 [69\u201397] | 95.5 [92\u201398] | 99.5 [99\u2013100] | 98.5 [97\u201399] |\n| Angular | 79 [73\u201393] | 95 [85\u201396] | 73.5 [49\u201380] | 73.5 [70\u201395] | 95.5 [95\u201396] | 83.5 [75\u201396] |\n\n### LCP (ms)\n\n| Framework | Home | Filtered home | Pok\u00e9mon | Move | Ability | Type |\n|---|---:|---:|---:|---:|---:|---:|\n| Marionette 5.1.0 with Vite | 1,883.3 [1,865\u20131,893.8] | 1,891.4 [1,872.1\u20131,908.2] | 6,118.6 [4,410.6\u20136,360.8] | 1,903.2 [1,093.9\u20131,949.4] | 1,547.1 [1,098.2\u20131,994.8] | 1,874.8 [1,185.9\u20131,978.7] |\n| Vanilla | 789.8 [773.1\u2013848.3] | 801.1 [771.2\u2013839.9] | 2,529.6 [2,294.9\u20134,275.3] | 800.6 [779\u20131,077.1] | 1,256.9 [804.8\u20132,014.6] | 801.2 [782.5\u2013801.4] |\n| React Router | 2,197.5 [2,117.2\u20132,236.1] | 2,112.1 [1,941.8\u20132,197.7] | 2,858.3 [2,842.2\u20132,999] | 1,360.5 [1,193.9\u20131,620.5] | 2,015.3 [1,989.6\u20132,058.5] | 1,904.3 [1,843.5\u20131,917.3] |\n| SvelteKit | 1,685.9 [1,223\u20131,693.4] | 1,677.7 [1,150.6\u20131,687.3] | 2,286.3 [2,274.1\u20133,545.4] | 1,882.5 [1,148.7\u20131,968.1] | 1,682.6 [1,113.5\u20131,704.2] | 1,682.2 [1,092.1\u20131,749.6] |\n| Nuxt | 2,003.5 [1,849.1\u20132,086.3] | 1,842.4 [1,608.1\u20131,983.9] | 3,679.9 [2,424.9\u20134,932.4] | 2,233.2 [2,144.7\u20132,251.5] | 1,754.8 [1,385.6\u20131,841.5] | 1,846.4 [1,822.8\u20131,996.7] |\n| Angular | 1,646.3 [1,438.9\u20131,989.5] | 1,678.5 [1,426.6\u20131,979.2] | 4,949.9 [2,595.3\u20137,242.2] | 1,767.9 [1,427.6\u20132,261.8] | 1,483.4 [1,397.8\u20131,917.7] | 1,527.8 [1,406.7\u20131,981] |\n\n### TBT (ms)\n\n| Framework | Home | Filtered home | Pok\u00e9mon | Move | Ability | Type |\n|---|---:|---:|---:|---:|---:|---:|\n| Marionette 5.1.0 with Vite | 4.5 [1\u201313] | 0 [0\u20130] | 37 [18\u201372] | 98 [55\u2013137] | 0 [0\u20130] | 29 [15.5\u201329.5] |\n| Vanilla | 0 [0\u2013224] | 0 [0\u20134.5] | 0 [0\u2013115] | 100.5 [53\u2013160.5] | 0 [0\u20130] | 0 [0\u20139] |\n| React Router | 5.5 [0.5\u201351] | 0 [0\u201312.5] | 287.1 [152.5\u2013805.5] | 45.5 [43\u201354] | 0 [0\u20136] | 0 [0\u20130] |\n| SvelteKit | 0 [0\u20130] | 0 [0\u20130] | 2.5 [0\u2013575] | 36.5 [5.5\u201365] | 0 [0\u20130] | 6.5 [0\u201334] |\n| Nuxt | 45.8 [8\u201378] | 40.5 [16\u201363.5] | 145.5 [81\u2013191] | 129.5 [42.5\u2013274] | 44 [9\u201389.5] | 63 [32\u2013161.5] |\n| Angular | 870.4 [206\u20131,031.5] | 126.4 [90\u2013255] | 456.5 [76\u20131,783.3] | 1,527.9 [112.5\u20132,343.2] | 82.5 [45\u2013138.5] | 573.4 [71\u2013921.8] |\n\n### CLS\n\n| Framework | Home | Filtered home | Pok\u00e9mon | Move | Ability | Type |\n|---|---:|---:|---:|---:|---:|---:|\n| Marionette 5.1.0 with Vite | 0.111 [0.103\u20130.172] | 0.111 [0.103\u20130.172] | 0.111 [0.103\u20130.111] | 0.111 [0.103\u20130.111] | 0.111 [0.103\u20130.111] | 0.111 [0.103\u20130.111] |\n| Vanilla | 0.1465 [0.103\u20130.193] | 0.1465 [0.103\u20130.193] | 0.102 [0.101\u20130.111] | 0.107 [0.103\u20130.111] | 0.107 [0.103\u20130.111] | 0.107 [0.103\u20130.111] |\n| React Router | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] |\n| SvelteKit | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] |\n| Nuxt | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] | 0 [0\u20130] |\n| Angular | 0.109 [0.008\u20130.134] | 0.1145 [0.107\u20130.204] | 0.1075 [0.004\u20130.118] | 0.0595 [0\u20130.115] | 0.113 [0.107\u20130.118] | 0.113 [0.107\u20130.118] |\n\n### JavaScript transfer (KiB)\n\n| Framework | Home | Filtered home | Pok\u00e9mon | Move | Ability | Type |\n|---|---:|---:|---:|---:|---:|---:|\n| Marionette 5.1.0 with Vite | 25.56 [23.75\u201325.73] | 25.56 [23.77\u201325.73] | 25.56 [23.75\u201325.73] | 25.56 [23.75\u201325.73] | 25.56 [23.75\u201325.73] | 25.56 [23.75\u201325.73] |\n| Vanilla | 4.48 [4.3\u20134.66] | 4.48 [4.3\u20134.66] | 4.48 [4.3\u20134.66] | 4.48 [4.3\u20134.66] | 4.48 [4.3\u20134.66] | 4.48 [4.3\u20134.66] |\n| React Router | 115.66 [114.31\u2013115.73] | 115.68 [114.36\u2013115.73] | 115.66 [115.3\u2013115.73] | 115.63 [114.41\u2013115.78] | 115.63 [114.36\u2013115.78] | 115.66 [114.36\u2013115.78] |\n| SvelteKit | 36.67 [36.48\u201336.85] | 36.66 [36.52\u201336.85] | 36.65 [36.48\u201336.85] | 36.67 [36.48\u201336.85] | 36.68 [36.52\u201336.85] | 36.68 [36.48\u201336.85] |\n| Nuxt | 82.57 [76.01\u201382.69] | 82.52 [75.96\u201382.69] | 82.52 [75.96\u201382.69] | 82.52 [75.96\u201382.69] | 82.52 [75.96\u201382.69] | 82.52 [75.96\u201382.69] |\n| Angular | 76.72 [49\u201395.75] | 76.72 [49\u201395.75] | 76.72 [49\u201397.64] | 76.72 [49\u201379.61] | 76.72 [49\u201379.61] | 76.72 [49\u201379.61] |\n\n## Per-build results\n\nThe labels b1\u2013b4 identify applications within each framework in this assessment. Values below are the underlying application results, not a choice of the strongest metric from different builds. Each route row is a five-sample median.\n\n### Marionette 5.1.0 with Vite\n\n| Build | Generation s | Tests | Input | Cached | Uncached | Cache-write | Output | Reasoning detail |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n| b1 | 334.333 | 54/54 | 1,373,295 | 1,320,704 | 52,591 | 0 | 9,380 | 726 |\n| b2 | 247.268 | 54/54 | 989,328 | 933,120 | 56,208 | 0 | 8,459 | 460 |\n| b3 | 290.147 | 54/54 | 982,101 | 930,304 | 51,797 | 0 | 9,209 | 432 |\n| b4 | 318.063 | 54/54 | 1,227,620 | 1,168,896 | 58,724 | 0 | 9,932 | 702 |\n\n| Build | Route | Performance | Accessibility | LCP ms | TBT ms | CLS | JS transfer bytes |\n|---|---|---:|---:|---:|---:|---:|---:|\n| b1 | Home | 96 | 100 | 1,893.796 | 1 | 0.111 | 26,224 |\n| b1 | Filtered home | 96 | 100 | 1,890.414 | 0 | 0.111 | 26,224 |\n| b1 | Pok\u00e9mon | 75 | 100 | 6,093.552 | 43 | 0.111 | 26,224 |\n| b1 | Move | 97 | 100 | 1,093.851 | 55 | 0.111 | 26,224 |\n| b1 | Ability | 96 | 100 | 1,850.962 | 0 | 0.111 | 26,224 |\n| b1 | Type | 96 | 100 | 1,978.749 | 29 | 0.111 | 26,224 |\n| b2 | Home | 96 | 100 | 1,884.787 | 8 | 0.111 | 24,323 |\n| b2 | Filtered home | 96 | 100 | 1,872.09 | 0 | 0.111 | 24,339 |\n| b2 | Pok\u00e9mon | 81 | 100 | 4,410.556 | 18 | 0.111 | 24,323 |\n| b2 | Move | 96 | 100 | 1,913.202 | 92 | 0.111 | 24,323 |\n| b2 | Ability | 97 | 100 | 1,243.26 | 0 | 0.111 | 24,323 |\n| b2 | Type | 97 | 100 | 1,185.927 | 15.5 | 0.111 | 24,323 |\n| b3 | Home | 92 | 100 | 1,864.987 | 1 | 0.172 | 26,129 |\n| b3 | Filtered home | 92 | 100 | 1,892.455 | 0 | 0.172 | 26,129 |\n| b3 | Pok\u00e9mon | 75 | 100 | 6,143.585 | 31 | 0.111 | 26,129 |\n| b3 | Move | 96 | 100 | 1,893.15 | 104 | 0.111 | 26,129 |\n| b3 | Ability | 97 | 100 | 1,098.245 | 0 | 0.111 | 26,129 |\n| b3 | Type | 96 | 100 | 1,845.002 | 29.5 | 0.111 | 26,129 |\n| b4 | Home | 97 | 100 | 1,881.773 | 13 | 0.103 | 26,351 |\n| b4 | Filtered home | 97 | 100 | 1,908.214 | 0 | 0.103 | 26,351 |\n| b4 | Pok\u00e9mon | 74 | 100 | 6,360.826 | 72 | 0.103 | 26,351 |\n| b4 | Move | 95 | 100 | 1,949.369 | 137 | 0.103 | 26,351 |\n| b4 | Ability | 96 | 100 | 1,994.844 | 0 | 0.103 | 26,351 |\n| b4 | Type | 97 | 100 | 1,904.596 | 29 | 0.103 | 26,351 |\n\n### Vanilla\n\n| Build | Generation s | Tests | Input | Cached | Uncached | Cache-write | Output | Reasoning detail |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n| b1 | 295.504 | 54/54 | 978,905 | 939,008 | 39,897 | 0 | 8,166 | 490 |\n| b2 | 287.249 | 54/54 | 928,280 | 886,528 | 41,752 | 0 | 7,430 | 411 |\n| b3 | 261.693 | 54/54 | 895,291 | 854,912 | 40,379 | 0 | 8,073 | 499 |\n| b4 | 271.928 | 54/54 | 1,048,456 | 999,040 | 49,416 | 0 | 8,686 | 567 |\n\n| Build | Route | Performance | Accessibility | LCP ms | TBT ms | CLS | JS transfer bytes |\n|---|---|---:|---:|---:|---:|---:|---:|\n| b1 | Home | 97 | 100 | 805.136 | 0 | 0.111 | 4,406 |\n| b1 | Filtered home | 97 | 100 | 839.866 | 0 | 0.111 | 4,406 |\n| b1 | Pok\u00e9mon | 96 | 100 | 2,294.872 | 0 | 0.101 | 4,406 |\n| b1 | Move | 97 | 100 | 802.077 | 58 | 0.111 | 4,406 |\n| b1 | Ability | 97 | 100 | 804.847 | 0 | 0.111 | 4,406 |\n| b1 | Type | 97 | 100 | 801.375 | 0 | 0.111 | 4,406 |\n| b2 | Home | 93 | 100 | 848.322 | 224 | 0.103 | 4,564 |\n| b2 | Filtered home | 97 | 100 | 802.285 | 4.5 | 0.103 | 4,564 |\n| b2 | Pok\u00e9mon | 94 | 100 | 2,327.411 | 115 | 0.101 | 4,564 |\n| b2 | Move | 96 | 100 | 778.968 | 143 | 0.103 | 4,564 |\n| b2 | Ability | 97 | 100 | 1,706.973 | 0 | 0.103 | 4,564 |\n| b2 | Type | 97 | 100 | 782.5 | 0 | 0.103 | 4,564 |\n| b3 | Home | 91 | 100 | 773.069 | 0 | 0.193 | 4,776 |\n| b3 | Filtered home | 91 | 100 | 771.222 | 0 | 0.193 | 4,776 |\n| b3 | Pok\u00e9mon | 82 | 100 | 4,275.257 | 0 | 0.111 | 4,776 |\n| b3 | Move | 97 | 100 | 799.22 | 53 | 0.111 | 4,776 |\n| b3 | Ability | 97 | 100 | 806.907 | 0 | 0.111 | 4,776 |\n| b3 | Type | 97 | 100 | 801.133 | 0 | 0.111 | 4,776 |\n| b4 | Home | 92 | 100 | 774.466 | 0 | 0.182 | 4,610 |\n| b4 | Filtered home | 92 | 100 | 799.884 | 0 | 0.182 | 4,610 |\n| b4 | Pok\u00e9mon | 94 | 100 | 2,731.82 | 0 | 0.103 | 4,610 |\n| b4 | Move | 95 | 100 | 1,077.105 | 160.5 | 0.103 | 4,610 |\n| b4 | Ability | 97 | 100 | 2,014.56 | 0 | 0.103 | 4,610 |\n| b4 | Type | 97 | 100 | 801.229 | 9 | 0.103 | 4,610 |\n\n### React Router\n\n| Build | Generation s | Tests | Input | Cached | Uncached | Cache-write | Output | Reasoning detail |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n| b1 | 393.201 | 54/54 | 1,849,272 | 1,737,984 | 111,288 | 0 | 9,794 | 987 |\n| b2 | 267.153 | 54/54 | 916,148 | 867,328 | 48,820 | 0 | 7,908 | 192 |\n| b3 | 289.311 | 54/54 | 1,277,756 | 1,226,240 | 51,516 | 0 | 9,430 | 434 |\n| b4 | 376.491 | 54/54 | 1,720,674 | 1,664,256 | 56,418 | 0 | 9,476 | 1,067 |\n\n| Build | Route | Performance | Accessibility | LCP ms | TBT ms | CLS | JS transfer bytes |\n|---|---|---:|---:|---:|---:|---:|---:|\n| b1 | Home | 98 | 100 | 2,230.33 | 5 | 0 | 118,398 |\n| b1 | Filtered home | 98 | 100 | 2,197.714 | 0 | 0 | 118,449 |\n| b1 | Pok\u00e9mon | 67 | 100 | 2,842.221 | 805.456 | 0 | 118,398 |\n| b1 | Move | 100 | 100 | 1,215.904 | 43 | 0 | 118,398 |\n| b1 | Ability | 99 | 100 | 2,039.012 | 0 | 0 | 118,398 |\n| b1 | Type | 99 | 100 | 1,843.495 | 0 | 0 | 118,398 |\n| b2 | Home | 97 | 100 | 2,164.766 | 51 | 0 | 117,055 |\n| b2 | Filtered home | 98 | 100 | 2,150.966 | 12.5 | 0 | 117,106 |\n| b2 | Pok\u00e9mon | 87 | 100 | 2,863.083 | 363.959 | 0 | 118,065 |\n| b2 | Move | 100 | 100 | 1,193.913 | 54 | 0 | 117,157 |\n| b2 | Ability | 99 | 100 | 1,989.606 | 0 | 0 | 117,106 |\n| b2 | Type | 99 | 100 | 1,912.38 | 0 | 0 | 117,106 |\n| b3 | Home | 99 | 100 | 2,117.151 | 0.5 | 0 | 118,505 |\n| b3 | Filtered home | 99 | 100 | 2,073.154 | 0 | 0 | 118,505 |\n| b3 | Pok\u00e9mon | 87 | 100 | 2,998.957 | 210.204 | 0 | 118,505 |\n| b3 | Move | 98 | 100 | 1,620.549 | 46.5 | 0 | 118,555 |\n| b3 | Ability | 99 | 100 | 2,058.478 | 6 | 0 | 118,555 |\n| b3 | Type | 99 | 100 | 1,896.127 | 0 | 0 | 118,555 |\n| b4 | Home | 98 | 100 | 2,236.093 | 6 | 0 | 118,466 |\n| b4 | Filtered home | 99 | 100 | 1,941.78 | 0 | 0 | 118,466 |\n| b4 | Pok\u00e9mon | 90 | 100 | 2,853.563 | 152.5 | 0 | 118,471 |\n| b4 | Move | 99 | 100 | 1,505.132 | 44.5 | 0 | 118,415 |\n| b4 | Ability | 99 | 100 | 1,991.553 | 0 | 0 | 118,415 |\n| b4 | Type | 99 | 100 | 1,917.338 | 0 | 0 | 118,471 |\n\n### SvelteKit\n\n| Build | Generation s | Tests | Input | Cached | Uncached | Cache-write | Output | Reasoning detail |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n| b1 | 371.866 | 54/54 | 1,930,950 | 1,876,352 | 54,598 | 0 | 10,148 | 596 |\n| b2 | 431.23 | 54/54 | 2,054,555 | 1,987,072 | 67,483 | 0 | 10,223 | 774 |\n| b3 | 357.613 | 54/54 | 1,687,566 | 1,626,368 | 61,198 | 0 | 10,115 | 781 |\n| b4 | 320.057 | 54/54 | 1,678,585 | 1,559,552 | 119,033 | 0 | 9,686 | 362 |\n\n| Build | Route | Performance | Accessibility | LCP ms | TBT ms | CLS | JS transfer bytes |\n|---|---|---:|---:|---:|---:|---:|---:|\n| b1 | Home | 100 | 100 | 1,223.039 | 0 | 0 | 37,739 |\n| b1 | Filtered home | 100 | 100 | 1,150.642 | 0 | 0 | 37,739 |\n| b1 | Pok\u00e9mon | 72 | 100 | 3,545.396 | 575 | 0 | 37,739 |\n| b1 | Move | 100 | 100 | 1,148.702 | 5.5 | 0 | 37,739 |\n| b1 | Ability | 100 | 100 | 1,113.523 | 0 | 0 | 37,739 |\n| b1 | Type | 100 | 100 | 1,092.102 | 2 | 0 | 37,739 |\n| b2 | Home | 100 | 100 | 1,693.38 | 0 | 0 | 37,594 |\n| b2 | Filtered home | 100 | 100 | 1,678.907 | 0 | 0 | 37,618 |\n| b2 | Pok\u00e9mon | 98 | 100 | 2,279.378 | 0 | 0 | 37,594 |\n| b2 | Move | 99 | 100 | 1,968.082 | 65 | 0 | 37,594 |\n| b2 | Ability | 100 | 100 | 1,704.176 | 0 | 0 | 37,627 |\n| b2 | Type | 100 | 100 | 1,749.579 | 34 | 0 | 37,627 |\n| b3 | Home | 100 | 100 | 1,683.142 | 0 | 0 | 37,360 |\n| b3 | Filtered home | 100 | 100 | 1,687.297 | 0 | 0 | 37,393 |\n| b3 | Pok\u00e9mon | 98 | 100 | 2,274.135 | 0 | 0 | 37,360 |\n| b3 | Move | 99 | 100 | 1,856.773 | 15 | 0 | 37,360 |\n| b3 | Ability | 100 | 100 | 1,689.464 | 0 | 0 | 37,393 |\n| b3 | Type | 100 | 100 | 1,682.936 | 0 | 0 | 37,360 |\n| b4 | Home | 100 | 100 | 1,688.722 | 0 | 0 | 37,502 |\n| b4 | Filtered home | 100 | 100 | 1,676.453 | 0 | 0 | 37,469 |\n| b4 | Pok\u00e9mon | 98 | 100 | 2,293.211 | 5 | 0 | 37,469 |\n| b4 | Move | 99 | 100 | 1,908.296 | 58 | 0 | 37,502 |\n| b4 | Ability | 100 | 100 | 1,675.816 | 0 | 0 | 37,502 |\n| b4 | Type | 100 | 100 | 1,681.413 | 11 | 0 | 37,502 |\n\n### Nuxt\n\n| Build | Generation s | Tests | Input | Cached | Uncached | Cache-write | Output | Reasoning detail |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n| b1 | 404.18 | 54/54 | 2,242,973 | 2,195,712 | 47,261 | 0 | 10,741 | 1,087 |\n| b2 | 270.883 | 54/54 | 1,103,551 | 1,058,560 | 44,991 | 0 | 9,165 | 842 |\n| b3 | 425.997 | 54/54 | 2,025,491 | 1,970,688 | 54,803 | 0 | 10,181 | 920 |\n| b4 | 435.735 | 54/54 | 2,528,764 | 2,474,880 | 53,884 | 0 | 12,744 | 830 |\n\n| Build | Route | Performance | Accessibility | LCP ms | TBT ms | CLS | JS transfer bytes |\n|---|---|---:|---:|---:|---:|---:|---:|\n| b1 | Home | 97 | 100 | 2,086.339 | 8 | 0 | 77,830 |\n| b1 | Filtered home | 99 | 100 | 1,608.096 | 16 | 0 | 77,780 |\n| b1 | Pok\u00e9mon | 69 | 100 | 4,906.173 | 174 | 0 | 77,780 |\n| b1 | Move | 95 | 100 | 2,226.639 | 42.5 | 0 | 77,780 |\n| b1 | Ability | 100 | 100 | 1,385.616 | 9 | 0 | 77,780 |\n| b1 | Type | 98 | 100 | 1,822.796 | 32 | 0 | 77,780 |\n| b2 | Home | 99 | 100 | 1,849.128 | 78 | 0 | 84,560 |\n| b2 | Filtered home | 99 | 100 | 1,833.561 | 25.5 | 0 | 84,509 |\n| b2 | Pok\u00e9mon | 97 | 100 | 2,424.942 | 81 | 0 | 84,509 |\n| b2 | Move | 98 | 100 | 2,251.522 | 92 | 0 | 84,509 |\n| b2 | Ability | 100 | 100 | 1,760.973 | 37 | 0 | 84,509 |\n| b2 | Type | 99 | 100 | 1,996.659 | 62.5 | 0 | 84,509 |\n| b3 | Home | 99 | 100 | 1,985.076 | 60.5 | 0 | 84,677 |\n| b3 | Filtered home | 99 | 100 | 1,983.906 | 55.5 | 0 | 84,677 |\n| b3 | Pok\u00e9mon | 69 | 100 | 4,932.357 | 191 | 0 | 84,677 |\n| b3 | Move | 96 | 100 | 2,144.68 | 167 | 0 | 84,677 |\n| b3 | Ability | 99 | 100 | 1,841.497 | 51 | 0 | 84,677 |\n| b3 | Type | 99 | 100 | 1,841.941 | 63.5 | 0 | 84,677 |\n| b4 | Home | 99 | 100 | 2,022.003 | 31 | 0 | 84,546 |\n| b4 | Filtered home | 99 | 100 | 1,851.189 | 63.5 | 0 | 84,495 |\n| b4 | Pok\u00e9mon | 96 | 100 | 2,453.599 | 117 | 0 | 84,495 |\n| b4 | Move | 92 | 100 | 2,239.745 | 274 | 0 | 84,495 |\n| b4 | Ability | 99 | 100 | 1,748.617 | 89.5 | 0 | 84,495 |\n| b4 | Type | 97 | 100 | 1,850.947 | 161.5 | 0 | 84,495 |\n\n### Angular\n\n| Build | Generation s | Tests | Input | Cached | Uncached | Cache-write | Output | Reasoning detail |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|\n| b1 | 443.797 | 54/54 | 1,905,652 | 1,817,472 | 88,180 | 0 | 15,239 | 2,464 |\n| b2 | 392.379 | 54/54 | 1,429,286 | 1,369,344 | 59,942 | 0 | 12,820 | 941 |\n| b3 | 480.652 | 54/54 | 2,541,453 | 2,467,200 | 74,253 | 0 | 14,610 | 1,641 |\n| b4 | 352.685 | 54/54 | 1,401,683 | 1,337,984 | 63,699 | 0 | 12,114 | 755 |\n\n| Build | Route | Performance | Accessibility | LCP ms | TBT ms | CLS | JS transfer bytes |\n|---|---|---:|---:|---:|---:|---:|---:|\n| b1 | Home | 73 | 100 | 1,545.782 | 983.073 | 0.134 | 98,051 |\n| b1 | Filtered home | 85 | 100 | 1,793.442 | 255 | 0.204 | 98,051 |\n| b1 | Pok\u00e9mon | 49 | 100 | 7,242.16 | 1,783.323 | 0.004 | 99,980 |\n| b1 | Move | 95 | 100 | 1,427.58 | 112.5 | 0.115 | 81,518 |\n| b1 | Ability | 96 | 100 | 1,397.823 | 47.5 | 0.115 | 81,518 |\n| b1 | Type | 96 | 100 | 1,406.677 | 71 | 0.115 | 81,518 |\n| b2 | Home | 80 | 100 | 1,746.748 | 757.783 | 0.107 | 77,749 |\n| b2 | Filtered home | 95 | 100 | 1,563.549 | 149.254 | 0.107 | 77,749 |\n| b2 | Pok\u00e9mon | 80 | 100 | 2,595.272 | 548 | 0.104 | 77,749 |\n| b2 | Move | 70 | 100 | 2,261.788 | 2,343.189 | 0 | 77,749 |\n| b2 | Ability | 95 | 100 | 1,563.514 | 138.5 | 0.107 | 77,749 |\n| b2 | Type | 76 | 100 | 1,565.788 | 921.758 | 0.107 | 77,749 |\n| b3 | Home | 93 | 100 | 1,989.485 | 206 | 0.111 | 50,172 |\n| b3 | Filtered home | 96 | 100 | 1,979.15 | 90 | 0.111 | 50,172 |\n| b3 | Pok\u00e9mon | 79 | 100 | 4,728.484 | 76 | 0.111 | 50,172 |\n| b3 | Move | 76 | 100 | 1,982.376 | 841.001 | 0.111 | 50,172 |\n| b3 | Ability | 96 | 100 | 1,917.653 | 45 | 0.111 | 50,172 |\n| b3 | Type | 91 | 100 | 1,981.004 | 243 | 0.111 | 50,172 |\n| b4 | Home | 78 | 100 | 1,438.886 | 1,031.5 | 0.008 | 79,377 |\n| b4 | Filtered home | 95 | 100 | 1,426.612 | 103.5 | 0.118 | 79,377 |\n| b4 | Pok\u00e9mon | 68 | 100 | 5,171.324 | 365 | 0.118 | 79,377 |\n| b4 | Move | 71 | 100 | 1,553.429 | 2,214.882 | 0.008 | 79,377 |\n| b4 | Ability | 95 | 100 | 1,403.324 | 117.5 | 0.118 | 79,377 |\n| b4 | Type | 75 | 100 | 1,489.898 | 903.742 | 0.118 | 79,377 |\n\n## Versions and source size\n\nThe Marionette applications all installed **Marionette 5.1.0, @mnjs/html 1.0.0 and Vite 8.3.8**. The core source revision is `86ee0599ee9c3e1ae472d7426fc3769bd66bdcbe`; packaged documentation records clean source. The public [npm release metadata](https://registry.npmjs.org/marionette/5.1.0) supplied archive integrity. Core archive SHA-256 is `54cd2784349fac372968b30e7b87584d324e0ba0b306f3d1d14e7e7b3c5745ee`; the bundled skill SHA-256 is `591e2c338e732da101109c730dcf0e1b5602dfa95cb431aad1da52bba4f32d4e`. Installed core files and the measured core identity were verified. Optional companions were available without requiring their use.\n\nThe following dependency versions are read from each retained application record.\n\n| Framework | Build | Principal installed versions |\n|---|---|---|\n| Marionette 5.1.0 with Vite | b1 | marionette 5.1.0; @mnjs/html 1.0.0; @mnjs/data 5.1.0; vite 8.3.8 |\n| Marionette 5.1.0 with Vite | b2 | marionette 5.1.0; @mnjs/html 1.0.0; vite 8.3.8 |\n| Marionette 5.1.0 with Vite | b3 | marionette 5.1.0; @mnjs/html 1.0.0; @mnjs/data 5.1.0; vite 8.3.8 |\n| Marionette 5.1.0 with Vite | b4 | marionette 5.1.0; @mnjs/html 1.0.0; @mnjs/data 5.1.0; vite 8.3.8 |\n| Angular | b1 | @angular/core 22.2.4; @angular/cli 22.2.5; @angular/build 22.2.5; typescript 6.0.3 |\n| Angular | b2 | @angular/core 22.2.4; @angular/cli 22.2.5; @angular/build 22.2.5; typescript 6.0.3 |\n| Angular | b3 | @angular/core 22.2.4; @angular/cli 22.2.5; @angular/build 22.2.5; typescript 6.0.3 |\n| Angular | b4 | @angular/core 22.2.4; @angular/cli 22.2.5; @angular/build 22.2.5; typescript 6.0.3 |\n| Nuxt | b1 | nuxt 4.6.4 |\n| Nuxt | b2 | nuxt 4.6.4 |\n| Nuxt | b3 | nuxt 4.6.4 |\n| Nuxt | b4 | nuxt 4.6.4 |\n| React Router | b1 | react 19.3.1; react-router 8.5.1; vite 8.3.5 |\n| React Router | b2 | react 19.3.1; react-router 8.5.1; vite 8.3.5 |\n| React Router | b3 | react 19.3.1; react-router 8.5.1; vite 8.3.5 |\n| React Router | b4 | react 19.3.1; react-router 8.5.1; vite 8.3.5 |\n| SvelteKit | b1 | svelte 5.57.3; @sveltejs/kit 3.1.1; vite 8.3.5 |\n| SvelteKit | b2 | svelte 5.57.3; @sveltejs/kit 3.1.1; vite 8.3.5 |\n| SvelteKit | b3 | svelte 5.57.3; @sveltejs/kit 3.1.1; vite 8.3.5 |\n| SvelteKit | b4 | svelte 5.57.3; @sveltejs/kit 3.1.1; vite 8.3.5 |\n| Vanilla | b1 | vite 8.3.5 |\n| Vanilla | b2 | vite 8.3.6 |\n| Vanilla | b3 | vite 8.3.5 |\n| Vanilla | b4 | vite 8.3.5 |\n\nPhysical source lines are not complexity or maintainability. The recorded Nolan count, independent nonblank snapshot count and formatter-normalized count use different definitions and are kept separate. Generated roots and byte-identical supplied design tokens are excluded from the new independent counts. Strict pre-build snapshot timing is not established. All 24 applications now have nonblank formatter-normalized counts under the same selection policy, including comments and excluding supplied fixtures. Some recorded Nolan counts contain generated material. **Use the measured JavaScript transfer tables for a consistent size comparison.**\n\n| Framework | Build | Recorded Nolan lines | Independent snapshot nonblank | Formatter-normalized nonblank |\n|---|---|---:|---:|---:|\n| Marionette 5.1.0 with Vite | b1 | 78 | 72 | 998 |\n| Marionette 5.1.0 with Vite | b2 | 1,103 | 952 | 950 |\n| Marionette 5.1.0 with Vite | b3 | 118 | 112 | 1027 |\n| Marionette 5.1.0 with Vite | b4 | 87 | 81 | 1053 |\n| Angular | b1 | 679 | 679 | 1890 |\n| Angular | b2 | 1,257 | 1,257 | 1343 |\n| Angular | b3 | 1,309 | 1,309 | 1392 |\n| Angular | b4 | 510 | 510 | 1711 |\n| Nuxt | b1 | 13,600 | Unavailable | 997 |\n| Nuxt | b2 | 13,929 | 106 | 1031 |\n| Nuxt | b3 | 14,162 | 77 | 981 |\n| Nuxt | b4 | 56 | 56 | 989 |\n| React Router | b1 | 770 | 45 | 1029 |\n| React Router | b2 | 962 | 59 | 1071 |\n| React Router | b3 | 1,031 | 84 | 1167 |\n| React Router | b4 | 825 | 78 | 1009 |\n| SvelteKit | b1 | 24,067 | Unavailable | 940 |\n| SvelteKit | b2 | 1,005 | 1,005 | 946 |\n| SvelteKit | b3 | 24,012 | 114 | 959 |\n| SvelteKit | b4 | 24,025 | 119 | 981 |\n| Vanilla | b1 | 60 | 55 | 825 |\n| Vanilla | b2 | 24 | 24 | 771 |\n| Vanilla | b3 | 37 | 32 | 815 |\n| Vanilla | b4 | 68 | 63 | 865 |\n\n## Comparability\n\n- The task used the pinned Pok\u00e9dex fixture, its independent 54-test suite, local API data, Caddy HTTPS/HTTP2 and mobile Lighthouse measurement. Generation and measurement used verified 4 CPU / 8 GiB container limits. The generation timeout was 240 minutes. The recorded Codex CLI was 0.166.0, Node 24.22.1, with model `gpt-6.1-sol`; effort and service-tier overrides were unset. Low reasoning-token counts do not establish a selected reasoning effort.\n- Each Marionette application used a fresh HOME and ephemeral native thread with the neutral framework task prompt. The intended bundled repository skill and seven hosted MCP tools were advertised; built-in system skills remained visible. Tool advertisement/capabilities are indirect handshake evidence, not a captured wire exchange. No agent MCP-tool invocation was observed in these four streams; catalog reads made by the controller are a separate activity.\n- Collection dates differ across frameworks. The Marionette agent npm cutoff was `2026-11-12T18:53:25Z` to admit the published release. Exact dependency versions differ across applications; strict date/version equality is not asserted. This is not a contemporaneously randomized experiment.\n- The hosted MCP service changed between b1 and b2, as detailed below. Both revision and corpus are flagged for comparison. The service was stable within each of the four builds; no deployment freeze was enforced. Zero agent invocation does not establish identical exposure or absence of an effect.\n- The retained Nuxt b3 measurement uses an explicit `api.localhost` to container-loopback mapping. The new Marionette measurements use that mapping; not every peer measurement has identical hostname configuration. Peer numeric results are preserved unchanged.\n- Native app-server metadata reports `explicitRequestOnly` multi-agent mode. Web-search configuration was not explicitly overridden; unset configuration is not proof of observed search use. A fresh HOME/session inventory does not establish inaccessible sibling credential stores within the dedicated unprivileged container. No host-project mount or privileged container is introduced by this protocol.\n- Four applications per framework are a small sample. Five measurements reduce per-app sampling noise, but they do not create more independent applications. Shared-host activity, model stochasticity, application architecture and data-loading choices limit causal and population-wide conclusions. The results do not isolate intrinsic framework overhead.\n\n### Hosted MCP observations\n\nAll four applications installed core 5.1.0 and had its bundled local skill/docs available. The table describes the separately hosted catalog.\n\n| Build | Hosted catalog version | Service revision | Corpus SHA-256 | Stable within build |\n|---|---|---|---|---|\n| b1 | 5.0.0 | `992446b95f2885a6128d8c8111ac8db0f2e3bfa1` | `7438a8e7be53f13067dedbf19c04f8a0d5efdbb2acc4b4a80eea90a29f9ec45d` | Yes |\n| b2 | 5.1.0 | `572cc10d2d3405a63d61cb49b5b445cffc68d133` | `acb4be738b453d80262023463c68f7081d1a7d5889c71ad0593ca16710bd7ab6` | Yes |\n| b3 | 5.1.0 | `572cc10d2d3405a63d61cb49b5b445cffc68d133` | `acb4be738b453d80262023463c68f7081d1a7d5889c71ad0593ca16710bd7ab6` | Yes |\n| b4 | 5.1.0 | `572cc10d2d3405a63d61cb49b5b445cffc68d133` | `acb4be738b453d80262023463c68f7081d1a7d5889c71ad0593ca16710bd7ab6` | Yes |\n\n## Evidence fingerprints\n\nNumbers were checked against each completed application\u2019s native usage, generation and acceptance receipts, and its stored route samples. Every per-route median was recomputed from five numeric samples. The fingerprints identify the authorized measurement data without embedding execution paths or transcripts.\n\n| Framework | Build | Measurement-results SHA-256 |\n|---|---|---|\n| Marionette 5.1.0 with Vite | b1 | `4cd30d39a8e5b3f1ad09c96afd5527bb6fc0a0500bdb79f5e4f645561b58660e` |\n| Marionette 5.1.0 with Vite | b2 | `af4405af707c0e694a3750c01f07a5d1ef8ecd72221b8c190b9d839b86a27514` |\n| Marionette 5.1.0 with Vite | b3 | `2780e798efbbe021b47a981979b08a93a69f4f7dc8eefd6e1ff599bed907e5ed` |\n| Marionette 5.1.0 with Vite | b4 | `f147d678e8b62f8eb5129b22b21913d3b66508a5ce40eb10f30ed9e02eefc5f5` |\n| Angular | b1 | `82eeb55beef73a4568bcc7bbf0136127b85b547a71ad817237ec36cbda52ee3d` |\n| Angular | b2 | `5ee48be93a5c41797300d953ec77cecc396eb3754bdf6943f8320a19f808dcdd` |\n| Angular | b3 | `1c97de45d135403546cebead088a8452aa5c6bbef87b065b3ab946e6cc807099` |\n| Angular | b4 | `39c38a3f695b5c399cc656ea3145687d9639e36d5f1db96e890371ab6f86ff93` |\n| Nuxt | b1 | `75633129ac3e1085e1795ac50f60e5e71b3b8ba9470b92b4dcd7120c91ccd4f0` |\n| Nuxt | b2 | `2a9cc4ca6b8dca2e13317d3182d0fd58f41173e38b68119b3d68803296ac3b43` |\n| Nuxt | b3 | `d4010c63baa5d51a0e89cbb9732aa4d0418177976c618da37928ef53b1891cef` |\n| Nuxt | b4 | `577c6579e212420ca3ac5823b41981562434cfcab5013de175f4ac6f4ea8a90d` |\n| React Router | b1 | `ce07f8f7063ab07a291f05d6f3bfa61f9222b4027a22a8473669614d57149cc2` |\n| React Router | b2 | `63d50e00596249339faa88eb22d59bd3cbfaa8e62d1235ed34bfa9151adf14f5` |\n| React Router | b3 | `daed421c842ef7469faf8fc3497e26f4f40b302c00c854c4118e91b0178164a0` |\n| React Router | b4 | `f49952e0d0ae43195e43da73d3d1a6fb7e53b4d0a016259a549d889d63e60446` |\n| SvelteKit | b1 | `7f363511942bd53c1d92de1d22a215de0c916936ebae870262fc76f1ca3c2904` |\n| SvelteKit | b2 | `e8343a38d71c639e0fcc3fabecfad5c5d7938af04627b48c3db24796a841b98e` |\n| SvelteKit | b3 | `576cea59c7cea64b52f33bb4efd86991d0f818b687f9b91a1b567afdf861ec47` |\n| SvelteKit | b4 | `c800ee3bb5559b22fad2251d9bb2efec3cd8b3ff12e6a47ea3c0c760182058d8` |\n| Vanilla | b1 | `b555472f9d51fa9b4e0bf991d61071f2dfa59642ad75cff70298fa24ffa54432` |\n| Vanilla | b2 | `621a516911c3ba2c5a2136dfec296cdb143ebf5fd0e53ef6dd2d02323e4dc16d` |\n| Vanilla | b3 | `abdb43e1b22da6ae01cb0109515196f7fa7fad32dd32f585299f47338edb1b64` |\n| Vanilla | b4 | `0a889f45923bddcecb512f5ed3a3600bc313053619a62897c6e45f2ae569c9a3` |\n\nThe evidence supports the defined 24-application comparison. Actual subscription/credit debit is unavailable. No monetary total or API-request count is inferred.\n\n## Normalized source-count policy update\n\nAll 24 applications use Prettier 3.9.10 with Svelte plugin 4.1.1; nonblank formatted lines include comments and exclude generated output and supplied fixtures. SvelteKit b2 excludes 69 lines of supplied design-token CSS (including a whitespace-only variant), giving 946 rather than 1,015. Counts measure formatted source size, not complexity.\n",
  "measurement_level": "Per-application medians of five samples; individual samples and source receipts are published in the linked GitHub evidence package."
}