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
| Option | Benefit | Cost |
|---|---|---|
| Dot-product interpreter | Easy | Weak evidence of dispatch removal |
| Full NAUX VM | Product-relevant | Excessive first scope |
| CoreVM0 + branch mix | Branchy and bounded | Requires 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.