Core-1 previewnormative preview; stable Core-1 inactive

Finite deterministic spaces, signals, budgets, and evidence-bound reports.

Core-1 Optimize Preview

Status: normative preview; exhaustive and compiled batched executors implemented

C1-OPT-001 — Surface. The canonical types are finite Space<T>, Signal<Query,Observation>, unforgeable Search<Self>, Optimization<Signature>, Budget, Optimizer, and OptimizationReport<Readout>.

C1-OPT-002 — Finite profile. Spaces compose from finite sets, enums, bounded integer ranges, sums, products, and records. Canonical space order is part of problem identity and provides the final tie-break.

C1-OPT-003 — Hard and soft constraints. accept is a hard gate and never degrades into preference. follow supplies preference. Deterministic proposals may affect canonical order only when included in problem identity.

C1-OPT-004 — Evidence and budget. Budgets separately count candidate evaluations and signal observations; ambient-time budgets are deferred. Decision<T> cannot escape the optimization body. Reports bind problem and engine identities, observations/evidence, budget use, termination reason, and selected readout.

C1-OPT-005 — Executors. Conformance requires an exhaustive canonical reference enumerator and an independent compiled batched search/evaluator. Batching or compute acceleration cannot change observation or tie-break order.

The implemented source profile lowers straight-line checked integer signals to closed scalar regions. Optimization.problem binds a problem ID, typed accept/follow signals, and separate budgets in a dedicated problem/evidence row; Optimizer.run is a distinct checked algorithm boundary that requires live optimizer authority and returns OptimizationReport. The first source-owned space form is the nonempty inclusive Int32-bounded Space.range(lower, upper), whose values are observed as Int64 candidates in ascending canonical order. The range is stored in the problem region and is therefore not supplied or replaceable at runtime. Recursive exhaustive evaluation and sequential batched materialization consume that same graph and preserve scalar fault behavior. A finite problem may bind accept and follow directly to two such checked source signals: candidates are supplied as message arguments, accept must return exactly zero or one, and both observations consume the ordinary separate budgets and appear in the ordinary report. Unsupported control-flow bodies and the remaining finite-space compositions remain unmaterialized. Same-domain scalar calls with zero, one, or two arguments are checked region nodes; both executors resolve local and package-linked targets and fail deterministically at the common call-depth bound.

The embedding boundary issues an opaque zl_optimizer_v2 from zl_optimizer_open_v2. Raw finite problems and source-backed signal problems both borrow that handle; an executor enum alone is not optimization authority. ZLM2 round trips and complete package closures preserve and relocate the problem row and both signal targets. Digest-valid malformed targets or budgets reject before admission.

Projected fromspec/editions/core-1/optimize-preview.md