Skip to content

[evals] Cover focused Cache Components and Partial Prefetching cases - #97813

Merged
aurorascharff merged 10 commits into
canaryfrom
codex/navigation-api-eval
Sep 9, 2026
Merged

aurorascharff merged 10 commits into
canaryfrom
codex/navigation-api-eval

Conversation

@aurorascharff

@aurorascharff aurorascharff commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • update existing evals for synchronous I/O, instant shell validation, and Cache Components configuration instead of adding duplicate fixtures
  • add focused Partial Prefetching coverage for URL-data inclusion, the prefetch stage, and the navigation stage
  • retain focused Cache Components coverage for session isolation and URL-dependent shells
  • rebase onto current canary so the Partial Prefetching evals can use the public unstable_prefetch() and unstable_navigation() API references

Coverage

The latest results use Claude Sonnet 4.6 for the coding agent and Claude Haiku 4.5 for the agentic judge. The Partial Prefetching cases have been rerun after the new API references landed, and the corrected Cache Components criteria have also been rerun.

Eval Scenario Baseline Bundled docs
agent-035-connection-dynamic Adopt Cache Components while keeping synchronous request-time values fresh and stable navigation in the shell 5/5 5/5
agent-040-instant Follow default validation and keep a stable product title ahead of live inventory 4/4 4/4
agent-042-enable-ppr Translate legacy route configuration while preserving hourly and request-specific behavior 4/4 4/4
agent-048-prefetch-url-data Include cached URL-specific category content in a selected per-link prefetch 3/6 6/6
agent-049-prefetch-stage Exclude cached content from the App Shell but include it in a selected prefetch 1/5 5/5
agent-051-prefetch-until-navigation Prefetch a selected title while deferring the rest until navigation 0/5 5/5
agent-052-cache-components-session-isolation Reuse shared data without placing member-specific request data in a public cache 5/5 5/5
agent-053-cache-components-url-shell Keep URL data below a useful shell and include every output-changing value in the cache key 3/5 5/5

After the public API references landed, the prefetch-stage and navigation-stage evals show the intended documentation signal. Baseline Sonnet passed 1/5 criteria for unstable_prefetch() and 0/5 for unstable_navigation(). With the canonical bundled-docs instruction, Sonnet found the new references and passed all 5/5 criteria in both cases. After clarifying that the URL-data navigation must not block and linking the general navigation docs to the optimizing-prefetching guide, the URL-data case improved from 3/6 without docs to 6/6 with bundled docs.

Result interpretation

  • agent-048 now passes 6/6 with bundled docs. The scoped documentation link led the agent to the URL-data prefetch pattern instead of a blocking render. Baseline Sonnet added prefetch={true} but relied on the previous full-payload behavior and missed both the Partial Prefetching configuration and cached URL data, resulting in 3/6.
  • The low baseline scores for agent-049 and agent-051 are the intended signal. Without the new references, the agents did not discover the prefetch and navigation stages. With bundled docs, both cases pass 5/5.
  • agent-053 is also an intended documentation signal: the baseline hid the useful shell behind a broad fallback, while bundled docs preserved the shell and passed 5/5.
  • agent-035 now passes 5/5 in both conditions after removing an unnecessary requirement for visible loading UI in one small metadata region. agent-052 also passes 5/5 in both conditions after removing two failures for an omitted explicit cacheLife(), because the default cache profile still applies, and clarifying for the judge that an uncached component reading cookies() or headers() remains request-specific without another opt-out marker.

Overlap decisions

  • agent-035 now carries the synchronous-I/O adoption case, so the duplicate agent-051 fixture was removed.
  • agent-042 now carries the route-configuration migration case, so the duplicate agent-048 fixture was removed.
  • agent-034 remains focused on correct async cookies() and headers() usage. agent-052 tests the separate risk of leaking request-specific values through a public cache.
  • agent-040 tests one meaningful shell under default validation. agent-041 still tests independent streaming across several dashboard sections.
  • agent-048 intentionally brings cached URL-specific content into a selected prefetch. agent-053 tests the opposite shared-shell requirement during Cache Components adoption.

Verification

  • Dry fixture generation passes for all eight cases in the table.
  • pnpm build-all
  • agent-049-prefetch-stage: baseline 1/5, bundled docs 5/5
  • agent-051-prefetch-until-navigation: baseline 0/5, bundled docs 5/5
  • agent-035-connection-dynamic: baseline 5/5, bundled docs 5/5
  • agent-048-prefetch-url-data: baseline 3/6, bundled docs 6/6
  • agent-052-cache-components-session-isolation: baseline 5/5, bundled docs 5/5
  • pnpm exec tsc -p evals/evals/agent-035-connection-dynamic/tsconfig.json --noEmit
  • pnpm exec tsc -p evals/evals/agent-042-enable-ppr/tsconfig.json --noEmit

@github-actions

github-actions Bot commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: b523102

@github-actions

github-actions Bot commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

Stats from current PR

🟢 1 improvement

Metric Canary PR Change Trend
node_modules Size 553 MB 553 MB 🟢 625 kB (0%) ▁▁▁▁▁
📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 865ms 864ms ✓ █████
Cold (Ready in log) 845ms 853ms ✓ ▇█▆▅▅
Cold (First Request) 1.381s 1.399s ✓ ▇█▆▄▃
Warm (Listen) 864ms 813ms ✓ █████
Warm (Ready in log) 828ms 809ms ✓ ▅▆▅▃▄
Warm (First Request) 1.351s 1.300s ✓ ▅▇▆▂▃
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 812ms 812ms ✓ █▁█▁▁
Cold (Ready in log) 796ms 797ms ✓ █▂█▁▁
Cold (First Request) 3.334s 3.363s ✓ █▁▇▁▁
Warm (Listen) 812ms 812ms ✓ █▁▇▁▁
Warm (Ready in log) 793ms 793ms ✓ █▁█▁▁
Warm (First Request) 3.325s 3.308s ✓ █▁▇▁▁

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 6.281s 6.313s ✓ █▇▇▇▇
Cached Build 3.349s 3.294s ✓ ██▆▅▂
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 23.859s 24.050s ✓ █▂█▁▁
Cached Build 24.321s 24.298s ✓ █▂█▁▁
node_modules Size 553 MB 553 MB 🟢 625 kB (0%) ▁▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
017_4moyv5m34.js gzip 117 B 117 B ✓
05jocc85-b73_.js gzip 341 B N/A -
096twxhe86hwd.js gzip 7.53 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB ✓
0e5lgz-xcf6ln.js gzip 273 B 273 B ✓
0enhddgqs2dl-.js gzip 265 B 265 B ✓
0h34mejwa_7pd.js gzip 354 B 354 B ✓
0w853zxni3ro0.js gzip 1.36 kB N/A -
1-j27ycnrp24e.js gzip 71.5 kB N/A -
13lq2aw3_0bgw.js gzip 3.52 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B ✓
1m5vdnlf0deiv.js gzip 411 B 411 B ✓
1nigpy_mr0xvj.js gzip 339 B N/A -
1p0l8mn2wz5f2.js gzip 1.97 kB N/A -
1s-3t9k2_uhom.js gzip 117 B N/A -
1sqoyy39jpgkq.js gzip 121 B 121 B ✓
1tf1phijqlx9j.js gzip 220 B 220 B ✓
2-54v5vj7orwp.js gzip 46.8 kB N/A -
2b05_424u1zq-.js gzip 120 B N/A -
2ca40xittx95r.js gzip 8.75 kB N/A -
2hgz42b8sldyc.js gzip 5.85 kB N/A -
2j02uk1ob2zes.js gzip 155 B N/A -
2kci0vnt-49o-.js gzip 113 B 113 B ✓
2sxgl_rcrrn_p.js gzip 399 B N/A -
2u_p__ndkooh-.js gzip 5.66 kB N/A -
2vt62i17bhbdu.js gzip 2.35 kB N/A -
342di-crrg9kq.js gzip 119 B N/A -
36hfc2_979aw2.js gzip 119 B N/A -
38wfp6jjrrdfm.js gzip 131 B 131 B ✓
3dl1ilk37-30g.js gzip 117 B N/A -
3h0us7yy7bd_o.js gzip 13.1 kB N/A -
3kvxagoobts7h.js gzip 117 B N/A -
3p99hd9vwe6ae.js gzip 13 kB N/A -
3r0475panhk6m.js gzip 123 B N/A -
3s0i-weykgzrt.js gzip 125 B N/A -
3wijk2ywqgsv9.js gzip 2.52 kB N/A -
41kebu3wv5f4d.js gzip 65.5 kB N/A -
41u5s3oe2-erp.js gzip 2.29 kB N/A -
turbopack-0d..9ejy.js gzip 3.74 kB 3.74 kB ✓
02zc7sqlpqxn3.js gzip N/A 119 B -
0e28eh3gbwmp0.js gzip N/A 3.51 kB -
0jwho9fkrb_t3.js gzip N/A 2.29 kB -
0longconn5mlm.js gzip N/A 123 B -
0p4l3ozbez2cz.js gzip N/A 2.35 kB -
0sbh_15ejop4o.js gzip N/A 13 kB -
0skdm-9rpid8g.js gzip N/A 117 B -
0wv-h56sz83wn.js gzip N/A 120 B -
137xup2t69ovc.js gzip N/A 1.97 kB -
17vvacc-4yow1.js gzip N/A 71.5 kB -
1a90tbnmyizib.js gzip N/A 153 B -
1fk10s3m1oecx.js gzip N/A 400 B -
1w_md9hqn6f4o.js gzip N/A 65.5 kB -
20qhkyyj2_tla.js gzip N/A 116 B -
25lb_468wpv8t.js gzip N/A 117 B -
2imyufe18bsb7.js gzip N/A 1.36 kB -
2mr-6hunyw7uo.js gzip N/A 7.53 kB -
2p4n3-8-xixh_.js gzip N/A 341 B -
2vqdfieehz5do.js gzip N/A 8.75 kB -
2xn85ykzw2v1e.js gzip N/A 13.1 kB -
33gdcu1dj0nl9.js gzip N/A 46.7 kB -
34knadd6wu9qg.js gzip N/A 119 B -
37-g1kp39exux.js gzip N/A 5.85 kB -
39jq2b6t6z6up.js gzip N/A 339 B -
3a9a9tvkag_-j.js gzip N/A 2.52 kB -
3hk-fj9wj-l1s.js gzip N/A 5.66 kB -
3t121tj-h0kbm.js gzip N/A 125 B -
Total 299 kB 299 kB ✅ -69 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 1.02 kB 1.02 kB ✓
Total 1.02 kB 1.02 kB ✓
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 846 B 845 B ✓
Total 846 B 845 B ✅ -1 B
Build Cache
Canary PR Change
00000001.sst gzip 15.3 MB 15.1 MB 🟢 168 kB (-1%)
00000002.sst gzip 13.9 MB 13.3 MB 🟢 514 kB (-4%)
00000003.sst gzip 12.9 MB 13.2 MB 🔴 +345 kB (+3%)
00000004.sst gzip 12.8 MB 13 MB 🔴 +221 kB (+2%)
00000005.sst gzip 2.75 MB 10.1 MB 🔴 +7.3 MB (+265%)
00000006.sst gzip 10.1 MB 2.75 MB 🟢 7.32 MB (-73%)
00000007.sst gzip 59 B 59 B ✓
00000008.meta gzip 89 B 89 B ✓
00000009.meta gzip 297 kB 297 kB ✓
00000010.meta gzip 297 kB 297 kB ✓
00000011.meta gzip 297 kB 297 kB ✓
00000012.sst gzip 53.6 kB 52.9 kB 🟢 758 B (-1%)
00000013.sst gzip 1.79 MB 1.8 MB 🔴 +2.71 kB (+0%)
00000014.sst gzip 59 B 59 B ✓
00000015.meta gzip 116 B 116 B ✓
00000016.meta gzip 327 kB 327 kB ✓
00000017.meta gzip 404 kB 406 kB 🔴 +2.08 kB (+1%)
00000018.sst gzip 54.5 kB 54 kB ✓
00000019.sst gzip 1.36 MB 1.37 MB 🔴 +9.5 kB (+1%)
00000020.sst gzip 59 B 59 B ✓
00000021.meta gzip 116 B 116 B ✓
00000022.meta gzip 327 kB 327 kB ✓
00000023.meta gzip 372 kB 372 kB ✓
00000024.sst gzip 54.5 kB 53.9 kB ✓
00000025.sst gzip 1.36 MB 1.37 MB 🔴 +11 kB (+1%)
00000026.sst gzip 59 B 59 B ✓
00000027.meta gzip 116 B 116 B ✓
00000028.meta gzip 327 kB 372 kB 🔴 +45.2 kB (+14%)
00000029.meta gzip 372 kB 327 kB 🟢 44.8 kB (-12%)
00000030.sst gzip 53.8 kB 53 kB 🟢 737 B (-1%)
00000031.sst gzip 1.36 MB 1.37 MB 🔴 +11.3 kB (+1%)
00000032.sst gzip 59 B 59 B ✓
00000033.meta gzip 116 B 116 B ✓
00000034.meta gzip 327 kB 327 kB ✓
00000035.meta gzip 372 kB 372 kB ✓
00000036.sst gzip 54.6 kB 53.8 kB 🟢 789 B (-1%)
00000037.sst gzip 1.36 MB 1.37 MB 🔴 +11 kB (+1%)
00000038.sst gzip 59 B 59 B ✓
00000039.meta gzip 116 B 116 B ✓
00000040.meta gzip 327 kB 327 kB ✓
00000041.meta gzip 372 kB 372 kB ✓
CURRENT gzip 94 B 92 B 🟢 2 B (-2%)
LOG gzip 679 B 692 B 🔴 +13 B (+2%)
Total 79.6 MB 79.5 MB ✅ -89.2 kB

📦 Webpack

Client

Main Bundles
Canary PR Change
3322-HASH.js gzip 65.7 kB N/A -
4191.HASH.js gzip 169 B N/A -
9784-HASH.js gzip 5.57 kB N/A -
b1ad9f4c-HASH.js gzip 63.5 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB ✓
main-app-HASH.js gzip 253 B 251 B ✓
main-HASH.js gzip 39.8 kB 39.7 kB ✓
webpack-HASH.js gzip 1.68 kB 1.68 kB ✓
3577.HASH.js gzip N/A 168 B -
578-HASH.js gzip N/A 65.8 kB -
8590-HASH.js gzip N/A 5.53 kB -
a8984546-HASH.js gzip N/A 63.5 kB -
Total 236 kB 236 kB ⚠️ +39 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB ✓
Total 39.4 kB 39.4 kB ✓
Pages
Canary PR Change
_app-HASH.js gzip 194 B 193 B ✓
_error-HASH.js gzip 181 B 182 B ✓
css-HASH.js gzip 334 B 331 B ✓
dynamic-HASH.js gzip 1.81 kB 1.81 kB ✓
edge-ssr-HASH.js gzip 255 B 253 B ✓
head-HASH.js gzip 349 B 351 B ✓
hooks-HASH.js gzip 382 B 384 B ✓
image-HASH.js gzip 5.02 kB 5.01 kB ✓
index-HASH.js gzip 260 B 259 B ✓
link-HASH.js gzip 2.48 kB 2.48 kB ✓
routerDirect..HASH.js gzip 317 B 318 B ✓
script-HASH.js gzip 384 B 386 B ✓
withRouter-HASH.js gzip 316 B 315 B ✓
1afbb74e6ecf..834.css gzip 106 B 106 B ✓
Total 12.4 kB 12.4 kB ✓

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 128 kB 128 kB ✓
page.js gzip 293 kB 292 kB ✓
Total 421 kB 420 kB ✅ -1.3 kB
Middleware
Canary PR Change
middleware-b..fest.js gzip 599 B 603 B ✓
middleware-r..fest.js gzip 156 B 156 B ✓
middleware.js gzip 45.7 kB 45.5 kB ✓
edge-runtime..pack.js gzip 842 B 842 B ✓
Total 47.3 kB 47.1 kB ✅ -280 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 698 B 698 B ✓
Total 698 B 698 B ✓
Build Cache
Canary PR Change
0.pack gzip 4.8 MB 4.78 MB 🟢 14.1 kB (0%)
index.pack gzip 125 kB 124 kB ✓
index.pack.old gzip 124 kB 123 kB ✓
Total 5.05 MB 5.03 MB ✅ -16.1 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 375 kB 373 kB ✓
app-page-exp..prod.js gzip 206 kB 206 kB ✓
app-page-tur...dev.js gzip 374 kB 373 kB ✓
app-page-tur..prod.js gzip 206 kB 206 kB ✓
app-page-tur...dev.js gzip 370 kB 369 kB ✓
app-page-tur..prod.js gzip 204 kB 203 kB ✓
app-page.run...dev.js gzip 371 kB 370 kB ✓
app-page.run..prod.js gzip 204 kB 203 kB ✓
app-route-ex...dev.js gzip 82.5 kB 82.5 kB ✓
app-route-ex..prod.js gzip 55.6 kB 55.6 kB ✓
app-route-tu...dev.js gzip 82.5 kB 82.5 kB ✓
app-route-tu..prod.js gzip 55.6 kB 55.6 kB ✓
app-route-tu...dev.js gzip 82.1 kB 82.1 kB ✓
app-route-tu..prod.js gzip 55.4 kB 55.4 kB ✓
app-route.ru...dev.js gzip 82.1 kB 82.1 kB ✓
app-route.ru..prod.js gzip 55.4 kB 55.4 kB ✓
dev-validati...dev.js gzip 134 kB 134 kB ✓
dev-validati...dev.js gzip 134 kB 134 kB ✓
dev-validati...dev.js gzip 132 kB 132 kB ✓
dev-validati...dev.js gzip 132 kB 132 kB ✓
dist_client_...dev.js gzip 324 B 324 B ✓
dist_client_...dev.js gzip 326 B 326 B ✓
dist_client_...dev.js gzip 318 B 318 B ✓
dist_client_...dev.js gzip 317 B 317 B ✓
pages-api-tu...dev.js gzip 46.2 kB 46.2 kB ✓
pages-api-tu..prod.js gzip 34.3 kB 34.3 kB ✓
pages-api.ru...dev.js gzip 46.2 kB 46.2 kB ✓
pages-api.ru..prod.js gzip 34.3 kB 34.2 kB ✓
pages-turbo....dev.js gzip 54.6 kB 54.6 kB ✓
pages-turbo...prod.js gzip 39.7 kB 39.6 kB ✓
pages.runtim...dev.js gzip 54.6 kB 54.6 kB ✓
pages.runtim..prod.js gzip 39.6 kB 39.6 kB ✓
server.runti..prod.js gzip 65.9 kB 65.8 kB ✓
use-cache-pr...dev.js gzip 73.3 kB 72.5 kB 🟢 764 B (-1%)
use-cache-pr...dev.js gzip 73.3 kB 72.5 kB 🟢 767 B (-1%)
use-cache-pr...dev.js gzip 71.5 kB 70.7 kB 🟢 762 B (-1%)
use-cache-pr...dev.js gzip 71.5 kB 70.7 kB 🟢 756 B (-1%)
Total 4.1 MB 4.09 MB ✅ -10.6 kB
📝 Changed Files (33 files)

Files with changes:

  • app-page-exp..ntime.dev.js
  • app-page-exp..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page.runtime.dev.js
  • app-page.runtime.prod.js
  • app-route-ex..ntime.dev.js
  • app-route-ex..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route.runtime.dev.js
  • app-route.ru..time.prod.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • ... and 13 more
View diffs
app-page-exp..ntime.dev.js
failed to diff
app-page-exp..time.prod.js

Diff too large to display

app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js

Diff too large to display

app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js

Diff too large to display

app-page.runtime.dev.js
failed to diff
app-page.runtime.prod.js

Diff too large to display

app-route-ex..ntime.dev.js

Diff too large to display

app-route-ex..time.prod.js

Diff too large to display

app-route-tu..ntime.dev.js

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route-tu..ntime.dev.js

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route.runtime.dev.js

Diff too large to display

app-route.ru..time.prod.js

Diff too large to display

dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
pages-api-tu..ntime.dev.js

Diff too large to display

pages-api-tu..time.prod.js

Diff too large to display

pages-api.runtime.dev.js

Diff too large to display

pages-api.ru..time.prod.js

Diff too large to display

pages-turbo...ntime.dev.js

Diff too large to display

pages-turbo...time.prod.js

Diff too large to display

pages.runtime.dev.js

Diff too large to display

pages.runtime.prod.js

Diff too large to display

server.runtime.prod.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/842b29e0e9ddeecf5387f41fca8ed50a99ee4855/next

Commit: 842b29e

@aurorascharff aurorascharff changed the title [evals] Split instant and navigation-stage coverage [evals] Cover Instant and Partial Prefetching stages Aug 24, 2026
@aurorascharff aurorascharff changed the title [evals] Cover Instant and Partial Prefetching stages [evals] Cover focused Cache Components and Partial Prefetching cases Aug 31, 2026
aurorascharff added a commit that referenced this pull request Aug 31, 2026
## Summary

- add end-to-end adoption evals for Partial Prefetching and Cache
Components
- compare the baseline, bundled docs, and local adoption skill
independently
- support local skill installation and longer timeouts for
browser-backed workflows

## Results

One `claude-opus-4-8` run was retained per treatment and adoption eval,
judged by `claude-haiku-4-5`. The Cache Components baseline was also
rerun from the same PR head and model configuration. These results are
directional rather than statistically stable.

| Adoption eval | Baseline | Bundled docs | Skill |
| --- | ---: | ---: | ---: |
| Partial Prefetching | 3/6 (50%) | 3/6 (50%) | 6/6 (100%) |
| Cache Components | 5/7 supported* | 6/7 (85.7%) | 7/7 (100%) |

The Partial Prefetching skill was the only treatment to establish a
passing legacy `instant()` baseline before migration, rerun the same
production Playwright assertions after enabling Partial Prefetching, and
preserve the selected eager-link contract. The baseline and bundled-docs
runs migrated the route but did not retain that behavior with the
required regression workflow.

### Cache Components baseline audit

The clean Cache Components baseline rerun completed in 682 seconds. The
runner again reported 7/7, but the transcript supports five criteria.
Two agentic checks were false positives:

- The product route rendered only `<main>` and a `<Suspense
fallback={null}>` outside the URL-specific work, so it did not preserve
useful visible shell content.
- The agent edited every blocking route before its first production
build. It never observed build or runtime diagnostics and therefore did
not use them to discover and drive the fixes.

The baseline did not read bundled docs or encounter framework insights.
It inspected the installed Next.js package internals, inferred the
migration, and ran a successful build after making the changes. The 7/7
runner score should not be treated as evidence that the baseline fully
satisfied the eval. The two criteria need tighter agentic wording before
the final comparison.

The current bundled-docs and skill scores remain 6/7 and 7/7. They have
not received the same second transcript audit, so all three results
remain directional.

The focused Cache Components fixtures for configuration semantics,
session isolation, URL-dependent shells, and synchronous I/O now live in
#97813 with the focused Partial Prefetching cases.

## Scope

These are PR-local experiments for developing and reviewing the docs and
skills. This PR does not register them in the public `evals.nextjs.org`
suite, which is configured separately in the OSS eval repository.

## Validation

- `pnpm exec tsc -p evals/tsconfig.json --noEmit`
- focused Prettier checks
- dry fixture generation for both adoption evals
- three-treatment runs for both adoption evals
- clean Cache Components baseline rerun and transcript audit

<!-- NEXT_JS_LLM -->
@aurorascharff
aurorascharff force-pushed the codex/navigation-api-eval branch from be73e86 to f58e6aa Compare September 8, 2026 23:04
@aurorascharff
aurorascharff force-pushed the codex/navigation-api-eval branch from f58e6aa to e65fddd Compare September 8, 2026 23:05
@aurorascharff
aurorascharff marked this pull request as ready for review September 8, 2026 23:06
@aurorascharff
aurorascharff merged commit 9486750 into canary Sep 9, 2026
55 checks passed
@aurorascharff
aurorascharff deleted the codex/navigation-api-eval branch September 9, 2026 20:19
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Sep 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants