Synthesis Provenance Tracking

Maintain an immutable audit trail linking synthesized code artifacts to exact specification versions, model routing choices, prompt templates, and verification gate outcomes.

When autonomous agents generate entire microservices or execute multi-file refactorings through zero-shot repository synthesis, human developers lose the informal mental model traditionally built through manual authorship — accruing cognitive debt and accelerating tacit knowledge erosion. In high-iteration repair cycles or multi-agent handoffs, it becomes impossible to determine why a particular code structure or dependency exists through traditional code archaeology.

Synthesis provenance tracking enforces an immutable audit trail embedded into the development harness:

  • Specification version linkage: Every generated commit or pull request diff is cryptographically or structurally pinned to the exact version and hash of the formal requirement specification that initiated it.
  • Generation metadata: Records the model family and version, system prompt hash, temperature, and tool invocation history used during synthesis.
  • Verification audit trail: Attaches the execution logs of all automated gates—including compiler diagnostics, test suite results, and static analysis outputs—that validated the artifact prior to human merge.

During incident response and debugging, engineers query the provenance trail to determine whether a failure stems from model hallucination, an unhandled edge case in the specification, or an outdated test oracle, preserving operational maintainability at synthesis scale.

Vendor and model lock-in makes the trail load-bearing rather than ceremonial. Closed third-party model APIs bring pricing volatility, service deprecation, and behavioral drift, so teams need multi-tier model routing, an exit strategy, and reproducible builds pinned to explicit specification versions. The provenance record is what states which spec version and which model produced each artifact, so a build can be regenerated or migrated when a provider changes underneath it.


Sources

  • Nguyen & Nguyen (2026), ch. 13 (§13.2)