Skip to content

ADR 039 — AI fixture `@hole` decorator

Accepted (2026-05-11). Implemented with typeck vox/fixture/unfilled-hole and optional vox/fixture/stale-hole ledger guard.

Teams need a structured way to defer implementation with AI assistance while preserving compile-time safety and reviewability.

Unstructured placeholders are not acceptable for Vox language quality and training-data integrity.

Introduce @hole(...) decorator on function bodies with required payload:

  • spec (intent string)
  • reviewer (human | ci)
  • cache_key (stable deterministic key)
  • optional constraints list

No runtime lowering in the initial implementation. Type checking emits errors until the hole is resolved or explicitly suppressed under policy.

  • Compile safety remains strict; unfinished holes cannot silently ship.
  • CI can add stale-hole detection keyed by cache_key.
  • Provides an explicit substrate for future fill tooling without enabling hidden execution paths.

A decorator-based fixture modifies fn behavior and avoids introducing a new bare hole keyword.

  • vox/fixture/unfilled-hole
  • vox/fixture/stale-hole
  • vox/fixture/expression-hole-unsupported