Check reference

Review new Go API surface in a refactor claim

An unchanged-intent review deserves another look when a code edit adds public API. This check identifies a specific case: new exported Go symbols with no tracing requirement that describes them.

What the check observes

The check compares exported symbol sets in an existing Go production file at the review's base revision and in the working tree. It includes exported top-level declarations and methods on exported receiver types. A finding requires a no-authored-change review and a newly added symbol that no requirement tracing the file names in its description. It uses parsed Go syntax rather than a text search for capitalized identifiers.

Example: a retry helper becomes public

Illustrative case. A refactor introduces RetryWithDeadline in an existing file. The old requirement covers the private retry loop, but no tracing requirement describes this newly exposed entry point or its contract.

Before: private retry helper
After:  exported RetryWithDeadline
Review: no-authored-change
Backing requirement naming the new API: absent

Questions: intended API, test seam, or accidental export?

Resolve the finding

  1. Inspect the exported symbol and determine whether the change is a refactor, a feature, a fix, or an accidental API exposure.
  2. For intentional surface, describe its real behavior in the governing requirement and review the impact. Record change or defect backing where applicable.
  3. If the export is accidental and unused as a public contract, correct it. Avoid adding the name to unrelated prose just to satisfy the structural predicate.

Run and interpret

proof audit --check no_authored_change_surface_reviewed \
  --set project.checks.no_authored_change_surface_reviewed.enabled=true

This verify-stage warning is off by default. It excludes test/generated files and wholly new files without a parseable base version. A current tracing requirement that documents the symbol prevents this particular finding.

This is a heuristic for new public surface, not a complete detector of behavior changes. It does not evaluate removed surface, changed semantics under the same name, or whether a description is adequate. An empty result does not establish that the refactor claim is true.

Continue from here

Check explicit change-type backing. Understand unchanged-intent review records.

Bring a refactor that added an API and the requirement said to govern it. Bring a change to Proof.