-
Notifications
You must be signed in to change notification settings - Fork 0
Project Status
Simon B.Stirling edited this page Mar 2, 2026
·
5 revisions
I maintain this file as my current implementation status for the L0 bootstrap.
Last updated: 2026-03-02 (Phase 5 operations hardening)
- I am in bootstrap/MVP implementation mode with a native-only toolchain (
as,ld,make). - I have a deterministic end-to-end loop:
verify -> build -> imgcheck/imgmeta -> run. - I have deterministic debug/trace tooling:
tracecat,schemacat,mapcat,tracejoin. - I now have governance and production-ops baselines in-repo: CODEOWNERS, issue/PR templates, security policy, toolchain pinning policy, CI build/test matrix workflows, and smoke benchmark gating.
- Status: complete
- Scope completed:
- CLI command dispatcher in assembly
- syscall-only file I/O path
- canonical section-order validation skeleton
- Status: complete for bootstrap subset
- Scope completed:
- canonical function/block layout checks
- SSA single-def and def-before-use checks for supported op families
- opcode-aware checks for arithmetic, compare, branch, memory, and current intrinsic subset
- typed signature checks for args/calls/returns/cbr/memory pointer constraints
- Status: complete for bootstrap subset
- Scope completed:
- deterministic
L0IMGcontainer emission - bootstrap code lowering for supported canonical kernel shapes
- executable mmap loader and invocation path
- integrity and metadata inspection commands (
imgcheck,imgmeta)
- deterministic
- Status: complete for bootstrap subset
- Scope completed:
- trace schema side artifact (
--trace-schema) - debug-map side artifact (
--debug-map) with versioned multi-entry format - native decoders (
schemacat,mapcat,tracecat) - native joiner (
tracejoin) with strict validation and strict id resolution
- trace schema side artifact (
- Status: complete
- Scope completed:
- duplicate optional flag rejection in
build - debug-map entry bounds validation and clamping
- ordered/non-overlapping map validation
- strict
tracejoinid resolution (unknown ids rejected) - explicit
tracejoinrejection test for non-increasing debug-mapinst_idordering - explicit malformed debug-map payload-size tests:
mapcatandtracejoinboth reject misaligned/truncated map payloads - explicit debug-map header consistency tests:
mapcatandtracejoinreject mismatchedentry_countheader vs payload size - explicit oversized debug-map entry-count tests:
mapcatrejects oversized count payload artifacts andtracejoinrejectsentry_count > 64 - explicit malformed trace-schema tests:
schemacatrejects bad schema version, bad record size, bad field count, and truncated payload size - expanded multi-record trace corruption coverage:
tracejoinrejects unknowntrace_idappearing in later records whiletracecatstill decodes the mixed payload deterministically - expanded multi-record trace corruption matrix:
-
tracejoinrejects unknowntrace_idin middle records -
tracejoinrejects zerotrace_idin later records -
tracecatdeterministic decode coverage for triple-record mixed-id payloads - both
tracecatandtracejoinreject truncated multi-record payloads
-
- deterministic automated malformed-image tamper matrix for
imgcheck:- fixed-header u64 field fuzz pass (
version,header_size,src_off,src_size,code_off,code_size,debug_off,debug_size) - debug-index u64 field fuzz pass (
kernel_kind,code_size,trace_schema_ver,trace_record_size) - explicit nonzero flags tamper case in the fuzz block
- fixed-header u64 field fuzz pass (
- cross-kernel debug-map layout assertions in regression tests (
add.trap,mul.trap,cbr,malloc,write,trace) - expanded malformed-image tamper coverage for
imgcheck(header size, source offset, code/debug pair consistency) - overflow-style image tamper checks for
imgcheck(src_size/code_size/code_off/debug_offset to max u64 values) - explicit
debug_size != 64tamper rejection checks -
imgmetaschema-hardening parity withimgcheckplus negative tamper tests - negative-path tests for malformed artifacts
- duplicate optional flag rejection in
- Status: complete for bootstrap generalized-selector scope
- Scope completed:
- commutative binary bootstrap selector now accepts canonical swapped operand order (
v1 v0) foradd*,mul*,and,or,xor - commutative call-lowering selector now accepts swapped call-arg order in
f0for call->add.wrapand call->mul.wrap - compare/select bootstrap selector now accepts swapped
icmp.eqoperand order for bothicmp.eqandicmp.eq + cbrkernel templates - const-return selector now accepts canonical nonzero value ids when
retreferences the same const-def id - const-return selector path is regression-covered for both single-digit and multi-digit value ids
- non-commutative guardrail test added: swapped
sub.wrapremains intentionally unlowered in current bootstrap selector - binary kernel selector now accepts canonical nonzero result value ids (
vN = <op> ...,ret vN) - binary kernel selector now accepts canonical nonzero argument value ids in
f0(vA = arg 0,vB = arg 1) when binary operands reference those exact defs - binary selector guardrail added: swapped non-commutative
sub.wrapwith nonzero arg ids remains intentionally unlowered - binary dynamic-arg selector path is regression-covered for multi-digit ids (
v77,v123) -
icmp.eqselector now accepts canonical nonzero compare-result ids (vN = icmp.eq ...,ret vN) -
icmp.eqselector now accepts canonical nonzero argument value ids inf0(vA = arg 0,vB = arg 1) when compare operands reference those exact defs -
icmp.eq + cbrselector now accepts canonical nonzero compare-result ids (vN = icmp.eq ...,cbr vN ...) -
icmp.eq + cbrselector now accepts canonical nonzero argument value ids inf0and checks thatb1/b2return the corresponding arg defs - guardrail added:
icmp.eq + cbrpath with mismatched compare-id/dataflow shape remains intentionally unlowered in bootstrap selector -
icmp.eq + cbrguardrail added: mismatched branch-return mapping (b1/b2not returning arg0/arg1 respectively) remains intentionally unlowered - call-kernel selector now accepts canonical nonzero call-result ids in
f0(vN = call ...,ret vN) - call-kernel guardrail added: mismatch between call result id and returned id in
f0remains intentionally unlowered - call-kernel selector now accepts canonical nonzero internal result ids in
f1foradd.wrap/sub.wrap/mul.wrap(vN = <op> ...,ret vN) - call-kernel guardrail added: mismatch between
f1op-result id andf1returned id remains intentionally unlowered - call-kernel selector now accepts canonical swapped operand order inside
f1for commutative ops (add.wrap,mul.wrap) - call-kernel guardrail added: swapped operand order inside
f1for non-commutativesub.wrapremains intentionally unlowered - trace intrinsic selector now accepts canonical nonzero value ids for traced arg and returned const value (
trace 1 vN,ret vMwherevMmatches the const-def id) - trace selector guardrail added: mismatch between const result id and returned id remains intentionally unlowered
- malloc intrinsic selector now accepts canonical nonzero arg/result ids (
vN = arg ...,vM = malloc vN,ret vM) - malloc selector guardrail added: mismatch between malloc result id and returned id remains intentionally unlowered
- free-noop intrinsic selector now accepts canonical nonzero arg/const-ret ids (
vN = arg ...,free vN,vM = const 0,ret vM) - free-noop selector guardrail added: mismatch between const result id and returned id remains intentionally unlowered
- exit intrinsic selector now accepts canonical nonzero arg/return ids (
vN = arg ...,exit vN,ret vN) - exit selector guardrail added: mismatch between exit operand id and returned id remains intentionally unlowered
- write intrinsic selector now accepts canonical nonzero ids across alloca/const/store/write/ret dataflow for the bootstrap newline kernel template
- write selector guardrail added: mismatch between final const id and returned id remains intentionally unlowered
- memory roundtrip selector now accepts canonical nonzero ids across arg/alloca/st/ld/ret dataflow
- memory roundtrip selector guardrail added: mismatch between load result id and returned id remains intentionally unlowered
- memory-gep roundtrip selector now accepts canonical nonzero ids across arg/alloca/st/gep/ld/ret dataflow
- memory-gep selector guardrail added: mismatch between load result id and returned id remains intentionally unlowered
- expanded multi-digit SSA id regression coverage (
v77/v123) for intrinsic selectors (malloc,free,exit) pluswrite,trace,mem_roundtrip, andmem_gep_roundtripselector paths to lock digit-parse stability
- commutative binary bootstrap selector now accepts canonical swapped operand order (
- Status: complete
- Scope completed:
- binary selector accepts either canonical arg-definition order in
f0(arg 0thenarg 1, orarg 1thenarg 0) and normalizes dataflow by arg index - commutative binary lowering remains valid under swapped arg-definition order
- non-commutative guardrail maintained under swapped arg-definition order (
sub.wrapswapped operands remains intentionally unlowered) -
icmp.eqselector accepts either canonical arg-definition order inf0and normalizes compare operand binding by arg index -
icmp.eq + cbrselector accepts either canonical arg-definition order inf0, preserves compare-result consistency checks, and preserves strict branch-return mapping checks - regression matrix added for arg-definition-order variants (lowered and intentional unlowered guardrail shapes) across binary/icmp/cbr selector families
- binary selector accepts either canonical arg-definition order in
- Status: complete
- Scope completed:
- call-kernel selector accepts either canonical arg-definition order in
f0(arg 0thenarg 1, orarg 1thenarg 0) - call-kernel lowering remains valid for commutative call targets (
add.wrap,mul.wrap) under either arg-definition order inf0 - non-commutative guardrail is preserved for call->
sub.wrapunder arg-definition-order variants by requiring semantic arg0->arg1 mapping - regression matrix added for call arg-definition-order variants (lowered and intentional unlowered guardrail shapes)
- call-kernel selector accepts either canonical arg-definition order in
- Status: complete
- Scope completed:
- call-kernel selector accepts either canonical arg-definition order in
f1(arg 0thenarg 1, orarg 1thenarg 0) - call-kernel lowering remains valid for commutative
f1targets (add.wrap,mul.wrap) under either arg-definition order inf1 - non-commutative guardrail is preserved for call->
sub.wrapunderf1arg-definition-order variants by requiring semantic arg0->arg1 mapping - regression matrix added for
f1arg-definition-order variants (lowered and intentional unlowered guardrail shapes)
- call-kernel selector accepts either canonical arg-definition order in
- Status: complete
- Scope completed:
- memory roundtrip selector accepts canonical nonzero
allocaelement counts (alloca t0, N,N > 0) instead of onlyalloca t0, 1 - memory-gep roundtrip selector accepts canonical nonzero
allocaelement counts (alloca t0, N,N > 0) instead of onlyalloca t0, 1 - strict guardrails preserved:
alloca t0, 0shapes remain intentionally unlowered - regression matrix added for memory alloca-count variants (lowered and intentional unlowered guardrail shapes)
- memory roundtrip selector accepts canonical nonzero
- Status: complete
- Scope completed:
- write-newline selector accepts canonical nonzero
allocaelement counts (alloca t0, N,N > 0) instead of onlyalloca t0, 1 - strict guardrails preserved: write-newline shapes with
alloca t0, 0remain intentionally unlowered - regression matrix added for write-newline alloca-count variants (lowered and intentional unlowered guardrail shapes)
- write-newline selector accepts canonical nonzero
- Status: complete
- Scope completed:
- memory roundtrip selector accepts either canonical arg/alloca definition order in
f0(argthenalloca, orallocathenarg) - memory-gep roundtrip selector accepts either canonical arg/alloca definition order in
f0(argthenalloca, orallocathenarg) - regression matrix added for swapped memory def-order variants (lowered and intentional unlowered guardrail shapes)
- memory roundtrip selector accepts either canonical arg/alloca definition order in
- Status: complete
- Scope completed:
- added a generalized pre-lowering normalization path for binary kernels in
build - normalization strips canonical dead
constvalue lines before binary lowering - normalized source is lowered through the existing binary selector path, so existing opcode mappings and non-commutative guardrails are preserved
- added regression coverage for:
- lowered add kernel with an injected dead
constvalue line - intentionally unlowered swapped non-commutative sub kernel with an injected dead
constvalue line
- lowered add kernel with an injected dead
- added a generalized pre-lowering normalization path for binary kernels in
- Status: complete
- Scope completed:
- added generalized pre-lowering normalization path for
icmp.eqkernels inbuild - added generalized pre-lowering normalization path for
icmp.eq + cbrselect kernels inbuild - reused shared dead-const normalization so canonical interleaved
constvalue lines do not block compare/select lowering - preserved existing compare/select guardrails by delegating final lowering decisions to existing selectors
- added regression coverage for:
- lowered
icmp.eqkernel with injected deadconstvalue line - lowered
icmp.eq + cbrkernel with injected deadconstvalue line - intentionally unlowered
icmp.eq + cbrreturn-mismatch shape with injected deadconstvalue line
- lowered
- added generalized pre-lowering normalization path for
- Status: complete
- Scope completed:
- added generalized pre-lowering normalization path for call kernels in
build - reused shared dead-const normalization so canonical interleaved
constvalue lines inf0/f1do not block call-kernel lowering - preserved existing call-family non-commutative guardrails by delegating final lowering decisions to existing call selector logic
- added regression coverage for:
- lowered call->add kernel with injected dead
constvalue lines - intentionally unlowered call->sub (swapped in
f1) with injected deadconstvalue lines
- lowered call->add kernel with injected dead
- added generalized pre-lowering normalization path for call kernels in
- Status: complete
- Scope completed:
- added generalized pre-lowering normalization path for memory roundtrip kernels in
build - added generalized pre-lowering normalization path for memory-gep roundtrip kernels in
build - added generalized pre-lowering normalization path for
mallocandexitintrinsic kernels inbuild - reused shared dead-const normalization so canonical interleaved dead
constvalue lines do not block these const-independent kernel families - preserved existing mismatch guardrails by delegating final lowering decisions to existing selectors
- added regression coverage for lowered and intentionally unlowered dead-const-injected variants of memory roundtrip, memory-gep roundtrip,
malloc, andexit
- added generalized pre-lowering normalization path for memory roundtrip kernels in
- Status: complete
- Scope completed:
- changed shared dead-const normalization to strip only dead canonical
constvalue lines instead of stripping allconstvalue lines - scoped dead-const use detection to the current function so same numeric value IDs in later functions do not incorrectly keep dead const defs
- retained generalized lowering behavior for already-completed normalization families (
bin,icmp,icmp+cbr,call,memory,memory-gep,malloc,exit) - validated with full suite regression pass, including existing multi-function call dead-const coverage
- changed shared dead-const normalization to strip only dead canonical
- Status: complete
- Scope completed:
- wired generalized normalization hook stages into
buildfor remaining const-dependent intrinsic selector families (trace,write,free) ahead of legacy selector fallbacks - kept existing selector behavior stable and deterministic under full regression-suite execution
- retained legacy canonical fallback behavior for const-dependent intrinsic dead-const-injected shapes while generalized normalization hook path is staged
- validated end-to-end with full-suite pass
- wired generalized normalization hook stages into
- Status: complete
- Scope completed:
- activated generalized normalization hook stages in the live
buildselection chain for all current intrinsic families (trace,write,exit,malloc,free) - preserved deterministic legacy selector fallbacks when generalized hook paths do not select
- validated end-to-end stability with full regression-suite pass
- activated generalized normalization hook stages in the live
- Status: complete
- Scope completed:
- added explicit regression fixtures for dead-const-injected const-dependent intrinsic shapes:
writefreetrace
- added deterministic build assertions proving these shapes remain intentionally unlowered under active generalized hook staging (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixtures for dead-const-injected const-dependent intrinsic shapes:
- Status: complete
- Scope completed:
- added explicit regression fixtures for multi-dead-const injected const-dependent intrinsic shapes:
writefreetrace
- added deterministic build assertions proving these heavier staged-hook cases remain intentionally unlowered (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixtures for multi-dead-const injected const-dependent intrinsic shapes:
- Status: complete
- Scope completed:
- added explicit regression fixtures for dead-const-injected const-dependent intrinsic shapes using nonzero/multi-digit SSA ids:
writefreetrace
- added deterministic build assertions proving these staged-hook nonzero-id cases remain intentionally unlowered (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixtures for dead-const-injected const-dependent intrinsic shapes using nonzero/multi-digit SSA ids:
- Status: complete
- Scope completed:
- added explicit regression fixtures for mixed canonical variant staged-hook cases:
-
writewith non-unitallocacount + dead const -
freewith nonzero/multi-digit ids + multi-dead-const injection -
tracewith nonzero/multi-digit ids + multi-dead-const injection
-
- added deterministic build assertions proving these mixed staged-hook cases remain intentionally unlowered (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixtures for mixed canonical variant staged-hook cases:
- Status: complete
- Scope completed:
- added explicit regression fixture for dead-const-injected write guardrail shape with
alloca 0 - added deterministic build assertion proving this staged-hook guardrail case remains intentionally unlowered (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixture for dead-const-injected write guardrail shape with
- Status: complete
- Scope completed:
- added explicit regression fixtures for higher-stress staged-hook combinations:
-
writewithalloca 0+ nonzero/multi-digit ids + multi-dead-const injection -
freewith nonzero/multi-digit ids + deeper dead-const stack -
tracewith nonzero/multi-digit ids + deeper dead-const stack
-
- added deterministic build assertions proving these stress staged-hook cases remain intentionally unlowered (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixtures for higher-stress staged-hook combinations:
- Status: complete
- Scope completed:
- added explicit regression fixtures for cross-function mixed staged-hook fallback cases:
-
writewithalloca 0+ nonzero/multi-digit ids + multi-dead-const injection inf0plus id reuse inf1 -
freewith nonzero/multi-digit ids + deeper dead-const stack inf0plus id reuse inf1 -
tracewith nonzero/multi-digit ids + deeper dead-const stack inf0plus id reuse inf1
-
- added deterministic build assertions proving these cross-function staged-hook cases remain intentionally unlowered (
kernel_kind 0,code_size 1) - validated with full-suite pass
- added explicit regression fixtures for cross-function mixed staged-hook fallback cases:
- Status: complete
- Scope completed:
- fixed dead-const normalization value-id matching (
lhsid-length extraction) so live const lines are preserved and only dead canonical const defs are stripped - moved const-dependent intrinsic generalized lowering from deterministic staged fallback to lowered closure for valid canonical dead-const-injected shapes:
writefreetrace
- validated lowered closure across nonzero-id, multi-dead-const, and cross-function value-id-reuse variants
- preserved intentional write guardrail fallback behavior for
alloca ... , 0variants (kernel_kind 0,code_size 1) - validated with full-suite pass
- fixed dead-const normalization value-id matching (
- Status: complete
- Scope completed:
- removed legacy direct selector fallback stages for const-dependent intrinsic families in
build:tracewritefree
- kept these families routed through generalized normalization+selector paths only
- validated deterministic behavior and full regression-suite stability under the generalized-only routing
- removed legacy direct selector fallback stages for const-dependent intrinsic families in
- Status: complete
- Scope completed:
- removed remaining legacy direct selector fallback stages in
buildfor generalized families:exitmalloccall- memory roundtrip families (
mem_roundtrip,mem_gep_roundtrip) - compare/select (
icmp.eq,icmp.eq + cbr) - binary ops
- kept these families routed through generalized normalization+selector paths only
- preserved fallback behavior for unsupported verified modules through the existing single-byte
retstub path - validated deterministic behavior and full regression-suite stability under the generalized-only routing
- removed remaining legacy direct selector fallback stages in
- Status: complete
- Scope completed:
- added generalized pre-lowering normalization routing for const-return kernel selection in
build - removed the remaining direct const-return selection stage from the
buildchain - added regression coverage for const-return dead-const-injected shapes, including cross-function value-id reuse variants
- validated deterministic behavior and full regression-suite stability under generalized-only routing for all current kernel families
- added generalized pre-lowering normalization routing for const-return kernel selection in
- Status: complete
- Scope completed:
- extended two-function call-kernel lowering to include canonical
andtarget inf1 - added commutative swapped call-arg lowering support for call->
andinf0 - validated generalized dead-const normalization path for call->
andwith dead consts in bothf0andf1 - added regression fixtures and assertions for:
- canonical call->
andlowered shape - swapped call-arg call->
andlowered shape - dead-const-injected call->
andgeneralized lowered shape
- canonical call->
- validated with full-suite pass
- extended two-function call-kernel lowering to include canonical
- Status: complete
- Scope completed:
- extended two-function call-kernel lowering to include canonical
ortarget inf1 - added commutative swapped call-arg lowering support for call->
orinf0 - validated generalized dead-const normalization path for call->
orwith dead consts in bothf0andf1 - added regression fixtures and assertions for:
- canonical call->
orlowered shape - swapped call-arg call->
orlowered shape - dead-const-injected call->
orgeneralized lowered shape
- canonical call->
- validated with full-suite pass
- extended two-function call-kernel lowering to include canonical
- Status: complete
- Scope completed:
- extended two-function call-kernel lowering to include canonical
xortarget inf1 - added commutative swapped call-arg lowering support for call->
xorinf0 - validated generalized dead-const normalization path for call->
xorwith dead consts in bothf0andf1 - added regression fixtures and assertions for:
- canonical call->
xorlowered shape - swapped call-arg call->
xorlowered shape - dead-const-injected call->
xorgeneralized lowered shape
- canonical call->
- validated with full-suite pass
- extended two-function call-kernel lowering to include canonical
- Status: complete
- Scope completed:
- extended two-function call-kernel lowering to include canonical
shlandshrtargets inf1 - preserved non-commutative call semantics by lowering only semantic arg0->arg1 mappings under parsed
f0/f1arg-definition order - validated generalized dead-const normalization path for call->
shl/shrwith dead consts in bothf0andf1 - kept swapped call-arg non-commutative guardrails intentionally unlowered (
kernel_kind 0,code_size 1) - added regression fixtures and assertions for:
- canonical call->
shllowered shape - canonical call->
shrlowered shape - dead-const-injected call->
shlgeneralized lowered shape - dead-const-injected call->
shrgeneralized lowered shape - swapped call-arg call->
shlintentional unlowered guardrail shape - swapped call-arg call->
shrintentional unlowered guardrail shape
- canonical call->
- validated with full-suite pass
- extended two-function call-kernel lowering to include canonical
- Status: complete
- Scope completed:
- added a generalized normalized selector path for canonical multi-block branch-identity modules:
-
fn f0 (t0)->t0withcbr vN b1 b2inb0 - both
b1andb2returning the samevN
-
- added direct lowering for that shape to a deterministic
arg0 -> retmachine payload (no fallback stub) - integrated the new selector into the generalized build selector chain
- extended kernel-kind range handling to include the new lowered branch-identity kernel kind (
25) in image validation and metadata decode paths - updated debug-map kernel-kind routing so existing trace kernel map layouts remain stable while the new branch-identity kernel gets deterministic debug-map emission
- updated regression assertions so
valid_branch.l0now verifies lowered code bytes and runtime behavior instead of fallback stub behavior - validated with full-suite pass
- added a generalized normalized selector path for canonical multi-block branch-identity modules:
- Status: complete
- Scope completed:
- added deterministic reverse-mapping lowering path for
call->sub.wrapin two-function call selector flow - lowerings now include a canonical reverse-mapping shape where:
- parsed
f0call-arg mapping is semantic arg1->arg0 - parsed
f1sub.wrapmapping remains canonical
- parsed
- kept kernel kind stable for call->
sub.wrap(17) while emitting a dedicated reverse machine payload - preserved existing unlowered guardrails for other non-matching non-commutative call shapes (including swapped-operand
f1sub variants) - updated regression assertions:
-
valid_call_sub_argdef_order_swapped_unlowered.l0now lowers and executes with deterministic reverse-sub behavior - existing
f1swappedsub.wrapvariants remain intentionally unlowered
-
- validated with full-suite pass
- added deterministic reverse-mapping lowering path for
- Status: complete
- Scope completed:
- extended
icmp.eq + cbrselector lowering to support deterministic reverse branch-return mapping:-
b1returns arg1 -
b2returns arg0
-
- added dedicated reversed machine payload for compare/select while keeping kernel kind stable (
12) - wired reverse mapping through generalized normalization flow, so dead-const-injected reverse variants now lower when otherwise canonical
- updated regression assertions for previously intentional unlowered reverse mapping fixtures:
- arg-id reverse mapping shape now lowers and executes deterministically
- argdef-order-swapped reverse mapping shape now lowers and executes deterministically
- dead-const-injected reverse mapping shape now lowers and executes deterministically
- preserved existing intentional unlowered behavior for non-canonical mismatch shapes (for example extra compare/dataflow divergence cases)
- validated with full-suite pass
- extended
- Status: complete
- Scope completed:
- extended
call->sub.wrapselector lowering to support deterministic reversef1mapping variants under canonical call structure - added lowered coverage for previously intentional unlowered
f1reverse-mapping fixtures:valid_call_sub_f1_argdef_order_swapped_unlowered.l0valid_call_sub_f1_swapped_unlowered.l0valid_call_sub_f1_swapped_with_dead_const_unlowered.l0
- updated regression assertions for those fixtures from fallback checks (
kernel_kind 0,code_size 1) to lowered behavior checks (kernel_kind 17+ deterministic runtime outputs) - preserved existing structural mismatch guardrails for unrelated call shapes (for example call-result/id mismatches and non-canonical mismatches)
- validated with full-suite pass
- extended
- Status: complete
- Scope completed:
- extended direct binary selector lowering for
sub.wrapto accept canonical swapped operand order (v1 v0) - routed swapped
sub.wrapbinary forms to reverse-sub machine payload while keeping kernel kind stable (3) - preserved existing non-commutative guardrail for
sub.trapswapped forms (still intentionally unlowered) - updated regression assertions for previously intentional unlowered swapped
sub.wrapfixtures:valid_sub_swapped_unlowered.l0valid_sub_argids_v7_v9_swapped_unlowered.l0valid_sub_argdef_order_swapped_unlowered.l0valid_sub_with_dead_const_swapped_unlowered.l0
- converted those assertions from fallback checks (
kernel_kind 0,code_size 1) to lowered checks (kernel_kind 3+ deterministic runtime output) - validated with full-suite pass
- extended direct binary selector lowering for
- Status: complete
- Scope completed:
- extended
call->shlselector lowering to support canonical swapped call-arg mapping (call f1 v1 v0) under canonical call structure - extended
call->shrselector lowering to support canonical swapped call-arg mapping (call f1 v1 v0) under canonical call structure - added dedicated reverse machine payload routing for non-commutative shift semantics while keeping kernel kinds stable (
8forshl,9forshr) - updated regression assertions for previously intentional unlowered fixtures:
valid_call_shl_swapped_unlowered.l0valid_call_shr_swapped_unlowered.l0
- converted those assertions from fallback checks (
kernel_kind 0,code_size 1) to lowered checks (kernel_kind 8/9+ deterministic runtime output) - preserved existing structural mismatch guardrails for unrelated call shapes
- validated with full-suite pass
- extended
- Status: complete
- Scope completed:
- relaxed
exitselector matching to treatexitas non-returning in bootstrap runtime lowering - once canonical arg-to-exit value-id mapping is matched, selector now lowers without requiring a matching trailing
retvalue-id path - added lowered coverage for previously intentional unlowered fixtures:
valid_exit_mismatch_unlowered.l0valid_exit_mismatch_with_dead_const_unlowered.l0
- converted those assertions from fallback checks (
kernel_kind 0,code_size 1) to lowered checks (kernel_kind 23) plus deterministic exit-status runtime checks - preserved existing mismatch guardrails for unrelated intrinsic families
- validated with full-suite pass
- relaxed
- Status: complete
- Scope completed:
- extended shared generalized normalization to strip dead canonical
icmp.eqvalue lines (in addition to deadconstvalue lines) - enabled lowering for compare/select modules that include extra unused compare defs
- updated regression assertions for previously intentional unlowered fixture:
valid_cbr_eq_select_mismatch_unlowered.l0
- converted that assertion from fallback checks (
kernel_kind 0,code_size 1) to lowered checks (kernel_kind 12) plus deterministic true/false runtime outputs - preserved existing compare/select guardrails for branch-return/dataflow mismatch families
- validated with full-suite pass
- extended shared generalized normalization to strip dead canonical
- Status: complete
- Scope completed:
- extended
mem_roundtripselector lowering to accept canonical arg-return form (ret vArg) whenst vAlloca vArgis present - extended
mem_gep_roundtripselector lowering to accept canonical arg-return form (ret vArg) whenst vAlloca vArgis present - preserved existing kernel kinds (
14for memory roundtrip,19for memory-gep roundtrip) - updated regression assertions for previously intentional unlowered fixtures:
valid_mem_roundtrip_arg_alloca_order_swapped_unlowered.l0valid_mem_gep_roundtrip_arg_alloca_order_swapped_unlowered.l0
- converted those assertions from fallback checks (
kernel_kind 0,code_size 1) to lowered checks (kernel_kind 14/19) plus deterministic runtime output checks - validated with full-suite pass
- extended
- Status: complete
- Scope completed:
- expanded compare/select normalization coverage so canonical
icmp.eq + cbrmodules still lower when one extra dead pure value line (icmp.eqorconst) appears inb0,b1, orb2 - kept lowered compare/select kernel identity stable (
kernel_kind 12) - added regression fixtures and assertions:
valid_cbr_eq_select_dead_line_b0_general_lowered.l0valid_cbr_eq_select_dead_lines_b1_b2_general_lowered.l0valid_cbr_eq_select_dead_lines_guardrail_fallback.l0
- asserted deterministic lowered behavior (kernel kind and true/false runtime outputs) for the two lowered fixtures
- asserted deterministic fallback behavior (
kernel_kind 0,code_size 1) for the unsupported branch-return guardrail fixture - validated with full-suite pass
- expanded compare/select normalization coverage so canonical
- Status: complete
- Scope completed:
- confirmed generalized call-path normalization tolerates dead pure
icmp.eqvalue lines in both function bodies:-
f0aroundcall f1 ... -
f1around the lowered op result line
-
- preserved existing call-family lowered kernel kinds (
16add,17sub) and existing non-commutative guardrails - added regression fixtures and assertions:
valid_call_add_dead_icmp_f0_lowered.l0valid_call_add_dead_icmp_f1_lowered.l0valid_call_sub_dead_icmp_supported_lowered.l0valid_call_add_dead_icmp_guardrail_fallback.l0
- asserted deterministic lowered behavior (kernel kind and runtime outputs) for the three lowered fixtures
- asserted deterministic fallback behavior (
kernel_kind 0,code_size 1) for the unsupported guardrail fixture - validated with full-suite pass
- confirmed generalized call-path normalization tolerates dead pure
- Status: complete
- Scope completed:
- validated intrinsic-path dead pure-line tolerance using dead
icmp.eqinjections across:mallocfreewritetraceexit
- preserved intrinsic kernel-kind stability for lowered cases (
20,21,22,23,24) - preserved strict write guardrail fallback for
alloca 0with deadicmp.eqinjection - added regression fixtures and assertions:
valid_malloc_with_dead_icmp_general_lowered.l0valid_free_noop_with_dead_icmp_general_lowered.l0valid_write_newline_with_dead_icmp_general_lowered.l0valid_trace_noop_with_dead_icmp_general_lowered.l0valid_exit_with_dead_icmp_general_lowered.l0valid_write_newline_alloca0_with_dead_icmp_guardrail_fallback.l0
- asserted deterministic lowered behavior (kernel kind plus runtime behavior) for the 5 lowered fixtures
- asserted deterministic fallback behavior (
kernel_kind 0,code_size 1) for the guardrail fixture - validated with full-suite pass
- validated intrinsic-path dead pure-line tolerance using dead
- Status: complete
- Scope completed:
- expanded intrinsic dead-pure coverage to multi-dead-pure (
const+icmp.eq) variants for:mallocfreewritetraceexit
- added cross-function dead-icmp id-reuse variants for:
freetrace
- preserved write
alloca 0fallback guardrails under cross-function multi-dead-pure variant - added regression fixtures and assertions:
valid_malloc_with_multi_dead_pure_general_lowered.l0valid_free_noop_with_multi_dead_pure_general_lowered.l0valid_write_newline_with_multi_dead_pure_general_lowered.l0valid_trace_noop_with_multi_dead_pure_general_lowered.l0valid_exit_with_multi_dead_pure_general_lowered.l0valid_free_noop_with_dead_icmp_crossfn_general_lowered.l0valid_trace_noop_with_dead_icmp_crossfn_general_lowered.l0valid_write_newline_alloca0_with_multi_dead_pure_crossfn_guardrail_fallback.l0
- asserted deterministic lowered behavior (kernel kind plus runtime outputs/status) for lowered fixtures
- asserted deterministic fallback behavior (
kernel_kind 0,code_size 1) for cross-function write guardrail fixture - validated with full-suite pass
- expanded intrinsic dead-pure coverage to multi-dead-pure (
- Status: complete
- Scope completed:
- added debug-map and tracejoin stress coverage for intrinsic dead-pure/cross-function fixtures
- asserted stable debug-map entry layouts for 3 intrinsic families under multi-dead-pure variants:
mallocwritetrace
- added tracejoin decode assertions for cross-function trace fixture outputs (
id 1,val 123,start 0,end 17) - added tamper-rejection tests on emitted cross-function trace artifacts:
- truncated debug-map payload
- bad debug-map entry count header
- unknown trace id in emitted trace payload
- non-monotonic debug-map range mutation
- validated with full-suite pass
- Status: complete
- Scope completed:
- extended debug-map layout lock assertions to dead-pure call and compare/select fixture families
- added map-layout assertions for:
- call dead-icmp fixture (
valid_call_add_dead_icmp_f0_lowered.l0) - compare dead-const fixture (
valid_icmp_eq_with_dead_const_general_lowered.l0) - compare/select dead-line fixture (
valid_cbr_eq_select_dead_line_b0_general_lowered.l0)
- call dead-icmp fixture (
- added tracejoin decode assertions using those emitted map artifacts and deterministic synthetic trace records
- added tamper-rejection checks on those family artifacts:
- call-map bad entry-count mutation rejected (
mapcat) - compare-map truncated payload rejected (
tracejoin) - compare/select-map non-monotonic range mutation rejected (
tracejoin) - compare/select unknown trace-id payload rejected (
tracejoin)
- call-map bad entry-count mutation rejected (
- validated with full-suite pass
- Status: complete
- Scope completed:
- added a canonical writing guide:
docs/HOW_TO_WRITE_L0.md - linked the writing guide to language/spec details:
docs/LANGUAGE.mddocs/SPEC.mddocs/IMPLEMENTABLE_SPEC.md
- added 11 runnable documentation examples under
docs/examples:- arithmetic:
01_arithmetic_add_wrap.l0 - compare:
02_compare_icmp_eq.l0 - control flow:
03_control_cbr_select.l0 - memory:
04_memory_roundtrip.l0,05_memory_gep_roundtrip.l0 - call kernel:
06_call_add_two_function.l0 - intrinsics:
07_intrinsic_malloc.l0,08_intrinsic_free.l0,09_intrinsic_write.l0,10_intrinsic_trace.l0,11_intrinsic_exit.l0
- arithmetic:
- added dedicated debug/tracing workflow commands in the guide:
build --debug-map --trace-schema-
mapcat,schemacat,tracecat,tracejoin
- added an explicit LLM output checklist in the guide (canonical order, ids, terminators, use-before-def, verifier pass)
- wired docs-example verification into
tests/run.shsomake testverifies everydocs/examples/*.l0file - validated with full-suite pass
- added a canonical writing guide:
- Status: complete
- Scope completed:
- added a dedicated workflows reference:
docs/WORKFLOWS.md - documented 3 deterministic end-to-end workflows from
docs/examples:- arithmetic:
verify -> build -> imgcheck/imgmeta -> run - control-flow:
verify -> build -> imgcheck/imgmeta -> runwith both branch inputs - debug/trace:
build --debug-map --trace-schema -> schemacat/mapcat -> run -> tracecat/tracejoin
- arithmetic:
- added scripted assertions in
tests/run.shfor those 3 workflows:- deterministic
imgmetakernel-kind/code-size checks - deterministic runtime return value checks
- deterministic
schemacat,mapcat,tracecat, andtracejoinoutput checks
- deterministic
- validated with full-suite pass
- added a dedicated workflows reference:
- Status: complete
- Scope completed:
- expanded malformed-token and malformed-line negative corpus with dedicated parser fixtures:
invalid_parser_bad_ver_token.l0invalid_parser_types_missing_close_brace.l0invalid_parser_fn_missing_lbrace.l0invalid_parser_block_label_space.l0invalid_parser_value_missing_equals.l0invalid_parser_ret_extra_operand.l0invalid_parser_bad_id_prefix.l0invalid_parser_cbr_missing_false_target.l0invalid_parser_garbage_tail.l0invalid_parser_section_keyword_case.l0invalid_parser_fn_trailing_comma_arg.l0invalid_parser_value_missing_colon_type.l0
- added parser-focused fuzz seed corpus in
tests/fuzz/parser_seedswith both valid and invalid seed shapes - added deterministic parser fuzz regression and crash-repro harness:
tests/parser_fuzz_regress.sh- supports corpus run mode and
--repro <input.l0>single-case repro mode
- wired parser fuzz regression into
tests/run.shsomake testenforces crash-free parser regression by default - added parser-invalid fixture sweep in
tests/run.shfor allinvalid_parser_*.l0fixtures - validated with full-suite pass
- expanded malformed-token and malformed-line negative corpus with dedicated parser fixtures:
- Status: complete
- Scope completed:
- closed verifier coverage gaps by introducing an explicit verifier rule matrix:
tests/verifier_matrix.tsv
- added deterministic automated matrix runner:
tests/verifier_matrix.sh
- enforced the verifier matrix in
make testby wiring it into:tests/run.sh
- added first-person verifier rule-to-test mapping documentation:
docs/VERIFIER_RULE_MAP.md
- locked one positive and one negative fixture for each mapped verifier rule in the matrix
- validated with full-suite pass
- closed verifier coverage gaps by introducing an explicit verifier rule matrix:
- Status: complete
- Scope completed:
- extended bootstrap type-token verifier support to include canonical forms:
- struct:
s{tA,tB,...} - fixed array:
aN<tA>withN > 0 - function type:
fn(tA,...)->tR
- struct:
- added strict type-token edge validation:
- canonical delimiter handling for nested type tokens in the
typessection -
tNreference validation in struct/array/function type tokens - rejection of malformed/trailing-comma/missing-arrow/unknown-ref type-token shapes
- canonical delimiter handling for nested type tokens in the
- added deterministic positive type-form fixtures:
valid_types_struct_sig.l0valid_types_array_sig.l0valid_types_fn_sig.l0
- added deterministic negative edge-case fixtures:
invalid_types_struct_unknown_ref.l0invalid_types_struct_trailing_comma.l0invalid_types_struct_empty.l0invalid_types_array_zero_len.l0invalid_types_array_bad_elem_token.l0invalid_types_fn_unknown_ref.l0invalid_types_fn_bad_return_token.l0invalid_types_fn_trailing_comma.l0invalid_types_fn_missing_arrow.l0
- added deterministic canonical docs examples for each new supported type form:
docs/examples/12_types_struct_sig.l0docs/examples/13_types_array_sig.l0docs/examples/14_types_fn_sig.l0
- integrated all new fixtures into default automation:
- verify/canon assertions in
tests/run.sh - verifier matrix coverage in
tests/verifier_matrix.tsv
- verify/canon assertions in
- updated type-system documentation in:
docs/LANGUAGE.mddocs/HOW_TO_WRITE_L0.mddocs/VERIFIER_RULE_MAP.md
- validated with full-suite pass
- extended bootstrap type-token verifier support to include canonical forms:
- Status: complete
- Scope completed:
- added generalized selector stage for a non-template multi-block CFG family:
- canonical branch-const-select shape (
cbrinb0, branch-localconstreturns inb1/b2)
- canonical branch-const-select shape (
- added dynamic code emission for branch-const-select lowering:
- generated x86-64 path emits condition test + branch-local immediate returns
- assigned deterministic kernel kind id
26
- integrated generalized normalized selector path:
try_select_general_branch_const_select_kernel_code- dead-const normalized variants lower through the same path
- preserved strict fallback guardrails for unsupported branch-return mappings
- extended debug-map emission for kernel kind
26with deterministic ranges:inst_id 1: [0,5)inst_id 2: [5,16)inst_id 3: [16,27)
- extended image/meta schema range checks to include kernel kind
26 - added deterministic fixtures and assertions:
- lowered:
valid_branch_const_select_lowered.l0 - lowered (dead-const normalized):
valid_branch_const_select_with_dead_const_general_lowered.l0 - guardrail fallback:
valid_branch_const_select_guardrail_fallback.l0
- lowered:
- added runnable docs example:
docs/examples/15_cfg_branch_const_select.l0
- integrated checks into
tests/run.sh(verify/build/run/debug-map/fallback assertions) - validated with full-suite pass
- added generalized selector stage for a non-template multi-block CFG family:
- Status: complete
- Scope completed:
- added deterministic lowering support for a merge-point value-selection CFG family:
- canonical branch/store/join memory-select modules (
cbrinb0, branch-localconst+stinb1/b2, joinld+retinb3)
- canonical branch/store/join memory-select modules (
- added generalized normalized selector path:
try_select_general_merge_mem_select_kernel_code
- added selector/matcher and dynamic payload emission:
try_select_merge_mem_select_kernel_code- emitted kernel kind
27with deterministic code size27
- preserved strict fallback guardrails for unsupported join-return mappings
- extended debug-map routing and image/meta kernel-kind checks to include kernel kind
27 - added deterministic fixtures and assertions:
- lowered:
valid_merge_mem_select_lowered.l0 - lowered (dead-const normalized):
valid_merge_mem_select_with_dead_const_general_lowered.l0 - guardrail fallback:
valid_merge_mem_select_guardrail_fallback.l0
- lowered:
- added runnable docs example:
docs/examples/16_cfg_merge_mem_select.l0
- integrated checks into
tests/run.sh(verify/build/run/debug-map/fallback assertions) - updated documentation:
README.mddocs/LANGUAGE.mddocs/HOW_TO_WRITE_L0.mddocs/WORKFLOWS.md
- validated with full-suite pass
- added deterministic lowering support for a merge-point value-selection CFG family:
- Status: complete
- Scope completed:
- added deterministic spill/reload stress lowering path in generalized selector chain:
try_select_spill_stress_kernel_codetry_select_general_spill_stress_kernel_code
- added explicit stack spill/reload style emitted backend payload:
- prologue + spill + reload compute + epilogue path
- kernel kind
28, code size35
- preserved strict fallback guardrails for unsupported stress-shape return mappings
- extended debug-map routing with deterministic spill kernel layout:
inst_id 1: [0,16)inst_id 2: [16,24)inst_id 3: [24,33)inst_id 4: [33,35)
- extended image/meta kernel-kind validation range to include
28 - added deterministic fixtures and assertions:
- lowered:
valid_spill_stress_lowered.l0 - lowered (dead-const normalized):
valid_spill_stress_with_dead_const_general_lowered.l0 - guardrail fallback:
valid_spill_stress_guardrail_fallback.l0
- lowered:
- added runnable docs example:
docs/examples/17_spill_stress_kernel.l0
- integrated checks into
tests/run.sh(verify/build/run/debug-map/fallback assertions) - updated documentation:
README.mddocs/LANGUAGE.mddocs/HOW_TO_WRITE_L0.mddocs/WORKFLOWS.md
- validated with full-suite pass
- added deterministic spill/reload stress lowering path in generalized selector chain:
- Status: complete
- Scope completed:
- extended
runcommand argument handling from 2 args to full SysV integer-arg register set:-
rdi,rsi,rdx,rcx,r8,r9
-
- added deterministic generalized selector family for SysV ABI entry-kernel shapes:
- 3-arg sum (kernel kind
29) - 4-arg sum (kernel kind
30) - 5-arg sum (kernel kind
31) - 6-arg sum (kernel kind
32)
- 3-arg sum (kernel kind
- added generalized dead-const normalized lowering coverage for the 6-arg SysV shape
- added strict guardrail fallback coverage for non-matching 6-arg shape
- extended debug-map routing and image/meta kernel-kind validation range to include kernel kinds
29..32 - added deterministic fixtures and assertions:
- lowered:
valid_sysv_abi_sum3_lowered.l0 - lowered:
valid_sysv_abi_sum4_lowered.l0 - lowered:
valid_sysv_abi_sum5_lowered.l0 - lowered:
valid_sysv_abi_sum6_lowered.l0 - lowered (dead-const normalized):
valid_sysv_abi_sum6_with_dead_const_general_lowered.l0 - guardrail fallback:
valid_sysv_abi_sum6_guardrail_fallback.l0
- lowered:
- added runnable docs example:
docs/examples/18_sysv_abi_sum6_kernel.l0
- integrated checks into
tests/run.sh(verify/build/run/debug-map/fallback assertions, plus run-argument limit rejection) - updated documentation:
README.mddocs/LANGUAGE.mddocs/HOW_TO_WRITE_L0.mddocs/WORKFLOWS.mddocs/ABI_SYSV_AMD64.md
- acceptance:
- ABI matrix passes under
make teston Linux x86-64
- ABI matrix passes under
- extended
- Status: complete
- Scope completed:
- added native ELF object emission command:
l0c build-elf <input.l0> <out.o>
- implemented deterministic ELF64 relocatable writer in the bootstrap compiler:
- emits
.text,.symtab,.strtab,.shstrtab - exports global function symbol
f0
- emits
- reused existing generalized selector chain for object emission so lowered code parity is maintained across image and object output paths
- added deterministic metadata/object checks:
- ELF magic/type/machine assertions in scripted tests
- repeat-build byte-for-byte determinism assertion
- added link-and-run coverage with native harnesses:
- 3-arg object fixture linked and executed
- 6-arg object fixture linked and executed
- acceptance:
- ELF fixtures link and run in scripted checks with deterministic outputs
- full suite passes under
make test
- added native ELF object emission command:
- Status: complete
- Scope completed:
- froze versioned runtime intrinsic contract surface as
intrinsics.v1for:mallocfreeexitwritetrace
- documented versioned behavior and compatibility guarantees in:
docs/INTRINSIC_CONTRACTS.md
- documented negative-path guarantees for verifier-enforced intrinsic typing/def-use failures
- added dedicated contract harness:
tests/intrinsic_contracts.sh
- integrated the contract harness into default automation:
-
tests/run.shnow requiresintrinsic_contracts.shto reportok
-
- aligned top-level project docs/spec references with the frozen contract doc:
README.mddocs/SPEC.mddocs/IMPLEMENTABLE_SPEC.mddocs/WORKFLOWS.md
- acceptance:
- intrinsic contract tests pass in
make test - docs/spec references are aligned to
intrinsics.v1
- intrinsic contract tests pass in
- froze versioned runtime intrinsic contract surface as
- Status: complete
- Scope completed:
- froze versioned debug-map compatibility contract surface as
debugmap.v1 - documented the frozen schema, decode contract, join contract, and strict validation rules in:
docs/DEBUG_MAP_SCHEMA.md
- added dedicated debug-map schema compatibility harness:
tests/debug_map_schema.sh
- added compatibility fixtures in harness for deterministic decode/join behavior:
- one-entry map fixture
- two-entry map fixture
- added strict tamper rejection matrix in harness for both
mapcatandtracejoin:- bad magic
- bad version
- mismatched
entry_count - non-increasing
inst_id - overlapping ranges
- integrated schema harness into default automation:
-
tests/run.shnow requiresdebug_map_schema.shto reportok
-
- aligned top-level docs/spec references with the frozen debug-map contract doc:
README.mddocs/SPEC.mddocs/IMPLEMENTABLE_SPEC.mddocs/WORKFLOWS.md
- acceptance:
- schema fixtures decode identically
- tamper checks remain strict
- full suite passes under
make test
- froze versioned debug-map compatibility contract surface as
- Status: complete
- Scope completed:
- froze versioned trace compatibility contract surface as
traceschema.v1 - documented frozen schema artifact and trace decode/join contracts in:
docs/TRACE_SCHEMA.md
- added dedicated trace-schema compatibility harness:
tests/trace_schema_contracts.sh
- added compatibility fixture corpus in harness for trace tooling:
- canonical 32-byte schema fixture for
schemacat - one-record and two-record trace fixtures for
tracecat - two-entry debug-map + two-record trace fixture for
tracejoin
- canonical 32-byte schema fixture for
- added strict tamper rejection matrix in harness:
- schema: bad magic/version/record_size/field_count/truncation
- trace payload: non-16-byte alignment
- join: unknown trace ids
- integrated schema harness into default automation:
-
tests/run.shnow requirestrace_schema_contracts.shto reportok
-
- aligned top-level docs/spec references with the frozen trace contract doc:
README.mddocs/SPEC.mddocs/IMPLEMENTABLE_SPEC.mddocs/WORKFLOWS.md
- acceptance:
-
schemacat,tracecat,tracejoinpass compatibility and tamper suites - full suite passes under
make test
-
- froze versioned trace compatibility contract surface as
- Status: complete
- Scope completed:
- froze versioned deterministic build contract surface as
detbuild.v1 - documented deterministic build guarantees and fixture corpus in:
docs/DETERMINISTIC_BUILDS.md
- added dedicated deterministic build harness:
tests/deterministic_builds.sh
- harness enforces repeat-build byte-for-byte reproducibility for selected corpus:
- image output (
build) - debug-map side artifact (
build --debug-map) - trace-schema side artifact (
build --trace-schema) - ELF object output (
build-elf)
- image output (
- harness also enforces deterministic decode output stability for:
imgmetamapcatschemacat
- integrated deterministic build harness into default automation:
-
tests/run.shnow requiresdeterministic_builds.shto reportok
-
- aligned top-level docs/spec references with the deterministic contract doc:
README.mddocs/SPEC.mddocs/IMPLEMENTABLE_SPEC.mddocs/WORKFLOWS.md
- acceptance:
- deterministic build checks pass in default
make test
- deterministic build checks pass in default
- froze versioned deterministic build contract surface as
- Status: complete
- Scope completed:
- added deterministic semantic differential harness:
tests/differential_semantics.sh
- harness performs runtime differential checks over paired equivalent fixtures:
- builds left/right images for each pair
- runs both images on deterministic argument vectors
- requires byte-identical runtime outputs for every case
- differential corpus covers supported families:
-
add.wrapid/argdef variants - direct-vs-call arithmetic/bitwise variants (
mul.wrap,sub.wrap,and,or,xor,shl,shr) -
icmp.eqandicmp.eq + cbrdead-const generalized variants - memory roundtrip and memory-gep roundtrip dead-const generalized variants
- SysV 6-arg sum dead-const generalized variant
- const-return id/dead-const generalized variant
-
- documented frozen differential semantic contract surface as
diffsem.v1:docs/DIFFERENTIAL_TESTING.md
- integrated differential harness into default automation:
-
tests/run.shnow requiresdifferential_semantics.shto reportok
-
- acceptance:
- differential corpus passes with no semantic mismatches in default
make test
- differential corpus passes with no semantic mismatches in default
- added deterministic semantic differential harness:
- Status: complete
- Scope completed:
- added dedicated deterministic malformed-input stress harness:
tests/m65_fuzz_stress.sh
- expanded fuzz seed corpus across parser and verifier surfaces:
tests/fuzz/parser_seeds/tests/fuzz/verifier_seeds/
- added locked malformed regression fixtures:
tests/fuzz/m65_regressions/
- harness now stress-checks four surfaces under deterministic mutation families:
- parser (
verify+canon) - verifier (
verify) - image tooling (
imgcheck+imgmeta) - trace/debug tooling (
tracecat,tracejoin,mapcat,schemacat)
- parser (
- harness enforces fixed minimum command budgets for measurable coverage:
- parser
>=120, verifier>=30, image>=20, trace>=35
- parser
- documented frozen fuzz-stress contract surface as
fuzzstress.v1:docs/FUZZ_STRESS.md
- integrated M65 stress harness into default automation:
-
tests/run.shnow requiresm65_fuzz_stress.shto reportok
-
- acceptance:
- fuzz regression suite is stable and crash-free across fixed budget runs in default
make test
- fuzz regression suite is stable and crash-free across fixed budget runs in default
- added dedicated deterministic malformed-input stress harness:
- Status: complete
- Scope completed:
- added dedicated deterministic performance gate harness:
tests/performance_gates.sh
- established baseline throughput checks for representative operations:
-
verify,build,run(2-arg and 6-arg kernels),build-elf -
mapcat,schemacat,tracecat,tracejoin
-
- pinned throughput floor thresholds (ops/sec) in the M66 contract and harness:
verify.valid_min >= 1800build.valid_min >= 1300run.add >= 2400run.sum6 >= 2200build-elf.sum6 >= 1100mapcat.trace_map >= 2500schemacat.trace_schema >= 2500tracecat.trace_bin >= 2500tracejoin.trace_bin+map >= 2300
- documented frozen performance baseline surface as
perfbase.v1:docs/PERFORMANCE_BASELINES.md
- integrated performance gates into default automation:
-
tests/run.shnow requiresperformance_gates.shto reportok
-
- acceptance:
- performance checks pass within pinned thresholds in default
make test
- performance checks pass within pinned thresholds in default
- added dedicated deterministic performance gate harness:
- Status: complete
- Scope completed:
- added dedicated deterministic error-model harness:
tests/error_model.sh
- normalized and froze CLI error categories/messages as versioned contract:
-
docs/ERROR_MODEL.md(errmodel.v1)
-
- harness asserts deterministic exit-code and stderr behavior for representative failure classes:
- usage/argument-shape failures
- input open/read failures
- parse/decode failures
- output write failures
- corrupt image failures
- run argument parse failures
- harness enforces stderr prefix normalization:
- usage failures use canonical
usage: ... - non-usage failures use canonical
error: ...
- usage failures use canonical
- integrated M67 error-model gate into default automation:
-
tests/run.shnow requireserror_model.shto reportok
-
- acceptance:
- error-behavior fixtures pass with stable output contracts in default
make test
- error-behavior fixtures pass with stable output contracts in default
- added dedicated deterministic error-model harness:
- Status: complete
- Scope completed:
- added scripted release-candidate pipeline:
scripts/release_candidate.sh
- release script now performs end-to-end package build with smoke validation:
- package
l0cfor Linux x86-64 - generate release manifest metadata
- run packaged-binary smoke checks before and after unpack
- package
- added release artifact checksum generation and verification:
- per-artifact
sha256files - aggregate checksum file
- per-artifact
- enforced deterministic packaging controls for reproducible bytes:
- sorted tar entries
- fixed mtime
- normalized owner/group
gzip -n
- documented release procedure and versioning policy in:
-
docs/RELEASE_PIPELINE.md(relpipe.v1)
-
- added dedicated release pipeline gate:
tests/release_pipeline.sh
- integrated release pipeline gate into default automation:
-
tests/run.shnow requiresrelease_pipeline.shto reportok
-
- acceptance:
- scripted release candidate build succeeds end-to-end with reproducible artifacts
- added scripted release-candidate pipeline:
- Status: complete
- Scope completed:
- defined compatibility guarantees and upgrade policy in:
-
docs/COMPATIBILITY_POLICY.md(compat.v1)
-
- added dedicated compatibility matrix gate:
tests/compatibility_matrix.sh
- added compatibility matrix fixture list spanning prior milestone slices:
tests/compat/m69_matrix.tsv
- matrix now enforces representative compatibility surfaces:
- source verify/build/imgcheck/run behavior on prior canonical fixtures
- trace/debug decode output compatibility
- ELF object build/link/run compatibility
- integrated compatibility matrix gate into default automation:
-
tests/run.shnow requirescompatibility_matrix.shto reportok
-
- acceptance:
- compatibility matrix passes and policy docs are published in default
make test
- compatibility matrix passes and policy docs are published in default
- defined compatibility guarantees and upgrade policy in:
- Status: complete
- Scope completed:
- added final production-readiness gate harness:
tests/production_readiness.sh
- integrated production-readiness gate into default automation:
-
tests/run.shnow requiresproduction_readiness.shto reportok
-
- production gate verifies end-to-end readiness dimensions:
- milestone gates M52-M69 succeeded in the active run
- representative M54-M59 checkpoint slices are present and green
- all frozen v1 contract docs are present
- release-candidate pipeline for
1.0.0-rc1succeeds with checksum verification
- documented frozen production-readiness contract surface:
-
docs/PRODUCTION_READINESS.md(prodready.v1)
-
- production-candidate tag cut for v1 contract set:
v1.0.0-rc1
- acceptance:
- all milestone gates M52-M69 are complete and release candidate passes full suite
- added final production-readiness gate harness:
- I keep these docs current in first-person voice:
docs/LANGUAGE.mddocs/SPEC.mddocs/IMPLEMENTABLE_SPEC.mddocs/PLAN.md
- I keep a saved complete-doc roadmap in:
docs/DOCUMENTATION_ROADMAP.md
- I keep a generated wiki mirror synchronized from canonical docs via:
scripts/sync_wiki.shwiki/SOURCE_MAP.tsvtests/wiki_sync.sh
- I keep command/op/example documentation coverage enforced via:
docs/COVERAGE_MATRIX.mdtests/docs_coverage.sh
- I keep docs lint hygiene enforced via:
tests/docs_links.shtests/docs_headings.sh
- I now treat documentation phase 2 as complete:
- command failure examples, grammar/typing consolidation, prompt templates, and row-level coverage traceability are in place
- I now treat documentation phase 3 as complete:
- index/task navigation, troubleshooting and cookbook docs, versioned snapshot policy, 30-minute learning path, and contract-reference consistency gating are in place
- I use this file (
docs/STATUS.md) as the quick project-progress dashboard.
- How-To-Write-L0
- Language-Reference
- Instruction-Set
- CLI-and-Compiler-Spec
- Implementable-Spec
- Command-Reference
- Examples-Catalog
- LLM-Quick-Reference
- Opcode-Examples
- LLM-Doc-Index