Input artifact for 16-syntax.md (the surface design). Compiled from the original 17-probe syntax wave (2026-07-17), the ten systems-safety probes (2026-07-21), the proposal docs' sketched forms, and the toolchain constraints. Every entry cites its source. Taste forks (§4) go to Veronica with previews; everything in §1–§3 is evidence, not taste. R37–R50 are semantic pressure on the next syntax revision, not settled spellings.
Guards, path conditions, mutability
probes/guard-inference/; committed in 03 §3.)probes/interval-caps/, probes/guard-inference/.)match over operands; variant-set tests op is Load | Store closed under &&/||/!; let-bound predicate aliases; comparisons vs comptime constants; early-exit if bad { return }; comptime for with the loop var in indices. Steer let d = decode(raw); match d { … } over match decode(raw). (probes/guard-inference/.)narrow!(cond) ergonomic exactly at dataflow boundaries, diagnostic quoting the dropped conjunct verbatim. (probes/guard-inference/.)op ∈ {Load, Store}); at_most = 1 renders as "mutually exclusive". (probes/guard-inference/, probes/interval-caps/, probes/core-calculus/.)opcode==Add; unconditional claim still open." (probes/core-calculus/ wave 3.)Refinement-predicate surface
mod/div restricted to constant right-operands by the grammar — the Presburger fence is syntactic, not a checker error. (probes/protocol-catalog/.)blocked := valid − ready); struck twice. (probes/protocol-catalog/, probes/protocol-catalog-chi/.)prev(x) / latched sugar for two-cycle temporal refinements, else stability refinements become hand-managed ghost counters. (probes/protocol-catalog/.)repeat N in protocol bodies — last-beat guards were off-by-one bait; counters stay internal. (probes/protocol-catalog/.)if broadcast { snpSent = N-1 }). (probes/protocol-catalog-chi/.)bundle syntax — cross-invariant diagnostics fall out of naming (P-9). (probes/protocol-catalog/.)Protocols, sessions, ordering
session<line = addr div 64> { binds txn } — declarative per-message key bindings, plus per-message key/field mapping (key by tgt on one message, src on another). (probes/protocol-hazards/, probes/protocol-catalog-chi/.)key_set = lines(addr, len) syntax — one event joining k keyed orders; start-line-only keying is machine-refuted. (probes/protocol-hazards/.)related_by relations required symmetric or checked both orientations. (probes/protocol-hazards/; normative in 04 §4.)granule) — line size appeared twice, would drift. (probes/protocol-hazards/.)probes/protocol-catalog-chi/.)from/to role tags on protocol messages even pre-phase-3 — role-less dir: was pure noise; binary dual is no participant's view of a 3-role body. (probes/protocol-catalog-chi/.)Widths and comptime
DEPTH: Nat1 (or where DEPTH >= 1) as the path of least resistance — positivity converts the clog2 cliff into proofs. (probes/width-algebra/.)reflect on Var·Var; constant-multiply vs general multiply distinct at the surface or via fix-it. (probes/width-algebra/; 02 §4 clause 6.)clog2 spelled as HDL users expect; interpreted-symbol set documented closed. (probes/width-algebra/.)remaining(). (probes/exhaustive-discharge/.)probes/static-eval-bounds/.)Epochs, speculation, reset
stamped T one-keyword override on port types; users never write Stamped<T,D> — elaboration introduces it. (probes/pinning-inference/.)bind epoch as a match-like fresh/stale form (match rebind(x) { Fresh(v) => …, Stale(x) => … }); rebinds the whole coordinate — the (tag, mask) pair is elaboration-only. (probes/epoch-containment/, probes/epoch-trees/.)same_epoch(a, b) obligation atom as the surface source of SameEpoch evidence. (probes/pinning-inference/.)Crosses<A,B> vs Stamped redundancy owned by elaboration. (probes/epoch-containment/.)ResetWitness name kept at reset sites, judgment unified with squash contract; many-flush-site &ResetWitness needs a worked ω-borrow-during-Resetting rule. (probes/epoch-trees/, probes/epoch-containment/.)SquashPending lacks the authority interface, never parallel booleans; ghost death-event state nameable in the 07 contract format. (probes/squash-semantics/, probes/squash-cdc/.)bind epoch over a stamped stream (~40 hand-written lines otherwise, with a real Kill-sweep-order bug); Resolve/Kill minted from one linear epoch-resolution capability. (probes/squash-cdc/.)CommitProof documented as "path fully resolved"; mask width is an ordinary capacity bound, no new syntax. (probes/epoch-trees/.)Grades, linearity, diagnostics
GradeMismatch used=ω at the binder. (probes/core-calculus/.)probes/core-calculus/ wave 3; 02 §3.)⊗ is clumsy. (probes/core-calculus/.)elastic / cycleobs) as surface constructs. (probes/eclass-rewrite/.)probes/ledger-passes/); semver spec ships a polarity table + "strictly refining" + canonical encoding (probes/summary-semver/); pinning diagnostics render the forcing-evidence provenance chain (probes/pinning-inference/).Systems safety and custody
detected into contained. (probes/fault-health/, D-081.)probes/fault-health/.)probes/dma-iommu/, D-082.)proved/refuted/obligation, with finite bounds syntactically distinct from eventual progress. (probes/progress-waitfor/, D-083.)po, rf, co, dependencies, fences, atomicity, and visibility; every partial export has an explicit completeness marker. They do not hide inside protocol syntax. (probes/memory-consistency/, D-084.)probes/observer-flow/, D-085.)false_path/multicycle declaration denotes a candidate with a schedule/stability witness; a backend-bound manifest and validation result are separate artifacts. (probes/physical-constraints/, D-086.)Off → Isolated → Retained → Powering → Resetting → Active, with typed transition authority, crossing isolation, retention validity, and DVFS evidence expiry. (probes/power-reconfig/, D-087.)probes/power-reconfig/.)probes/numeric-error/, D-088.)probes/dft-debug/, D-089.)probes/assurance-cases/, D-090.)probes/physical-constraints/, probes/assurance-cases/.)stream LoadRequests { payload:, domain {}, protocol …, flow { acceptance: at_most 1/cycle, outstanding: 0..=8 }, identity {}, ordering {}, authority {} } (04 §8).protocol Burst<const N: usize, T> { send Header { length: N }; repeat N { send Beat<T>; } recv Completion; } (04 §2); catalog forms ready_valid { payload_stable_while_blocked }, credit<N>, burst<N>/burst_dyn { max_len }, request_response { matched_by: Id, faults: allowed }, Process<During, Success, Failure>; operators bundle, layer, session<key>, hazard_lock (04 §1).PreservesOrder<Input.Accept, Output.Transfer, key = TxnId>, CommitsIn<ProgramOrder>, related_by = overlaps(a, b) (04 §4).arbitrate { inputs:, eligibility: |r| r.ready, policy: oldest_first(key = r.age), resource:, guarantee { … } liveness { … } } (04 §6). Internal inconsistency: guarantee{}/liveness{} have no :/comma unlike other fields.requires static { … } / requires solve { … } / requires prove { … }; discharge by comptime_exhaustive(opcode: Bits<7>); narrow!(p) (06 §1).guarantee no_duplicate_response evidence: Tested<…>; require guarantee G with evidence >= BoundedProved (06 §3–4).expect(lint = …, reason = "…", evidence = …, review_by = edition(2028)) (14 §10).comptime param STAGES: Nat in 1..=6, comptime fixed DEPTH: Nat = config.queue_depth, comptime for, lower { }, ResourceCtx (07 §7).reflect, reify, symbolize, observe (02 §2).delay(init, next) -> Later<Clock, Signal<T>>; At<T,E>, During<T,[E1,E2)>; Capability<Resource, [Execute+2, Execute+3)>; Algorithm<A> → Scheduled<A,S> → Implemented<A,S,I> (03 §2–5).comptime for, combinational_fold, pipelined_fold::<Stages<K>>, sequential_fold (02 §7) — turbofish already sketched, as in cross_clock::<B>(bridge) (04 §7).Bits<N>, UInt<N>, Index<N>, OneHot<N>, Encoded<T,E>, Occupancy<0..=CAP>, Handle<R,Slot,Gen,Epoch>, Stamped<T,D>; named ops wrapping_add/full_add/checked_add; conversions wrap_to/saturate_to/checked_to/sign_extend_to (02 §4).clock_domain { … }, opaque type TransactionId = Bits<8>, sealed interface, no_reset, granular unsafe <category> (02 §5/§8, 05 §4, 06 §5).Speculation<E> { predict:, allocate:, write_internal: }, commit(v, proof), cancel(epoch, token), bind epoch (05 §2/§4).#[encoding(auto where preserves_debug_identity)] (one sighting, 02 north star); D-044 budgets need a spelling; experiment declarations named but never sketched (10 §3). Combinators map/filter/zip/buffer/batch/broadcast/tap/partition, queue.reserve()?, ?-style stall/fault propagation (04 §5, 03 §6, 02 §10).14-toolchain.md)protocol sketch's semicolons and arbitrate's bare blocks conflict; pick one list discipline; every {} body needs a defined one-per-line form.fmt: off escape hatch exists.</> generics lexing; turbofish is the sketched mitigation; the fork is F3.component vs module vs entity. Lean: component (prose consistency).let/signal/wire; R1 forces immutable-by-default regardless; phase-token rendering mildly favors distinct binder forms per phase.[] vs <>+turbofish vs <>+call-syntax. Technical lean against raw <> (lexing ambiguity vs §18); infix Presburger must stay legal inside type arguments (R7, R19).match/if as expressions.#[…] vs @…; must be LL-anchored, declaration-position-only for budgets (R22).7'b… context-sensitive lexing (§18); width from the type, explicit conversions (D-030/D-040).wrapping_add family (lean) vs operators (-|).Nat1 type vs where DEPTH >= 1 clause; must be the path of least resistance, not an expert annotation.