Provenance

A claim about the source that determines an observed or expected value — not merely a plausible file. Static analysis never executes repository code.

LevelMeaningAutomatic patch
exactOne static literal determines the value; no conflicting metadata, config or middleware source; the rendered value matches when available.Closed-list safe/guarded fixes only
fileOne file is implicated, but the value is computed, imported, or produced by generateMetadata.No; agent contextual change
candidateSeveral possible sources, dynamic parameters, middleware uncertainty, or a rendered mismatch.No; agent investigation
unmappedRuntime data, CMS, environment, unsupported framework, or a URL-only scan.No
absentThe artifact is missing and the conventional insertion point is proven.Closed-list fixes only

Next.js App Router

  • Routes come from app/ or src/app/: route groups are stripped, private folders skipped, dynamic segments marked, parallel and intercepting routes downgraded.
  • Metadata is resolved by Next’s shallow per-key precedence: the nearest segment that defines a key wins outright, and a layout’s title.default is the fallback below it.
  • Static metadata objects, generateMetadata, robots.*, sitemap.*, middleware.* / proxy.* and next.config.* are read as AST. In-repo imports are followed to depth 5.
  • Downgrades to candidate: middleware or proxy present; next.config headers or rewrites (for header-level rules); i18n; dynamic parameters; parallel or intercepting routes; an unsupported Next.js major (supported: 13–16).
  • Absence through imported metadata is candidate: the value is missing, but the insertion point is not proven.

Static HTML

A URL path maps to about.html or about/index.html under the site root. Literal markup can be exact. Anything an inline or external script could rewrite is unmapped.

Other frameworks

Generic repository mode returns hints and candidate files, never exact just because a conventional path exists. The agent may propose a change, but cannot upgrade the engine’s provenance label, and a passing URL scan afterwards establishes observed behaviour — not which file was responsible.