Vite plugin that reimplements the Next.js API surface — deploy anywhere
This report presents the forensic synthetic code analysis of cloudflare/vinext, a TypeScript project with 8,404 GitHub stars. SynthScan v2.0 examined 420,957 lines of code across 1496 source files, recording 2465 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 9.2 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2465 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/asset-prefix.test.ts | 46 | // ── Unit tests on the asset-prefix helpers ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/asset-prefix.test.ts | 310 | // ── End-to-end build tests ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 2347 | // ── Cross-origin request protection ───────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 2410 | // ── /_next/data JSON endpoint (issue #1330) ────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 2410 | // ── /_next/data JSON endpoint (issue #1330) ────────────────────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 6837 | // ── /_next/data JSON endpoint in production (issue #1330) ───────── | COMMENT |
| MEDIUM | tests/pages-router.test.ts | 6837 | // ── /_next/data JSON endpoint in production (issue #1330) ───────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 15 | // ── Helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 78 | // ── Font shim tests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 586 | // ── Plugin tests ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1362 | // ── fetchAndCacheFont integration ───────────────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1420 | // ── Served URL rewrite for cached Google Fonts CSS ──────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1553 | // ── parseStaticObjectLiteral security tests ─────────────────── | COMMENT |
| MEDIUM | tests/font-google.test.ts | 1656 | // ── _findBalancedObject / _findCallEnd unit tests ───────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 10 | // ── isAllowedDevOrigin ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 106 | // ── isCrossSiteNoCorsRequest ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 133 | // ── validateDevRequest ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/dev-origin-check.test.ts | 176 | // ── generateDevOriginCheckCode ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 16 | // ── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 34 | // ── scanImports ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 270 | // ── analyzeConfig ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 814 | // ── checkLibraries ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 921 | // ── checkConventions ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1323 | // ── hasFreeCjsGlobal ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1429 | // ── runCheck ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1541 | // ── formatReport ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/check.test.ts | 1677 | // ── Integration: running against fixtures ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 13985 | // ── begin ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 13990 | // ── claim ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 13994 | // ── mark (head-hoisted) ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 13999 | // ── consume ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 14007 | // ── apply fallback ───────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 14015 | // ══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/shims.test.ts | 14017 | // ══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/shims.test.ts | 7762 | // ── escapePathDelimiters / decodePathParams ──────────────────────────────── | COMMENT |
| MEDIUM | tests/shims.test.ts | 22639 | // ─── server-only / client-only shims ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/shims.test.ts | 23920 | // ── next/head attribute name validation ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/shims.test.ts | 23990 | // ── has/missing condition value matching (anchored regex) ────────────────── | COMMENT |
| MEDIUM | tests/shims.test.ts | 24051 | // ── CSRF origin wildcard matching ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 49 | // ── parseSizeLimit ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 80 | // ── resolveBodyParserConfig ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 137 | // ── Helpers shared by the integration tests below ──────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 284 | // ── Node/dev path: api-handler.ts ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/pages-bodyparser-config.test.ts | 420 | // ── Workers/prod path: pages-api-route.ts ──────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 10 | // ─── MISS ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 35 | // ─── HIT ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 171 | // ─── STALE ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 265 | // ─── buildMissIsrCacheControl ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 281 | // ─── buildAppRouteMissIsrCacheControl ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/isr-decision.test.ts | 305 | // ─── re-exported constants ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 18 | // ── Fixture paths ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 37 | // ── Server lifecycle helper ─────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 116 | // ── Config helpers ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/helpers.ts | 135 | // ── Fetch helpers ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/app-ssr-stream.test.ts | 221 | // ── beforeInteractive pre-head splice ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 29 | // ─── Issue #1513 reproduction ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 29 | // ─── Issue #1513 reproduction ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 66 | // ─── SSR rendering ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 293 | // ─── srcSet generation ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/image-component.test.ts | 371 | // ─── getImageProps ────────────────────────────────────────────────────── | COMMENT |
| 613 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | oxlint-plugins/prefer-shared-utils.js | 53 | function readExportedFunctionNames(absPath) { | CODE |
| LOW | oxlint-plugins/prefer-shared-utils.js | 113 | function maskCommentsAndQuotedStrings(source, options = { scanTemplateBodies: true }) { | CODE |
| LOW | oxlint-plugins/prefer-shared-utils.js | 179 | function isCanonicalDefinitionFile(filename, modulePath) { | CODE |
| LOW | tests/asset-prefix.test.ts | 368 | function directoryContainsFileWithExtension(dir: string, extension: string): boolean { | CODE |
| LOW | tests/pages-router.test.ts | 45 | function writeMiddlewareRewritePriorityFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 155 | function writePagesAppGlobalCssFixture(rootDir: string): PagesAppGlobalCssFixture { | CODE |
| LOW | tests/pages-router.test.ts | 305 | function writeEncodedSlashPagesFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 333 | function writeOptionalCatchAllRootFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 364 | function writeGsspAppInitialPropsContextFixture(rootDir: string): void { | CODE |
| LOW | tests/pages-router.test.ts | 507 | async function buildPagesFixtureToOutDir(rootDir: string, outDir: string): Promise<void> { | CODE |
| LOW | tests/pages-router-app-prefetch-detection.test.ts | 63 | function installFakeBrowserGlobals( | CODE |
| LOW | tests/shims.test.ts | 27 | function commitRenderedPagesRouterElement(element: unknown): void { | CODE |
| LOW | tests/shims.test.ts | 15280 | async function expectPagesRouterPushTrailingSlashNormalization({ | CODE |
| LOW | tests/shims.test.ts | 17241 | async function expectBasePathHashOnlyPush({ | CODE |
| LOW | tests/shims.test.ts | 18022 | function trackHrefAssignmentsLocal(win: { location: { href: string } }): string[] { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 177 | function renderPagePayloadToStream(payload: unknown): ReadableStream<Uint8Array> { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 224 | function expectCachedAppPageSearchParamsObservation(value: unknown, html: string): void { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 236 | function buildQueryInvariantRenderObservation(): RenderObservation { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 439 | function createParamTextPageElement(prefix = "element") { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 450 | function createPprBlogDispatchOptions(overrides: CreateDispatchOptionsOverrides = {}) { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 463 | function createPprBlogFallbackShellGetter(stale: boolean) { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 475 | function createFreshBodySsrHandler(body: string): DispatchOptions["loadSsrHandler"] { | CODE |
| LOW | tests/app-page-dispatch.test.ts | 483 | function createVerifiedStaticLayoutManifest(input: { | CODE |
| LOW | tests/helpers.ts | 206 | export async function requestNodeServerWithHost( | CODE |
| LOW | tests/helpers.ts | 320 | export async function buildCloudflareAppFixture(fixtureDir: string): Promise<{ | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 319 | async function buildGeneratedMetadataRouteHtml( | CODE |
| LOW | tests/app-page-route-wiring.test.ts | 2039 | function buildStaticBranchElements(branch: "account" | "admin") { | CODE |
| LOW | tests/worker-entry-source.ts | 3 | export function readPagesRouterEntrySource(): string { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 113 | function createNoopRscEmbedTransform() { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 312 | function createFastSuspenseDocument() { | CODE |
| LOW | tests/app-ssr-stream.test.ts | 336 | async function renderFastSuspenseDocument(waitBeforePipe: boolean): Promise<string> { | CODE |
| LOW | tests/app-router-isr-codegen.test.ts | 203 | expect(code).toContain("export async function seedMemoryCacheFromPrerender(serverDir)"); | CODE |
| LOW | tests/cache-adapters-config.test.ts | 44 | expect(code).toContain("export function registerConfiguredCacheAdapters() {}"); | CODE |
| LOW | tests/app-page-cache.test.ts | 61 | function buildQueryInvariantRenderObservation(): RenderObservation { | CODE |
| LOW | tests/init-cjs-config-resolve.test.ts | 7 | async function buildAppWithExtensionlessTailwindConfig( | CODE |
| LOW | tests/tsconfig-path-alias-build.test.ts | 49 | function writeCloudflareAppFixture(root: string, name: string) { | CODE |
| LOW | tests/tsconfig-path-alias-build.test.ts | 141 | async function buildCloudflareAppFixture(root: string) { | CODE |
| LOW | tests/pages-node-compat.test.ts | 21 | function exerciseNextApiRequestPreviewTypes(req: NextApiRequest): NextApiRequestPreviewFields { | CODE |
| LOW | tests/pages-node-compat.test.ts | 43 | function exerciseNextApiResponsePreviewTypes(res: NextApiResponse): Promise<void> { | CODE |
| LOW | tests/deploy-prerender-config.test.ts | 108 | function writeProjectWithInlineNextConfig(nextConfig: string): void { | CODE |
| LOW | tests/init.test.ts | 60 | function readPluginRscVendoredEdgeBundle(fileName: string): string { | CODE |
| LOW | tests/init.test.ts | 71 | function expectConsumedBeforeInitialization( | CODE |
| LOW | tests/font-google-build.test.ts | 12 | async function buildFontGoogleMultipleFixture(): Promise<string> { | CODE |
| LOW | tests/app-optimistic-routing.test.ts | 89 | function dashboardManifestWithoutProfile(): RouteManifest { | CODE |
| LOW | tests/app-optimistic-routing.test.ts | 126 | function createBlogLoadingShellElements(): AppElements { | CODE |
| LOW | tests/app-optimistic-routing.test.ts | 153 | function createSettingsLoadingShellElements(): AppElements { | CODE |
| LOW | tests/app-route-handler-trailing-slash.test.ts | 20 | function copyAppFixtureWithTrailingSlash(prefix: string, trailingSlash: boolean): string { | CODE |
| LOW | tests/tsconfig-path-alias-resolution.test.ts | 60 | function writeOverlappingAliasFixture(root: string) { | CODE |
| LOW | tests/app-page-render.test.ts | 217 | function createVerifiedStaticLayoutManifest(input: { | CODE |
| LOW | tests/invalid-static-asset-404.test.ts | 42 | async function buildAppFixtureWithConfig( | CODE |
| LOW | tests/invalid-static-asset-404.test.ts | 77 | function findClientRuntimeManifestBuildId(outDir: string, pathPrefix: string): string | undefined { | CODE |
| LOW | tests/build-optimization.test.ts | 76 | function getEnvBuildBundlerOptions(env: any) { | CODE |
| LOW | tests/build-optimization.test.ts | 2263 | function simulateAssetTagFiltering(ssrManifestFiles: string[], lazyChunks: string[]): string[] { | CODE |
| LOW | tests/app-router-production-server.test.ts | 155 | async function startDelayedJsonSequenceTarget(delayMs: number): Promise<StartedTextSequenceTarget> { | CODE |
| LOW | tests/app-router-production-server.test.ts | 246 | async function expectRewrittenPathRevalidates( | CODE |
| LOW | tests/features.test.ts | 97 | async function captureCompressedWebResponse(encoding: "gzip" | "br"): Promise<{ | CODE |
| LOW | tests/features.test.ts | 2723 | function renderStaticSocialImagesMetadata(metadataBase: URL | null): string { | CODE |
| LOW | tests/router-javascript-urls.test.ts | 154 | function installFakeBrowserGlobals() { | CODE |
| LOW | tests/performance-benchmarks.test.ts | 994 | function validatePerformancePayload( | CODE |
| LOW | tests/trailing-slash.test.ts | 31 | function copyAppFixtureWithTrailingSlash(prefix: string, trailingSlash: boolean): string { | CODE |
| 1395 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/app-rsc-route-matching.test.ts | 441 | // owns the slot, with route groups and @slot segments stripped). | COMMENT |
| LOW | tests/pages-router.test.ts | 4821 | >; | COMMENT |
| LOW | tests/font-google.test.ts | 1421 | COMMENT | |
| LOW | tests/shims.test.ts | 2401 | // | COMMENT |
| LOW | tests/shims.test.ts | 3201 | delete (globalThis as any).window; | COMMENT |
| LOW | tests/shims.test.ts | 16621 | globalThis.fetch = originalFetch; | COMMENT |
| LOW | tests/shims.test.ts | 17821 | } | COMMENT |
| LOW | tests/shims.test.ts | 22081 | }); | COMMENT |
| LOW | tests/shims.test.ts | 24141 | // Regression for cloudflare/vinext#1353. The Pages Router navigation shim | COMMENT |
| LOW | tests/shims.test.ts | 24421 | "redirect", | COMMENT |
| LOW | tests/app-layout-param-observation.test.ts | 241 | ensureFetchPatch(); | COMMENT |
| LOW | tests/init-cjs-config-resolve.test.ts | 61 | } | COMMENT |
| LOW | tests/tsconfig-path-alias-build.test.ts | 321 | // unminified JS escaped the inner quotes as `title: \"Second Post\"`, so the | COMMENT |
| LOW | tests/link.test.ts | 1421 | it("returns absolute URLs unchanged", () => { | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 581 | expect(html).toContain('data-testid="parallelB-nested-page"'); | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 1141 | expect(html).not.toContain("404 - Page Not Found"); | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 1241 | // When a server component calls `redirect()` and the client makes an RSC | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 1361 | }); | COMMENT |
| LOW | tests/app-router-dev-server.test.ts | 2021 | // explicitly included to prevent late discovery, re-optimisation | COMMENT |
| LOW | tests/script.test.ts | 201 | ); | COMMENT |
| LOW | tests/script.test.ts | 661 | // The stylesheets prop must never leak onto the <script> attribute list. | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 1 | import fs from "node:fs"; | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 21 | // request and fell back to the real font only via the browser's | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 41 | fs.rmSync(fontCacheDir, { recursive: true, force: true }); | COMMENT |
| LOW | tests/app-router-font-google-prod.test.ts | 61 | // mock can match by substring. The build plugin currently always | COMMENT |
| LOW | tests/build-optimization.test.ts | 41 | const _stripServerExports = (code: string): string | null => | COMMENT |
| LOW | tests/build-optimization.test.ts | 2501 | }); | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 581 | // Edge case: the next/dynamic() CALL SITE is a Server Component (no | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 1841 | // pre-override request headers. | COMMENT |
| LOW | tests/app-router-production-server.test.ts | 1941 | expect(res.headers.get("content-type")).toContain("text/x-component"); | COMMENT |
| LOW | tests/head.test.ts | 721 | // | COMMENT |
| LOW | tests/app-router-rsc-flight-hint.test.ts | 41 | // ── Client reference preloading (Issue #256) ───────────────────────────────── | COMMENT |
| LOW | tests/rsc-streaming.test.ts | 641 | expect(output).toContain(RSC_RUNTIME_PUSH); | COMMENT |
| LOW | tests/router-javascript-urls.test.ts | 1 | import { afterEach, describe, it, expect, vi } from "vite-plus/test"; | COMMENT |
| LOW | tests/router-javascript-urls.test.ts | 21 | // | COMMENT |
| LOW | tests/kv-cache-handler.test.ts | 981 | }); | COMMENT |
| LOW | tests/link-navigation.test.ts | 961 | COMMENT | |
| LOW | tests/entry-templates.test.ts | 581 | ' "/:lang/docs v2/:section/:slug": __createAppPrerenderStaticParamsResolver([{ load: load_0 }], ["lang","section" | COMMENT |
| LOW | tests/entry-templates.test.ts | 1021 | // The generated entry's createAppFallbackRenderer call must receive a | COMMENT |
| LOW | tests/prerender.test.ts | 1041 | // | COMMENT |
| LOW | tests/cache-adapters-build.test.ts | 181 | logLevel: "silent", | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 81 | expect(res.status).toBe(404); | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 121 | // | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 141 | // Tests client-side external navigation | COMMENT |
| LOW | tests/nextjs-compat/navigation.test.ts | 161 | // N/A: Popstate revalidate | COMMENT |
| LOW | tests/nextjs-compat/not-found.test.ts | 441 | expect(body).not.toContain("Internal Server Error"); | COMMENT |
| LOW | tests/nextjs-compat/not-found.test.ts | 461 | // FIXTURE: fixtures/app-basic/app/nextjs-compat/not-found-error-boundary/nested/nested-2/page.tsx | COMMENT |
| LOW | tests/nextjs-compat/rsc-context-lazy-stream.test.ts | 121 | // data-request-id. Confirms the fixture works on the HTML path. | COMMENT |
| LOW | tests/nextjs-compat/rsc-context-lazy-stream.test.ts | 181 | // fall back to "missing" because headers() returned null context. | COMMENT |
| LOW | tests/nextjs-compat/rsc-context-lazy-stream.test.ts | 281 | it("SSR-rendered useSearchParams() returns empty string when no query string", async () => { | COMMENT |
| LOW | tests/nextjs-compat/app-routes.test.ts | 421 | // Tests ISR revalidation on route handlers with static params — build-specific | COMMENT |
| LOW | tests/nextjs-compat/app-routes.test.ts | 441 | // N/A: 'customized metadata routes' (robots.txt) — Metadata routes not in scope | COMMENT |
| LOW | tests/nextjs-compat/app-css.test.ts | 81 | // N/A: Computed styles (color, font-size, font-weight) | COMMENT |
| LOW | tests/nextjs-compat/revalidate-reason.test.ts | 41 | }); | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 121 | // generateMetadata() throws, but a local error.tsx exists to catch it. | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 201 | // Source: https://github.com/vercel/next.js/blob/canary/test/e2e/app-dir/global-error/error-in-global-error/error-in- | COMMENT |
| LOW | tests/nextjs-compat/global-error.test.ts | 241 | const bodyTags = (html.match(/<body/gi) || []).length; | COMMENT |
| LOW | tests/nextjs-compat/global-not-found.test.ts | 101 | // global-not-found.tsx replaces the root layout for route-miss 404s, so the | COMMENT |
| LOW | tests/nextjs-compat/global-not-found.test.ts | 121 | COMMENT | |
| LOW | tests/nextjs-compat/hooks.test.ts | 161 | // Tests the shared-component use case: a client component that imports from | COMMENT |
| 192 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .opencode/commands/fix-issue.md | 7 | ## Step 1: Understand the issue | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 11 | ## Step 2: Create worktree and branch | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 28 | ## Step 3: Fix the issue | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 41 | ## Step 4: Verify | COMMENT |
| LOW | .opencode/commands/fix-issue.md | 54 | ## Step 5: Commit and create PR | COMMENT |
| LOW⚡ | .opencode/commands/address-review.md | 7 | ## Step 1: Read all review feedback | COMMENT |
| LOW⚡ | .opencode/commands/address-review.md | 15 | ## Step 2: Categorize each comment | COMMENT |
| LOW⚡ | .opencode/commands/address-review.md | 23 | ## Step 3: Make fixes | COMMENT |
| LOW | .opencode/commands/address-review.md | 38 | ## Step 4: File follow-up issues | COMMENT |
| LOW | .opencode/commands/address-review.md | 56 | ## Step 5: Reply to review comments | COMMENT |
| LOW | .opencode/commands/address-review.md | 67 | ## Step 6: Enable auto-merge | COMMENT |
| LOW | .opencode/commands/address-review.md | 73 | ## Step 7: Summary | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 780 | // Step 1: Detect project structure | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 800 | // Step 2: Validate init-owned dependencies and deployment scaffolding. | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 872 | // Step 5: Build | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 936 | // Step 7: Deploy via wrangler | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 413 | // Step 1: extract regex groups and replace with numbered placeholders. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 420 | // Step 2: single-pass conversion of the placeholder-bearing string. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 85 | // Step 2: Guard against protocol-relative open redirects on the raw pathname. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 91 | // Step 3: Strict segment-wise percent-decode. Preserves encoded path delimiters | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 101 | // Step 4: Collapse double-slashes and resolve . / .. segments. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 105 | // Step 5: basePath check and strip. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 121 | // Step 8: Validate and sanitize X-Vinext-Interception-Context. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 132 | // Step 9: Normalize mounted-slots header for canonical cache keying. | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 260 | // Step 1: Reconstruct basePathState | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 263 | // Step 2: Trailing-slash normalization. Adapters must rewrite `_next/data` | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 275 | // Step 3: Build pre-middleware request context | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 282 | // Step 4: Config redirects (before middleware) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 462 | // Step 7: Config headers staging | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 472 | // Step 8: External-URL proxy (post-mw rewrite target) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 568 | // Step 11: API routes | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 572 | // Step 12: afterFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 309 | // Step 5: Middleware | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 409 | // Step 6: Unpack middleware request headers | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 496 | // Step 9: beforeFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 623 | // Step 13: Render + fallback rewrites | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/cloudflare/src/deploy.ts | 780 | // Step 1: Detect project structure | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 800 | // Step 2: Validate init-owned dependencies and deployment scaffolding. | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 872 | // Step 5: Build | COMMENT |
| LOW | packages/cloudflare/src/deploy.ts | 936 | // Step 7: Deploy via wrangler | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 413 | // Step 1: extract regex groups and replace with numbered placeholders. | COMMENT |
| LOW⚡ | packages/vinext/src/config/config-matchers.ts | 420 | // Step 2: single-pass conversion of the placeholder-bearing string. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 85 | // Step 2: Guard against protocol-relative open redirects on the raw pathname. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 91 | // Step 3: Strict segment-wise percent-decode. Preserves encoded path delimiters | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 101 | // Step 4: Collapse double-slashes and resolve . / .. segments. | COMMENT |
| LOW⚡ | …ges/vinext/src/server/app-rsc-request-normalization.ts | 105 | // Step 5: basePath check and strip. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 121 | // Step 8: Validate and sanitize X-Vinext-Interception-Context. | COMMENT |
| LOW | …ges/vinext/src/server/app-rsc-request-normalization.ts | 132 | // Step 9: Normalize mounted-slots header for canonical cache keying. | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 260 | // Step 1: Reconstruct basePathState | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 263 | // Step 2: Trailing-slash normalization. Adapters must rewrite `_next/data` | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 275 | // Step 3: Build pre-middleware request context | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 282 | // Step 4: Config redirects (before middleware) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 462 | // Step 7: Config headers staging | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 472 | // Step 8: External-URL proxy (post-mw rewrite target) | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 568 | // Step 11: API routes | COMMENT |
| LOW⚡ | packages/vinext/src/server/pages-request-pipeline.ts | 572 | // Step 12: afterFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 309 | // Step 5: Middleware | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 409 | // Step 6: Unpack middleware request headers | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 496 | // Step 9: beforeFiles rewrites | COMMENT |
| LOW | packages/vinext/src/server/pages-request-pipeline.ts | 623 | // Step 13: Render + fallback rewrites | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/build-time-classification-integration.test.ts | 236 | // below are minify-robust by design — see the file header. | COMMENT |
| MEDIUM | scripts/e2e-logs.sh | 2 | # Logs script for the Next.js deploy test harness. | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 2 | # Deploy script for the Next.js deploy test harness. | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 262 | # during the test harness's destroy() cleanup. vinext doesn't produce one, so | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 265 | # on failure — otherwise the test harness logs ENOENT noise (303 lines per | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 653 | # Dependency-manager deprecation summaries describe the deploy harness's own | COMMENT |
| MEDIUM | scripts/e2e-deploy.sh | 697 | # The Next.js test harness parses these markers from the logs script output | COMMENT |
| MEDIUM | scripts/e2e-cleanup.sh | 2 | # Cleanup script for the Next.js deploy test harness. | COMMENT |
| MEDIUM | packages/vinext/src/shims/internal/interpolate-as.ts | 231 | // TODO: more robust handling for user-error (passing `/`) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/app-router-dev-server.test.ts | 101 | const rscModuleIds = server.environments.rsc.moduleGraph.idToModuleMap.keys(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …vinext/src/server/app-browser-navigation-controller.ts | 861 | // Intentionally retained as #726-OPS-01 trace-shell scaffolding. The | COMMENT |
| MEDIUM | .github/workflows/nextjs-deploy-suite.yml | 215 | # e2e-deploy.sh dependency injection), the scripts, the prepared | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 181 | # scaffold install. Replace them with explicit false values. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/nextjs-compat/app-rendering.test.ts | 108 | // timestamps across requests. The async function getData() returns a cached promise at | COMMENT |
| LOW | …amples/app-router-playground/app/remote-cache/page.tsx | 48 | async function getData() { | CODE |
| LOW | …es/app-router-playground/app/cached-functions/page.tsx | 39 | async function getData() { | CODE |
| LOW | packages/vinext/src/index.ts | 6001 | // (e.g., async function getData() { "use cache"; ... }) | COMMENT |
| LOW | packages/vinext/src/server/pages-router-entry.ts | 101 | async function handleRequest( | CODE |
| LOW | packages/vinext/src/server/app-router-entry.ts | 84 | async function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/run-nextjs-deploy-suite.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/autopilot.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/profile-vinext-dev-macos.sh | 8 | # Usage: | COMMENT |
| LOW | scripts/smoke-test.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test-repos.sh | 185 | # Print results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/metadata-routes.test.ts | 239 | uploader: { info: "https://example.com/authors/jane", content: "Jane Doe" }, | CODE |