Repository navigation
Follow up incomplete example migration and full-catalog validation after PR #271 #272
Description
Activity
Consolidating repository navigation after #274: the duplicate, unlinked
docs/development/remaining-work.mdpage is being removed. This issue remains the live owner of its migration/acceptance backlog. The pinned pre-cleanup source preserves the original inventory and exact qualifications. No deferred item is marked complete by the documentation cleanup.Preserved inventory snapshot (historical, not new passing evidence)
Deferred migration and validation
User direction on 2026-10-09 ends example migration in PR #271. Unfinished
example migration and full-catalog acceptance are tracked in
issue #272, separately from
the refactor merge. Existing supported tests and independent oracles remain.
This inventory records gaps; removal or deferral is not a passing result.- Complete system migration and full verification for the retained examples.
Regular-clock benches retain their original module drivers and independent
oracles; their reset, held-clock and four-state scenarios require separate
verification where generated default-clock systems cannot express them. - Complete the remaining original-root mappings and acceptance checks against
the independent 93-root inventory. Removed rows and source catalog entries
do not count as verified execution. - Finish bare
@system,@rule,@modulespelling across examples and docs. - Complete broader API/system registration and platform/package acceptance.
The refactor still requires its bounded API, system, example and CI checks;
results must identify the exact tested candidate. - Verify source-import IR, transformed IR and both backend artifacts per root.
- Run deferred nightly coverage, reference/mutation matrices and platform/release
checks through the existing entrypoints. - Retain the restored full asserted-module queue vector gate and independent
checkers. Preserve errors, sticky failure and the historical positive/fault
scenarios through subsequent compiler/runtime changes. - Fix the remaining concrete limitations in
known limitations, including generated namespace
collisions, explicit physical domains, wide/four-state observations and RTL
diagnostics. Direct fixed-type imports and explicit imported Struct expression
constructors now have independent positive and rejection coverage.
The baseline
8887e6deinventory contains 93 historical roots. The current
catalog maps 85 and leaves 8 unmapped; 72 historical roots have a registered
@system. These are source mapping counts, not a claim that all mapped roots
have completed acceptance. The catalog has 64 examples and 25 API-owned cases;
61 examples and 13 API-owned cases have registered systems.The exact eight unmapped baseline roots are:
Baseline source under examples/agentic-circuit/Root blocks/array_combinators.pyarray_combinators,array_reductions,array_scansblocks/bounded_integer_operations.pybounded_integer_operations,recursive_array_updatesblocks/multirate_compute.pymultirate_computetypes/nested_config_types.pynested_config_typestypes/parameterized_types.pyparameterized_typesThe two restored aggregate payload pipelines retain their original token
transformations and independent module oracles. Their owning tests additionally
exercise complete native/RTL histories, reset, held clocks and four-state
payloads, alongside 48-epoch generated systems. Source mapping and focused
checks do not replace final candidate acceptance for the complete catalog.The slot/mailbox and issue owning gate checks nine complete generated literal
histories on native workers 1/2 and RTL, including reset-reachable extensions
of the historical bodies (7 and 42 epochs). The exact old host-initialized
6/30-epoch histories remain reference-only; the tracked raw default stimulus
functions are not the full generated scenarios. The scalar parameterized case
covers default-width17 identity execution, with the original nested identity
helper inlined; it does not restore the originalparam[int]or general external
parameter bindings. Preserve these boundaries when counting mapped roots.The routed graph owns all fourteen queues and four branches. Its gate checks
eleven complete module histories (1,792 attempts per native worker/RTL profile)
and two closed systems of 81 and 727 cycles. Original full-root tests checked
topology, artifacts and builds; these runtime histories are new independent
coverage. The selected native/spec scheduler and reorder policy does not claim
equivalence to the retired PYC first-slot/u8-key policy. Four seeded overflow and
clock-control cases remain reference-only, with no complete X/Z or physical
clock-control acceptance claim.Closed-system generation has focused independent execution and failure-atomicity
coverage. Full example adaptation and full release validation are incomplete.- Complete system migration and full verification for the retained examples.
Path-flattening audit follow-up: the source-unit CMake dependency fixture is now under
tests/integration/source-unit-build/(formerlytests/integration/pycircuit/source-unit-build/). Its five source/helper files are byte-identical to pre-move maine21efb97.The native execution test currently cannot complete because its historical
types.pyuses an unsupported source top-level form andindependent.pylacks a required return annotation. Compiling the pre-move files with the same current compiler reproduces both diagnostics. This is existing fixture migration work, not a regression from flattening.- Restore this fixture through the current source contract and retain its incremental DAG/publication oracles in a separately scoped migration.
During this cleanup, CMake configuration and
ninja -t commands/queryindependently confirm one compile command for each of the four moved sources and dependency edges to the moved preparer, current Python CLI and pyproject. The actual incremental-build suite passed 3/3, public emit 4/4 and Runtime-only installation 1/1; these do not substitute for the uncompleted legacy fixture execution. No fixture source was adapted or test disabled.PR #278 completes a measured simplification of the existing
table_rulesystem bench without changing its scenarios or DUT.- 4,213 nested conditional expressions became one typed immutable 1,343-row fixture Table and one tail clamp. Source shrank from 823,402 to 188,920 bytes (16,871 to 1,403 lines).
- All 10,744 ordered observations over 2,686 epochs match the baseline in native C++ and Verilator. The existing system verifier passed native workers 1/2 and RTL under the unchanged timeout. Original module and four-state checks passed, with DUT/driver/RTL/config bytes unchanged.
- Linked IR shrank 79,341,868 → 38,976,988 bytes. Locally measured capture was 21.33 → 1.76s; two-run C++ execution median was 14.31 → 9.58s. RTL execution stayed near 0.02s; no runtime speedup claim for RTL. README records scope, phase measurements and limitations.
- Independent reference reconstruction compares every fixture field and post-limit behavior; it does not depend on Git history or ignored logs. 111 focused unit tests, independent reviews and CI passed.
This is one workload, not full catalog/nightly/platform acceptance or a broad Runtime scaling claim. The seven unmapped roots and other large benches remain open. The earlier timeout remains historical evidence; this smaller standalone gate passed, but a new full concurrent aggregate stress run was not claimed. No new API or compiler/backend rule was introduced.
PR #273 has been updated to current main, independently reviewed, natively validated and merged. Same-source fixed scalar
@rulefunctions can now be supplied directly to existingTable.map, including nested calls inside the already-admitted scalar helper subset. Generic rows preserve declared type authority; no new decorator, intrinsic, IR operation or backend path was added.Fresh evidence: 70/70 native interface/staging tests; scalar-helper gate with 3 roots and 81 negative fresh/replace cases; ordinary Table gate with 8 roots and 72 negative cases; C++ workers 1/2, Verilator and Icarus including named comparison/conditional X/Z goldens; API 22/22; system 43/43; Python units 497 passed with 4 platform skips; retained array_reductions closed C++/RTL execution. CI and independent code/architecture reviews passed.
This closes the historical
values.map(bump)dependency only. It does not close the completearray_combinatorsroot or restore aggregate/imported callbacks, nested Table callbacks, helper calls inside expression lambdas, general tuple/list map results, dependent parameter families or ordered scans. Those migration boundaries remain open. Exact near-cap positive resource admission is not independently pinned; bounded rejection and publication protection are verified. No full nightly/platform or full migration claim follows.Reviewed the remaining
multirate_computeroot against the original implementation. Itsrate=4means up to four distinct FIFO tokens per epoch, not four clock rates.Evidence:
8887e6de:examples/agentic-circuit/blocks/multirate_compute.pyconnects three depth-eight queues through increment and a two-stage pipeline.b3e52fb2:tests/python/agentic-circuit/python_frontend/test_jit_blocks.py,test_multirate_queue_metadata_and_cpp_templates_are_frozen, checks rate-four metadata/templates, latencies 1/1/2, and rate > depth rejection. This is a code-generation oracle. The searched history did not yield a root-specific independent executable output/timing oracle.- Historical
QueueTransformrepeatedly consumes committed FIFO heads until the per-epoch rate, exhaustion or backpressure; delayed queue entries retain shared capacity and order.
The current queue contract admits one token per push/pop edge. A Table payload is one token, and four independent queues do not establish shared FIFO capacity, partial batches or identical backpressure. Clock division would change the original behavior.
This root therefore remains open. A truthful restoration needs an independently specified and tested implementation of ordered multi-token FIFO behavior using existing hardware constructs, or a separately accepted queue capability. No new rate API, fallback, Table-packing shortcut, or migration-completion claim is introduced by this review. The existing module/system queue suites remain the verification owners. This comment does not change the current-main migration counts or claim a full nightly run.
Reviewed the remaining
parameterized_typesandnested_config_typesroots against source at8887e6deand tests atb3e52fb2.Both transport an aggregate unchanged, but their defining behavior is the family of nominal aggregate types derived from caller-supplied static bindings:
parameterized_types:RobEntryuses an index width derived fromrob_entries;IssueGrouphasissue_widthentries and a derived count width. The historical runtime oracle exercises(rob_entries=4, issue_width=2), a 41-bit payload and independently packed identity value12582970, including output stalls. Other frontend/code-generation tests exercise wider bindings and missing/invalid parameters.nested_config_types: nested cache configuration determines index width, candidate Table extent and lane-count width. The root-specific(sets=64, ways=4, line_bytes=64, lanes=4)test verifies a 41-bit shape, field-path bindings and generated-code syntax. No root-specific executable data/timing oracle was located. Related tests also check nested projection, missing/noninteger fields, mismatched config schemas and failed static constraints.
Current concrete Struct/Table declarations can represent those individual payloads. Replacing either root with one fixed declaration would discard its tested parameter-family behavior, so that is not a complete migration.
The remaining capability/policy is parameter-dependent nominal aggregate declarations, derived widths/extents, specialization identity and binding diagnostics; nested configuration additionally needs compile-time field projection and constraint evaluation. This is not evidence of an aggregate backend transport defect. These roots remain open under the existing language/resource backlog (#128), with no new parameter API or compiler specialization workaround introduced by this review. Historical tests are preservation requirements, not current-candidate passing evidence.
PR #284 is merged as
9a5d5b4dac51712e0276903e0ff5eed4e216b11e.array_scansnow retains the complete original four ordered recurrences, all scalar/Pair prefix snapshots, eight output fields, and two depth-one queues in 117 source lines using ordinary boundedfor. There is no new scan API or fixture-specific compiler rule. The existing MLIR owners now handle literal-range expansion with typed bindings, pure-body admission, shared resource budgets, iteration/call provenance and transactional failure cleanup.Fresh evidence on the reviewed content:
- Native source/interface/resource/provenance tests: 73/73. The producer test derives exact sites from captured input AST, checks iteration/call frame order and outside-loop restoration, and verifies malformed retained metadata rejection.
- Public loop gate: native workers 1/2 and Icarus six known/X/Z rows, Verilator three known rows; depth-32 native/Verilator outcomes and default/value/partial/explicit aggregate initialization; 43 rejection cases and previous-publication protection; generated outside-loop assertion failure.
- API 22/22; source systems 43/43; Python unit/quickstart 578 passed, 5 skipped; CI and independent code/architecture reviews passed.
array_scansmodule/system: 2/2 CTests. Module histories agree over 1,031 Work samples, with 495 accepted tokens, 492 retired and three directed-reset drops. Closed system: 16 cycles / 32 sampling epochs on both backends.- Complete DUT/bench source-import and transformed IR retained and byte-matched to published units; C++/Verilog share the verified final artifact.
The accompanying C++ emitter correction removes redundant nested Struct member initializers while preserving initialized leaves/layout/aggregate construction. Same-IR syntax checking for the depth-32 case measured 154.77 s before and 0.41 s after, one run per variant. Extra deep-Icarus compilation hit its resource limit and is explicitly not passing; issue #265 retains that separate scaling evidence. Main Icarus X/Z coverage remains passing.
Inventory is now 69 examples / 25 API cases, 66 / 13 systems and 90 mapped historical roots. The remaining three roots and broader acceptance obligations remain open. No full-catalog/nightly/platform pass or restoration of parameter families/multi-token queue behavior is claimed.
Repository hierarchy follow-up in #285 consolidates maintenance commands under
tools/and compiled Runtime sources underruntime/. Python package flattening was already delivered in #276. These directory moves do not change example migration status.A pre-existing preview validation gap surfaced during the audit:
tools/materialize_source_preview.py::cmake_textassumes${PYCIRCUIT_RUNTIME_ROOT}/include/gfsim, while Runtime source and installed-header ownership are split (runtime/and rootinclude/gfsim/). The originalsimulator/gfsimlayout already had that mismatch. The legacy preview fixture needs a bounded repair using the existing Runtime/build owner and current source-unit contract, with complete preview execution evidence; no compatibility path should be introduced. #285 updates its active paths but does not claim its full simulation passes.Validated for the hierarchy change: checkout-local CompilerDev build/install, API 22/22, Python 583 passed/5 skipped, Runtime-only installation/relocation/consumer without LLVM, strict docs and repository checks. Windows, full nightly, full example catalog and complete preview execution remain unclaimed.
#286 completes the retained
feedback_pipelinebench simplification. Eight expanded conditional trees become 1,051 typed inclusive intervals through existingTable.first; 13,103 source lines / 639,219 bytes become 1,116 lines / 90,403 bytes. No new API/compiler change, DUT/oracle rewrite, cycle reduction or timeout increase.Independent source proof preserves all 30,104 input/expected field values, 1,051 intervals over the complete known u64 phase domain, constant tail and wrap, exact registrations/assertions/logs and all companion hashes. Nineteen malicious mutations are rejected. Actual finite execution does not claim 64-bit rollover or injected X/Z phase equivalence.
Fresh standalone tests pass 3/3: original module, full system and four-state. Module oracles retain 7,527 known and 7,607 four-state Work rows, genuine Icarus checks and original reset/discard/token/terminal matrices. System completes all 3,763 cycles / 7,526 epochs / 30,104 observations across native workers 1/2 and RTL; complete baseline native workers 1/2 and RTL observations match. Both source-import/transformed units and same-final-IR backend artifacts are retained and candidate-bound. Related units 113/113, pre-commit and strict docs pass; verified module receipt is linked from the catalog.
This improves source/frontend cost, not simulation speed. Serial bench compilation 21.49→3.79s, link 14.24→6.06s and IR 62.37→25.82MB; paired warm native medians 30.56→31.59s(+3.4%). Verilog build/runtime also increase slightly in absolute time; the README and #265 record all costs. Earlier unrepeatable timing gains were excluded from the final comparison.
Inventory remains 69 examples / 25 API cases, 66/13 systems, 90 mapped historical roots. The three remaining historical roots, other expanded benches, full-catalog/nightly and platform validation remain open. Local proof/experiment logs remain ignored rather than runtime dependencies.
#287 simplifies the retained ROB system bench: 6,228 lines / 258,859 bytes become 371 lines / 39,366 bytes through a 284-row typed scenario Table. All 284 transactions, including the complete 256-event deterministic random stream, remain. The final row keeps flush asserted throughout the remaining u64 phase domain. There is no new API/compiler change, DUT/oracle rewrite, cycle reduction or timeout increase.
Independent proof preserves all 4,260 field values, the full known-u64 interval partition, tail/wrap and exact wiring/check/log/registration structure; 21 malicious mutations are rejected. Standalone module/system tests pass 2/2: the original 569-sample module oracle and failure/discard/retry probes remain, and the system completes 568 epochs with 3,976 observations across native workers 1/2 and RTL. Complete original/candidate observations match. Source-import/transformed stages reproduce published units, and measured/public backends have identical final IR and generated outputs. Catalog tests 19/19, pre-commit and strict docs pass.
Matched measurements reduce bench compilation 6.62→1.45 s and paired warm native runtime median 1.111→0.641 s; RTL runtime is approximately unchanged. README records complete costs and limits; #265 tracks scaling.
The catalog inventory is unchanged. Other expanded benches, the three remaining historical roots, full-catalog/nightly and platform validation remain open. This proof does not claim injected X/Z phase equivalence or actual 64-bit rollover execution. Local intermediate logs and proof tools remain ignored.
#288 simplifies two retained system benches without changing the compiler, DUTs, oracles or run budgets:
- Bit primitive: 6,003→472 lines. The existing Stimulus helper uses 344 original rows plus a zero fallback for known inputs 344–65535. The separate advance rule still increments below 343 and otherwise holds; ten unguarded checks, eleven logs and advance-before-check order remain. Independent proof covers all 1,310,720 field values over the known-u16 function domain; ten mutations rejected.
- Barrier: 5,318→435 lines. All 347 rows and both final observations remain. Full-u64 clamp/wrap, nominal tokens, six guarded checks/logs and check-before-advance order are preserved; the tail starts 345 with only takes/readies set. Independent proof covers 4,164 active values and 340 intervals; twelve mutations rejected.
All six focused module/system/four-state tests pass. Bit primitive retains 42,153 known/813 XZ Work samples and 7,568 system observations; barrier retains 699 known/619 XZ samples and 4,164 system observations. Native workers 1/2, Verilator, genuine Icarus, reset/discard and original token-ledger checks remain. Twenty complete original/candidate traces per example match; compiler stages and measured/public artifacts are bound to identical verified final IR. Current module receipts and navigation are published. Catalog tests 19/19, pre-commit and strict docs pass.
Performance reporting remains bounded: bit-primitive native warm median is approximately unchanged (a 4.462-second outlier is disclosed); barrier's median improves about 22%. Both compile costs and generated sizes decrease. #265 and each README record measurement details.
Catalog inventory is unchanged. Other expanded benches, the three remaining historical roots and full-catalog/nightly/platform validation remain open. No injected X/Z phase equivalence or actual u64 rollover execution is claimed. Local intermediate logs/proof tools remain ignored.
#289 simplifies the retained memory-banks and loop-control benches using existing typed scenario Tables. Memory is now 545 lines (from 4,848); loop is 706 (from 4,520). All 440/635 cycles, literal values, full-u64 clamps/tails/wrap, nominal constructors, checks and logs remain. Memory preserves its five bitwise EXPECTED-valid response masks and frozen terminal data; loop retains repeated rows and expected_ready=0.
Final independent proofs compare 8,360 values/223 intervals and 6,350 values/373 intervals. The reviewer found an incomplete initial proof harness; it was repaired before acceptance to compare complete normalized frozen check/advance ASTs, declarations and registrations. Fourteen memory and twelve loop mutations now reject structural changes, mask weakening, values, clamps and tails. The actual source candidates were separately verified unchanged in behavior.
All five focused CTests pass: memory module/system 2/2 (883 module samples; 880 system epochs/10,560 observations) and loop module/system/four-state 3/3 (1,272 known/19,458 XZ module samples; 1,270 system epochs/6,350 observations). Original native workers 1/2, Verilator, loop Icarus, masking/recovery and discard/token checks remain. Eight compiler-stage records and twenty complete traces per example bind the verified same-final-IR outputs. Catalog tests 19/19, pre-commit and strict docs pass; current module receipts are linked.
This is an authoring/frontend improvement with backend costs: native warm medians regress 6.3%/8.1%, generated C++ grows 21.8%/26.6%, and RTL grows 3.8%/8.3%. READMEs disclose the full measurements; #265 tracks a separate generic constant-plane materialization opportunity. Acceptance does not assume a future speedup.
Catalog inventory is unchanged. Other expanded benches, three remaining historical roots and full-catalog/nightly/platform validation remain open. No simulated u64 rollover or arbitrary X/Z phase equivalence is claimed. Intermediate logs/proof tools stay ignored.
#290 merged as
6af5be15a647920c5b4dbc24e759aa715121e252, closing the C++ constant-table rematerialization cost identified during #289. No example roots were added/removed and no DUT, bench, driver, configuration, cycle limit or oracle was adapted in this slice. The two example READMEs distinguish historical source-rewrite measurements from the new emitter measurements.Fresh public compile/link outputs match the retained units and final IR. Memory 2/2 and loop 3/3 standalone tests passed, alongside the focused constant-plane native/four-state regression, 11 existing regressions and API gate 22/22. Full native/RTL measurement observations agree. Native medians improved 92.05% / 96.06% under the matched local
-O0conditions detailed in #290 and #265.The remaining example/semantic decisions and full-catalog/nightly/platform validation stay open here. This bounded compiler optimization does not claim that historical migration or the complete catalog has passed.
Merged #291 as
90fbe9468e7cdfd172a7b9a73bbdf0e5bb705245: compacted the retained frontend-composition and one-hot scenario benches with existing typed Tables.- Frontend composition: 4,093 → 344 source lines; all 184 active rows plus the distinct zero fallback retained.
- One-hot: 3,733 → 428 lines; all 344 active rows plus zero fallback retained.
- Complete advance/system ASTs, saturating u16 counters, Enum mappings, assertions/messages, both one-hot valid events and registrations are unchanged. No framework API, compiler, DUT, driver, configuration, cycle or timeout change.
Independent proofs cover all known-u16 helper inputs (1,835,008 / 786,432 field values) with 15 rejected mutations each. Baseline and candidate standalone module/system/four-state suites each pass 3/3 per example. Eight complete source-import/transformed records reproduce published units; 20 complete normalized traces per example match, including terminal results. Catalog tests 19/19, pre-commit/docs, independent exact-candidate review and required PR CI passed.
This is bounded authoring/performance cleanup, not full-catalog acceptance. Record-spread, DMA and other expanded benches remain for subsequent review; the existing unresolved historical roots and full nightly/platform validation stay open. Arbitrary X/Z-phase injection is outside the helper proof; original physical four-state DUT histories remain with the unchanged independent drivers. Current generated module receipts/navigation were refreshed.
Merged #292 as
97b9352e5528e88c85915ee2d5c8678fc14490b8: compacted record-spread and DMA scenario benches using existing typed Tables; no new API or compiler change.- Record-spread: 3,583 → 280 lines / 127,524 → 32,840 bytes. All 23 fields, 158 active rows, repeated terminal rows, complete known-u64 tail and wrap behavior retained.
- DMA: 3,711 → 485 lines / 138,699 → 87,577 bytes. All 40 fields retained in 294 inclusive intervals, including the full-u64 terminal endpoint and all twelve expected-valid response masks.
- DUTs, constructors, ordered inputs, counter updates, guards/messages, unconditional logs, check/advance registration, original drivers/oracles, configs/cycles/timeouts remain unchanged.
Independent source proofs compare 3,634 / 23,280 active values and 156 / 294 complete known-u64 intervals; 13 / 54 mutations reject, including system headers, scenario binding and all DMA mask sites. Baseline and candidate standalone suites each pass record-spread 3/3 and DMA 2/2. Eight complete source-import/transformed records reproduce published body/interface artifacts; 20 complete traces per example match all observations and terminal results after excluding only changed source-position metadata. Measured/public final IR and all generated files/manifests match. Catalog19/19, pre-commit, strict docs, exact-candidate independent review and both required CI checks passed.
READMEs and generated module receipts are refreshed. DMA has mixed costs (including ~4% slower warm RTL and larger generated code); measurements are documented in #265 and the README. Source-level known-u64 proof is not a simulated rollover or arbitrary X/Z-phase result. Original module physical reset/held-clock/four-state and failure oracles remain independent.
Other expanded benches (including bitfield decode, observation points and issue queue), the three unresolved historical roots and full-catalog/nightly/platform validation remain open. This delivery changes no catalog count and does not claim broad migration completion.
Merged #293 as
f504ffa42f8cfc1294f20daa24b5e19a603fd4f0: simplified the retained bitfield-decode and observation-point benches through existing language features.- Decode: 3,370 → 304 lines. All 184 original scenarios retain 20 fields/266 bits in a 185-row typed Table. The all-zero helper fallback for phases 184..65535 remains distinct from the system counter saturating at183.
- Observation points: 3,175 → 119 lines. Only the three expression RHSs change, with fixed-eight-bit modular sweep arithmetic, full-u64 comparisons, explicit phase4 old-q exception and exact
(0,1,8)terminal tuple. - Original DUTs, physical/four-state drivers, independent oracles, constructors, assertions/messages, observations, counters, registration order, configs/cycles/timeouts remain unchanged. No API/compiler change or newly migrated historical root.
Independent source proofs cover 1,310,720 decode field values over all known-u16 inputs and 792 active observation values plus the complete known-u64 tail/wrap proof. All43 mutation probes reject. Baseline and candidate standalone gates each pass3+2, retaining decode305known/575four-state and obs532physical Work samples. Eight full source-import/transformed records reproduce public units;20complete native/RTL traces per example agree, including4048/1056observations and terminal results. Generated files/manifests and finalIR bind identically between measured/public builds. Catalog19/19, precommit, strict docs, independent exact-candidate review and required PRCI pass.
Both guides and receipts are current; decode now has its missing generated-artifact navigation. Local native runtime improves, while obsRTL median is essentially unchanged with a measured~1% increase; precise costs are published in the READMEs and #265. No arbitrary X/Z-phase or actualu64-rollover simulation claim. Full-catalog/nightly/platform validation, three unresolved historical roots and other expanded benches remain open. Next largest retained benches include issue_queue_2picker, inferred_boundary_pipeline and fifo_loopback.
Merged #294 as
c97eec6357c7231e5e37f5033cd5ea85f2a9d633: compacted three retained scenario benches with existing typed Tables.Bench Lines before → after Full known-u16 field values checked issue_queue_2picker 3,053 → 421 589,824 inferred_boundary_pipeline 2,316 → 410 393,216 fifo_loopback 2,309 → 408 393,216 Each preserves 344 original rows plus an all-zero fallback for helper phases 344..65535, separate from the system's saturation at 343. Issue-queue still checks invalid payloads unconditionally, including final data 8/8 with valid 0/0. No compiler/API, DUT, original driver/oracle, configuration, cycle or timeout change.
Independent proofs and 172 rejected mutations cover original values, complete source/header structure, every field and assertion, binding/type authority, saturation and registration order. The reviewer found an ignored checker gap around annotated bindings; it is fixed and independently retested. Product sources needed no repair.
Baseline and candidate each pass all 8 existing standalone gates (2+3+3). Physical oracle scopes remain issue 177 known frames, inferred 573 known / 137 four-state rows, and FIFO 658 known / 213 four-state samples with the original smoke/hold/reset/drain and terminal failure histories. Issue-queue has no independent four-state gate. Twelve complete source-import/transformed records reproduce public units; 60 complete traces match all observations and terminal results. Only demonstrated source-position metadata is excluded, never invalid payload values. Measured/public final IR and all emitted files/manifests match.
All three READMEs and generated receipts are current; inferred-boundary now has its missing catalog link. Catalog tests 19/19, pre-commit, strict docs, independent exact-commit review and required CI passed. Native runs improve under the measured local conditions, while several single compile/link/build measurements regress; #265 and the READMEs disclose both.
No new historical root is declared migrated. Remaining large benches include bit_widths, enum_helpers, record_projection_update and net_resolution_depth_smoke. The three unresolved historical roots and full-catalog/nightly/platform validation remain open. Known-u16 helper proof does not establish arbitrary X/Z-phase equivalence.
Merged #295 as
a24343d301c152df56f917936edee0c1d121c6dc: compacted the bit-width, enum-helper and record-projection-update benches through existing typed Tables.Bench Lines before → after Full known-u16 field values checked bit_widths 2,240 → 268 786,432 enum_helpers 2,183 → 295 917,504 record_projection_update 2,142 → 277 786,432 All 184 scenarios and the separate zero helper fallback for phases 184..65535 remain intact; systems still saturate at 183. Typed details remain explicit: 37-bit sequences retain their high bits, enum selector zero still maps to ERROR and checks retain raw carriers/enum_to_bits, and protocol/payload validity stays distinct with both ordered observations named valid.
Independent full-domain and strict residual-AST proofs pass; 279 mutations reject, including every high sequence bit 32..36, u32 truncation, each enum selector branch/output/fallback and duplicate-event changes. Baseline and candidate each pass all nine existing standalone tests. Physical oracles retain bit-width 195 known Work samples/four full-DUT X/Z cases; enum 2,089 known/3,229 four-state rows with owner/failure/recovery probes; record 101 known samples/four X/Z cases.
Twelve full source-import/transformed records reproduce published units. Sixty complete native/RTL traces agree on every observation and terminal result; record's duplicate valid event order is checked at every epoch. Public/measured final IR and all emitted files/manifests match. Eighteen protected files and catalog behavior remain unchanged. Pre-commit, strict docs, catalog tests 19/19, independent exact-commit review and required CI passed.
All three guides/receipts are refreshed; enum-helper gains its missing generated-artifact navigation. Local native costs decrease, while the first bit-width RTL measurement is slower; #265 and the guides disclose the full measurements. No API/compiler/DUT/driver/config/cycle/timeout change or newly migrated historical root.
Remaining expanded benches include net_resolution_depth_smoke, struct_transform, bounded_full_u64 and enum_payload_pipeline. Three historical roots and full-catalog/nightly/platform validation remain open. Source proof covers known-u16 helper inputs, not arbitrary X/Z-phase injection; physical histories remain independent.
Merged #296 as
50271e5e6d90fc0389189e48fb4c7e810805b4d4: simplified three retained benches without adding APIs or changing hardware behavior.- Net resolution: 2,134 → 94 lines. Only two RHSs change to exact bits8 formulas; different input/old-Q ramp endpoints, prefix exceptions and full-u64 tail
(0,11)remain. - Struct transform: 2,036 → 129 lines. All 72 scenarios remain in a Table, including initial expected word=1 and the nonzero tail from phase 71. Packet valid remains data, not an enable.
- Full-u64 bounded results: 2,016 → 262 lines. All 158 if/elif cases become a Table plus zero sentinel 158, distinct from saturation 157. Four UINT64_MAX-capable fields and independent take/valid/payload channels remain intact.
Independent known-domain proofs cover net 528 and struct 576 active values with complete u64 tails, and 983,040 full known-u16 bounded field values. All 372 mutation executions reject; proof normalizer ordering and bare-field-read gaps were repaired before acceptance. No product source workaround was needed.
Baseline and candidate each pass six existing standalone CTests, preserving net 532, struct 149 and bounded 299 known Work samples and their native probes. Separately, both versions pass unchanged direct Icarus macros: four net X/Z cases and six struct cases (one summary marker). These direct runs are not CTests; bounded remains known-only. Twelve complete source-import/transformed records reproduce public units; 60 complete native/RTL traces preserve all observations and terminal results. Public/measured final IR and every generated file/manifest match.
All three guides/receipts are refreshed, with reproducible direct-Icarus commands and exact coverage boundaries. Fifteen protected files/catalog remain unchanged; pre-commit, strict docs, catalog 19/19, exact-candidate independent review and required CI pass. Runtime and artifact costs are documented in #265; small RTL changes are not claimed statistically significant.
No new historical root is declared migrated. Other expanded benches (including enum_payload_pipeline, nested_payload_pipeline and struct_pipeline), three unresolved historical roots and complete-catalog/nightly/platform validation remain open. Source-domain proof does not mean simulated u64 rollover or arbitrary X/Z-phase equivalence; net's frozen expectation tail is not a DUT steady-state promise after its guard.
- Net resolution: 2,134 → 94 lines. Only two RHSs change to exact bits8 formulas; different input/old-Q ramp endpoints, prefix exceptions and full-u64 tail
Merged #297 as
e788bed01a5b293ac97e71d8bd2b3c1e4089d142: compacted five retained enum/record-family benches with existing typed Tables.Bench Source lines before → after Known-u16 field values proved enum_payload_pipeline 2,001 → 282 786,432 nested_payload_pipeline 1,860 → 269 655,360 struct_pipeline 1,557 → 251 524,288 aggregate_payload_pipeline 845 → 162 1,179,648 recursive_aggregate_payload_pipeline 719 → 170 1,179,648 All original 184/184/184/48/48 rows and complete zero helper tails remain, separately from the saturated system counters. Constructors, nominal enum conversions, input/output lane order, overwritten fields, unmasked assertions, logs and registrations are unchanged. Struct retains four exact u64 fields, independent arithmetic, depth-two queues/capacity four and the original 12,000-tick physical budget.
Independent source proofs cover all 4,325,376 known-u16 field values, with 758 unique rejected mutation ASTs. Baseline and candidate each pass all 15 existing CTests, including native workers 1/2, Verilator and each existing Icarus path. Full physical sample counts remain 603/51, 1,121/281, 8,989/1,151, 645/329 and 615/209 known/four-state, along with conservation and ORIGINAL_* aggregate histories.
Twenty complete source-import/transformed records reproduce published units; 100 full native/RTL traces agree on every observation and terminal result. Public/measured final IR and all generated files/manifests match. Thirty protected files/catalog behavior remain unchanged. Pre-commit, strict docs, catalog tests 19/19, independent exact-commit review and required CI pass. Guides/receipts are current and struct-pipeline now has its missing generated-artifact navigation.
Local native warm runs improve, but recursive-aggregate C++ size/emission and several first-run/build costs regress; all figures and limits are documented in #265 and the guides. No new API/compiler/DUT/driver/config/cycle/timeout change, no new historical root claimed migrated.
Further expanded helpers include encoded_enum_pipeline, rule_pair_pipeline, count_zeros_pipeline and record_projection. Already compact large Tables such as select_pipeline and table_rule remain distinct from expanded helper code. Three unresolved historical roots and full-catalog/nightly/platform validation remain open. Known-u16 source proof is not arbitrary X/Z-phase equivalence; physical oracles remain independent.
Current scope
The user reopened migration on 2026-10-09: continue restoring original behavior with simple, efficient sources and no invented APIs. The remaining inventory and validation work below are active.
Historical PR #271 delivery scope
Follow-up to merged PR #271 at
33ac60987a3dfef4d2d6dfc8785f0a1bca361d7e. The original pre-merge inventory was taken at0f01b70b9407280615bce3e0677aa77b7606b84a. The delivery direction at that cutoff ended example migration within PR #271: unfinished migration is deferred here and is not a merge requirement or a passing result. Preserve existing supported tests and independent oracles. Do not add compatibility compiler paths or expand language semantics merely to complete this inventory.Remaining historical roots
The baseline
8887e6decontains 93 historical roots. After #284, the catalog maps 90 historical roots and these three remain unmapped:blocks/multirate_compute.py:multirate_compute.types/nested_config_types.py:nested_config_types.types/parameterized_types.py:parameterized_types.Paths above are under the baseline
examples/agentic-circuit/tree and remain recoverable in Git history.Existing module cases without registered systems
These are supported module/test assets, not failed system migration results. Preserve their module tests; adding a system is deferred.
module_loop,multiclock_regs,multiclock_domain_isolation.inferred_module_pipeline,inferred_nested_module_pipeline,inferred_nested_rule,inferred_stateful_module,mem_rdw_olddata,memory_busy,memory_pipeline,memory_simple,reorder_pipeline,route_merge_pipeline,sync_mem_init_zero,typed_integer_operations.Incomplete acceptance
After #284, the catalog contains 69 examples / 25 API-owned cases, with 66 / 13 registered systems. These are inventory counts, not evidence of execution on the final PR candidate.
param[int]and external parameter support.Any future restoration must preserve algorithms, timing, ownership, failure atomicity and independent oracles through the same Python capture → MLIR → verified common IR → C++/Verilog route. This issue records backlog and does not itself authorize new semantic interfaces.
Re-review execution finding
At candidate
a4e8de5c640abd6d2bbce80e23034e1fbd1146d2, the bounded examples gate passed 12/13 entries.table_rule_systemexceeded its 180-second per-command limit while generating observations through epoch 1843 of 2686 (1343 low/high cycles). The originaltable_rulemodule oracle andtable_rule_four_statepassed. No wrong-value result was reported before timeout; full generated-system completion is not established by this run. The unchanged isolated rerun subsequently passed (1/1, 206.24 seconds total across its commands, each within the original per-command limit). This establishes completion of that case on the candidate but leaves resource-sensitive timing as a follow-up concern. No stimulus, DUT, oracle, cycle count or timeout was changed.Tracker boundaries after repository review
table_rule_systemtimeout and unchanged isolated pass above remain distinct outcomes.The merged candidate has bounded API 22/22 and source-system 42/42 evidence. Those passes do not close the full-catalog/nightly/platform work listed above.
Resumed migration: array reductions
The user reopened example migration on 2026-10-09 with simple, efficient frontend sources and no invented APIs. This supersedes the earlier stop-expansion direction for follow-up work; it does not retroactively change PR #271's verification scope.
array_reductions: restored in Preserve asserted owner enables and restore array reductions #277 with all 14 result fields, original 47-bit packing, five original goldens and two depth-one token stages. Independent known-value verification covers 74 vectors and 187 Work samples on native workers 1/2 and Verilator, including stalls, full replacement, held clocks and reset. Closed@systempasses both backends.The active goal continues with the four remaining roots and simplification of large existing benches. General historical index/range types, named Table callbacks and ordered scans were not added by this slice.
Resumed migration: array combinators
array_combinators: restored in Restore array combinators with compact Table maps and full output oracles #279 with all eleven fields, original 62-bit packing and all three historical goldens. Scalar maps retain three lanes; the pure two-by-three nested operations use a six-lane row-major Table and immutable column replacement. Checked conversion compares the full byte before three-bit projection.@systempreserves the original three requests and passes C++/Verilator for 12 cycles, 48 observations and 15 source-check definitions.Named fixed-scalar Table callbacks were separately implemented and verified in #273. #278 simplifies
table_rule's bench while retaining all 1343 cycles and 10744 observations; its local measurements do not close the broader resource-stability/scaling tracker #265.Resumed migration: bounded integer operations
bounded_integer_operations: restored in Restore bounded integer operations with 23 independent output channels #281. All 23 result fields retain their original 116 payload bits, with one 48-bit request queue and 23 independently consumed depth-one output queues. Shared readiness/fire preserves atomic fanout; original and intermediate Table snapshots remain actual copy/update/read operations.@systempasses the complete 96 cycles: 192 sampling epochs, 384 observations and 49 source-check definitions. Standalone and aggregate-selected CTests each pass 2/2; related unit tests pass 108, with 19 catalog tests rerun after registration. Pre-commit and strict documentation checks pass.The
array_scansroot remains a specific authoring gap: existingfoldhas balanced grouping without an initial accumulator or callback, and current source lowering rejects generalfor/while. Substituting balanced reduction or manually expanding a prefix chain would not complete that root. The language capability stays tracked in #128.Resumed migration: recursive array updates
recursive_array_updates: restored in Fix equivalent Table projections and restore recursive array updates #282 with all 14 fields/42 payload bits, nominal Struct/Enum values, actual 3/5/3/65-element Tables and five immutable updates. The 16-bit request and complete result retain two depth-one queues. Zero initialization and shared maps avoid 65 repeated literals; the modulo-three index is shared.Retained system benches still contain large expanded histories (for example
feedback_pipelineandrob). Simplify their source representation while preserving every scenario, cycle and independent oracle; do not use a smaller test matrix as an efficiency improvement.Retained bench simplification: select pipeline
Inventory stays 68 examples /25 API cases, 65/13 systems and 89 mapped historical roots. Four historical roots, other large retained benches, and complete-catalog/nightly/platform validation remain open.