ADR-0005: P1 Lighthouse Scope

Status: accepted
Date: 2026-07-25

Context

The first projection must prove real interpreter specialization without requiring every planned language feature. A pure dot product is too weak to demonstrate dispatch and branch residualization; a full production interpreter is too broad.

Options considered

OptionBenefitCost
Dot-product interpreterEasyWeak evidence of dispatch removal
Full NAUX VMProduct-relevantExcessive first scope
CoreVM0 + branch mixBranchy and boundedRequires a new small interpreter

Decision

P1 v0 specializes CoreVM0 by fixed branch_mix_kernel bytecode. The bytecode, layout, types, and branch targets are static. The Array<F64> and repetition count are dynamic.

P1 provenance must be:

MIX(CoreVM0, program) → Residual Core → verified SSA → native code

The existing trace JIT is not an acceptable substitute.

Rationale

The target demonstrates opcode dispatch elimination, static branch targets, forward branches, backedges, mixed integer/floating state, and safe array access while remaining implementable.

Trade-offs

  • Closures, IO, maps, handlers, and general mutation are outside P1 v0.
  • Passing P1 does not prove whole-language specialization.

Consequences

The structural certificate and three-baseline methodology in docs/p1_lighthouse_contract.md are mandatory.

Revisit trigger

The target changes only if CoreVM0 cannot express branch mix without violating Core-N0, or if the workload is proven incapable of distinguishing dispatch elimination from benchmark precomputation.