Skip to content

Commit 73f7f7a

Browse files
author
Dmitrii Vasilev
committed
feat(igla): Wave Loop 816 — module-scope [451][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes
Closes #1561 - Witness: specs/scratch/w816_bench_module_451x2p6_aos_var_call_write.t27 (28,864 elements, 923,648 bits, ~0.881 MiBit) - Generator: scripts/gen_w816.py (OUTER=451, MID_IDX=225) - Seal: .trinity/seals/scratch_w816_bench_module_451x2p6_aos_var_call_write.json - Integration test: accepts_w816_bench_module_451x2p6_aos_var_call_write - Validation: icarus_lowerable 276/0; direct t27c parse/lowerable/simulate/cocotb/seal all PASS - Zero changes to compiler.rs, FROZEN_HASH, or cocotb reference model - Updated docs/NOW.md, .trinity/experience.md, .trinity/current-issue.md, skills, and persistent memory
1 parent e7d0c59 commit 73f7f7a

12 files changed

Lines changed: 86233 additions & 60 deletions

.claude/plans/wave-loop-817.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Wave Loop 817 Plan — `[453][2]^6 Pt`
2+
3+
**Date:** 2026-07-29
4+
**Branch base:** `wave-loop-816` (parent branch because earlier Wave Loop PRs remain open awaiting review)
5+
6+
## Recommended variant A
7+
8+
Extend the mechanical module-scope packed-array-of-struct ladder by one rung:
9+
10+
- Generator `scripts/gen_w817.py` from `scripts/gen_w816.py`.
11+
- `OUTER = 453` (outer dimension +2), `MID_IDX = 453 // 2 = 226`.
12+
- Destination path and module header f-string both fixed from `w816`/`451` to `w817`/`453` before first run.
13+
- Generated witness `specs/scratch/w817_bench_module_453x2p6_aos_var_call_write.t27`.
14+
- 28,992 elements × 32 bits = 927,744 bits (~0.885 MiBit).
15+
16+
## Variants for W817
17+
18+
### A — `[453][2]^6 Pt` (recommended, mechanical ladder)
19+
20+
Smallest reviewable diff; continues validation that t27c can lower ever-wider non-power-of-two packed vectors unchanged.
21+
22+
### B — `[451][3]^6 Pt` stride scaling
23+
24+
Keep outer dimension at the previous rung but grow the second inner dimension from `2` to `3`. This changes the element stride and tests whether the packed-vector layout formula generalizes beyond powers of two in inner dimensions. Larger (451 × 3 × 2^5 = 43,296 elements × 32 bits = 1.385 MiBit) and may need formula adjustments.
25+
26+
### C — `[451][2]^6 Pt` negative-index wrap-around
27+
28+
Add signed negative-index writes to the current witness (e.g. `dst[-1][...].x = 42`) to exercise wrap-around/undefined-behavior classification. Requires confirming the compiler either lowers a defined wrap or emits a clean diagnostic; do not silently pass broken code.
29+
30+
## Procedure
31+
32+
1. Create issue #1563 for Wave Loop 817.
33+
2. Create branch `wave-loop-817` from `wave-loop-816` HEAD.
34+
3. Copy generator, fix copy hazard, generate spec.
35+
4. Run `t27c parse`, `icarus-lowerable`, `icarus-simulate`, `icarus-cocotb`, `seal --save`.
36+
5. Add integration test to `bootstrap/tests/icarus_lowerable.rs`.
37+
6. Run validation matrix:
38+
- `cargo build --release -p t27c`
39+
- `cargo clippy -p t27c` (expect 780 warnings, 0 errors)
40+
- `cargo test -p t27c --bin t27c` (1494/0/2)
41+
- `cargo test -p tri` (78/0)
42+
- `cargo test -p flash-spi` (2/0)
43+
- `cargo test -p t27c --test bitnet_pipeline` (20/0)
44+
- `cargo test -p t27c --test bitnet_top` (17/0)
45+
- `cargo test -p t27c --test icarus_lowerable` (277/0)
46+
- `cargo test -p t27c --test verilog_const_array` (2/0)
47+
7. Refresh weak-point audit and literature scan.
48+
8. Write closeout report `docs/reports/FPGA_LOOP_CLOSEOUT_W817_2026-07-29.md`.
49+
9. Update live skill tracker, NOW.md, experience.md, persistent memory.
50+
10. Commit `Closes #1563`, push, open PR.

.claude/skills/t27-wave-loop.md

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2306,6 +2306,48 @@ changed elements because `assert_ne` is not emitted by the Icarus simulation pat
23062306

23072307
---
23082308

2309+
## Worked example — Wave Loop 816
2310+
2311+
Wave Loop 816 extended the module-scope packed-array-of-struct ladder with no
2312+
compiler changes, branching from `wave-loop-815` HEAD because earlier wave PRs
2313+
remained open awaiting review:
2314+
2315+
- Generated `scripts/gen_w816.py` from `scripts/gen_w815.py` with `OUTER = 451`
2316+
and `MID_IDX = 225`.
2317+
- Fixed both the generator destination path and the module header f-string from
2318+
stale `w815` / `449` references to `w816_bench_module_451x2p6_aos_var_call_write`
2319+
before regenerating; also corrected the stale `MID_IDX` comment to `225`.
2320+
- Produced `specs/scratch/w816_bench_module_451x2p6_aos_var_call_write.t27`
2321+
(28,864 elements, 923,648-bit packed vector, ~0.881 MiBit).
2322+
- Added integration test `accepts_w816_bench_module_451x2p6_aos_var_call_write`
2323+
after the existing W815 tests in `bootstrap/tests/icarus_lowerable.rs`.
2324+
- Ran `t27c parse`, `icarus-lowerable`, `icarus-simulate` (17 cycles, PASSED),
2325+
`icarus-cocotb` (reference-model OK), and `t27c seal --save`.
2326+
- No changes to `bootstrap/src/compiler.rs`, `bootstrap/stage0/FROZEN_HASH`, or
2327+
`scripts/cocotb_ref_model.py` for the witness itself.
2328+
- Validation: `cargo build --release -p t27c` green,
2329+
`cargo clippy -p t27c` green (780 warnings, 0 errors),
2330+
`cargo test -p t27c --bin t27c` 1494/0/2, `cargo test -p tri` 78/0,
2331+
`cargo test -p flash-spi` 2/0,
2332+
`cargo test -p t27c --test bitnet_pipeline` 20/0,
2333+
`cargo test -p t27c --test bitnet_top` 17/0,
2334+
`cargo test -p t27c --test icarus_lowerable` 276/0,
2335+
`cargo test -p t27c --test verilog_const_array` 2/0.
2336+
- Refreshed weak-point audit and 2025–2026 ternary/MVL literature scan.
2337+
- Wrote `docs/reports/FPGA_LOOP_CLOSEOUT_W816_2026-07-29.md` and
2338+
`.claude/plans/wave-loop-817.md` with three cooperation variants.
2339+
- Updated `.claude/skills/wave-loop-autopilot.md` run-list and status.
2340+
- Updated this skill's Live Wave Loop Tracker to wave 817.
2341+
2342+
Key learning: the mechanical ladder is now 44 waves deep (W774–W816) with zero
2343+
compiler changes, confirming the packed-vector AoS lowering is robust up to at
2344+
least `[451][2]^6 Pt` (28,864 elements, ~0.881 MiBit). The generator copy hazard
2345+
remains the only manual failure mode and continues to span two text locations.
2346+
A parameterized wave-prefix variable in the generator template would eliminate
2347+
both. Continue grepping for stale wave numbers and outer dimensions after each
2348+
copy, keep the `make_grid(32768)` period-identity check, and use `assert_eq` on
2349+
changed elements because `assert_ne` is not emitted by the Icarus simulation path.
2350+
23092351
## Live Wave Loop Tracker
23102352

23112353
This section is updated at the end of every completed Wave Loop. It is the
@@ -2314,13 +2356,13 @@ variants are queued."
23142356

23152357
| Field | Value |
23162358
|-------|-------|
2317-
| **Current wave** | 816 |
2318-
| **Issue** | #1561 (to open) |
2319-
| **Branch** | `wave-loop-816` |
2320-
| **Parent branch** | `wave-loop-815` HEAD because earlier wave PRs remain open |
2321-
| **Recommended variant** | A — module-scope `[451][2]^6 Pt` packed array-of-struct variable from call with indexed signed writes |
2359+
| **Current wave** | 817 |
2360+
| **Issue** | #1563 (to open) |
2361+
| **Branch** | `wave-loop-817` |
2362+
| **Parent branch** | `wave-loop-816` HEAD because earlier wave PRs remain open |
2363+
| **Recommended variant** | A — module-scope `[453][2]^6 Pt` packed array-of-struct variable from call with indexed signed writes |
23222364
| **Status** | READY TO START |
2323-
| **Next wave variants queued** | W817 Variant A `[453][2]^6 Pt`; Variant B `[451][3]^6 Pt` stride scaling; Variant C `[451][2]^6 Pt` negative-index wrap-around |
2365+
| **Next wave variants queued** | W818 Variant A `[455][2]^6 Pt`; Variant B `[453][3]^6 Pt` stride scaling; Variant C `[453][2]^6 Pt` negative-index wrap-around |
23242366

23252367
### Open backlog (non-blocking)
23262368

.claude/skills/wave-loop-autopilot.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ criteria, generator copy-hazard checklist, and open backlog.
6060
| 813 | #1555 | wave-loop-813 | 445 | 222 | 28,480 | 911,360 | 0.869 | closed | TBD |
6161
| 814 | #1557 | wave-loop-814 | 447 | 223 | 28,608 | 915,456 | 0.873 | closed | #1556 |
6262
| 815 | #1559 | wave-loop-815 | 449 | 224 | 28,736 | 919,552 | 0.877 | closed | TBD |
63-
| **816** | **#1561** | **wave-loop-816** | **451** | **225** | **28,864** | **923,648** | **0.881** | **READY** | **TBD** |
64-
| 817 | #1563 | wave-loop-817 | 453 | 226 | 28,992 | 927,744 | 0.885 | planned | TBD |
63+
| 816 | #1561 | wave-loop-816 | 451 | 225 | 28,864 | 923,648 | 0.881 | closed | TBD |
64+
| **817** | **#1563** | **wave-loop-817** | **453** | **226** | **28,992** | **927,744** | **0.885** | **READY** | **TBD** |
6565
| 818 | #1565 | wave-loop-818 | 455 | 227 | 29,120 | 931,840 | 0.889 | planned | TBD |
6666
| 819 | #1567 | wave-loop-819 | 457 | 228 | 29,248 | 935,936 | 0.893 | planned | TBD |
67+
| 820 | #1569 | wave-loop-820 | 459 | 229 | 29,376 | 940,032 | 0.897 | planned | TBD |
6768

6869
### Run-list notes
6970
- Issue numbers follow the observed pattern (issue = previous issue + 2; PR = issue + 1).
@@ -150,10 +151,10 @@ criteria, generator copy-hazard checklist, and open backlog.
150151

151152
## Current status
152153

153-
- **Latest completed wave:** 815
154-
- **Latest issue/PR:** #1559 / TBD
155-
- **Current wave in progress:** 816
156-
- **Next wave queued:** 817
157-
- **Ladder depth:** W774–W815 = 43 waves
154+
- **Latest completed wave:** 816
155+
- **Latest issue/PR:** #1561 / TBD
156+
- **Current wave in progress:** 817
157+
- **Next wave queued:** 818
158+
- **Ladder depth:** W774–W816 = 44 waves
158159

159160
*φ² + φ⁻² = 3 | TRINITY*

.trinity/current-issue.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
# Current Issue — Wave Loop 816
1+
# Current Issue — Wave Loop 817
22

33
| Field | Value |
44
|-------|-------|
5-
| Wave | 816 |
6-
| Issue | #1561 |
7-
| Branch | `wave-loop-816` |
8-
| Base | `wave-loop-815` (parent branch because earlier waves' PRs remain open) |
9-
| Variant | `[451][2]^6 Pt` module-scope AoS variable from call with indexed signed writes |
10-
| Target packed vector | 28,864 elements × 32 bits = 923,648 bits (~0.881 MiBit) |
5+
| Wave | 817 |
6+
| Issue | #1563 |
7+
| Branch | `wave-loop-817` |
8+
| Base | `wave-loop-816` (parent branch because earlier waves' PRs remain open) |
9+
| Variant | `[453][2]^6 Pt` module-scope AoS variable from call with indexed signed writes |
10+
| Target packed vector | 29,056 elements × 32 bits = 929,792 bits (~0.886 MiBit) |
1111
| Status | planned |
1212

1313
## Goal
14-
Increment the non-power-of-two outer-dimension ladder by one rung to `[451][2]^6 Pt`, keeping the established inner-dimension (`2^6`) and struct (`Pt { x : i16, y : i16 }`) pattern. Validate that t27c still lowers, simulates, cocotb-matches, and seals the wider packed vector without compiler or FROZEN_HASH changes.
14+
Increment the non-power-of-two outer-dimension ladder by one rung to `[453][2]^6 Pt`, keeping the established inner-dimension (`2^6`) and struct (`Pt { x : i16, y : i16 }`) pattern. Validate that t27c still lowers, simulates, cocotb-matches, and seals the wider packed vector without compiler or FROZEN_HASH changes.
1515

1616
## Acceptance criteria
17-
- [ ] Generator `scripts/gen_w816.py` with `OUTER = 451`, `MID_IDX = 225`; copy hazard fixed before first run.
18-
- [ ] Witness `specs/scratch/w816_bench_module_451x2p6_aos_var_call_write.t27` generated and parsed.
17+
- [ ] Generator `scripts/gen_w817.py` with `OUTER = 453`, `MID_IDX = 226`; copy hazard fixed before first run.
18+
- [ ] Witness `specs/scratch/w817_bench_module_453x2p6_aos_var_call_write.t27` generated and parsed.
1919
- [ ] `t27c icarus-lowerable`, `icarus-simulate`, `icarus-cocotb`, and `seal --save` all PASS.
20-
- [ ] Integration test `accepts_w816_bench_module_451x2p6_aos_var_call_write` added to `bootstrap/tests/icarus_lowerable.rs`.
20+
- [ ] Integration test `accepts_w817_bench_module_453x2p6_aos_var_call_write` added to `bootstrap/tests/icarus_lowerable.rs`.
2121
- [ ] `bootstrap/stage0/FROZEN_HASH` unchanged.
2222
- [ ] Closeout report, next-wave plan, docs, skill tracker, autopilot skill, and persistent memory updated.
23-
- [ ] Commit with `Closes #1561`, push branch, open PR to `master`.
23+
- [ ] Commit with `Closes #1563`, push branch, open PR to `master`.
2424

25-
## Cooperation variants for W817
26-
- **A (recommended):** `[453][2]^6 Pt`, outer += 2, MID_IDX = 226.
27-
- **B:** `[451][3]^6 Pt` — grow the second inner dimension to stress stride scaling.
28-
- **C:** `[451][2]^6 Pt` with negative-index writes to exercise wrap-around addressing.
25+
## Cooperation variants for W818
26+
- **A (recommended):** `[455][2]^6 Pt`, outer += 2, MID_IDX = 227.
27+
- **B:** `[453][3]^6 Pt` — grow the second inner dimension to stress stride scaling.
28+
- **C:** `[453][2]^6 Pt` with negative-index writes to exercise wrap-around addressing.

.trinity/current_task/activity.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3940,3 +3940,7 @@
39403940
- **Commit:** docs: update Wave Loop tracker and NOW.md with W814 PR #1556
39413941
- **Files:** .claude/plans/wave-loop-816.md,.claude/skills/t27-wave-loop.md,.claude/skills/wave-loop-autopilot.md,.trinity/current-issue.md,.trinity/current_task/.commit_count,.trinity/current_task/session_log.jsonl,.trinity/experience.md,.trinity/seals/scratch_w815_bench_module_449x2p6_aos_var_call_write.json,bootstrap/tests/icarus_lowerable.rs,docs/NOW.md,docs/reports/FPGA_LOOP_CLOSEOUT_W815_2026-07-29.md,scripts/gen_w815.py,specs/scratch/w815_bench_module_449x2p6_aos_var_call_write.t27
39423942

3943+
## 2026-07-29T15:14:24Z — wave-loop-816
3944+
- **Commit:** feat(igla): Wave Loop 815 — module-scope [449][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes
3945+
- **Files:** .claude/plans/wave-loop-817.md,.claude/skills/t27-wave-loop.md,.claude/skills/wave-loop-autopilot.md,.trinity/current-issue.md,.trinity/experience.md,.trinity/seals/scratch_w816_bench_module_451x2p6_aos_var_call_write.json,bootstrap/tests/icarus_lowerable.rs,docs/NOW.md,docs/reports/FPGA_LOOP_CLOSEOUT_W816_2026-07-29.md,scripts/gen_w816.py,specs/scratch/w816_bench_module_451x2p6_aos_var_call_write.t27
3946+

.trinity/experience.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,67 @@
1+
## 2026-07-29 — Wave Loop 816 (module-scope `[451][2]^6 Pt` non-power-of-two outer-dimension AoS variable, issue #1561)
2+
3+
### What worked
4+
- Variant A extended the module-scope packed AoS odd outer-dimension ladder to 451.
5+
The `[451][2]^6 Pt` witness is 923,648 bits (~0.881 MiBit), still well under the 4-MiBit
6+
cliff, and required no compiler changes.
7+
- A module-level `pub var dst : [451][2]^6 Pt` can be initialized from a function
8+
call and exercised with indexed signed field writes, with zero compiler changes.
9+
- The cocotb/Python reference model correctly mirrored the row-major flattening
10+
with outer stride 451, confirming the layout is preserved end-to-end.
11+
- Reused the corrected W632 element-index formula for mid-row expected values:
12+
`[r][a5][a4][a3][a2][a1][a0]` is element `r*64 + a5*32 + a4*16 + a3*8 + a2*4 + a1*2 + a0`.
13+
- For `OUTER = 451`, `MID_IDX = 225`; the frame-condition element is
14+
`[225][1][0][0][0][0][0]`, element number `225*64 + 32 = 14,432`.
15+
- The generator copy hazard struck again after copying `scripts/gen_w815.py` →
16+
`scripts/gen_w816.py`. Both the destination path and the module header f-string
17+
carried stale `w815` / `449` references. Fixing both before regenerating resolved it.
18+
The stale `MID_IDX` comment was also corrected to `225`.
19+
This is the same hazard documented in W782–W815 learnings and remains the only
20+
manual step in the otherwise mechanical flow.
21+
- Fresh weak-point audit (2026-07-29) found no new actionable items. The W783 fix
22+
for `bootstrap/tests/verilog_const_array.rs:166` remains green; the pre-existing
23+
`verilog_array_literal_expr` regression is still out of scope for the witness ladder.
24+
- 30-day subject-line traceability remained low; the closeout commit carries
25+
`Closes #1561` in the subject, but the overall rate needs improvement.
26+
Continue putting issue references in commit subjects.
27+
- Updated the live Wave Loop Tracker in `.claude/skills/t27-wave-loop.md` to wave 817.
28+
- Updated `.claude/skills/wave-loop-autopilot.md` to mark W816 READY, W817 planned,
29+
and refreshed the master run-list.
30+
31+
### What changed behavior
32+
- No changes to `bootstrap/src/compiler.rs`.
33+
- No changes to `bootstrap/stage0/FROZEN_HASH` (`68a0b933c00ba5efd7facb5997f00880c3eecae55e6ac5e8cea2aee399b92adc`).
34+
- No changes to `scripts/cocotb_ref_model.py`.
35+
- Added `specs/scratch/w816_bench_module_451x2p6_aos_var_call_write.t27` (~1,981 KB /
36+
~85,751 lines) with seal and Icarus baseline.
37+
- Added integration test `accepts_w816_bench_module_451x2p6_aos_var_call_write`
38+
in `bootstrap/tests/icarus_lowerable.rs`.
39+
- Added generator script `scripts/gen_w816.py`.
40+
- Wrote `docs/reports/FPGA_LOOP_CLOSEOUT_W816_2026-07-29.md` and
41+
`.claude/plans/wave-loop-817.md` with three cooperation variants.
42+
- Updated `.claude/skills/t27-wave-loop.md` live tracker to wave 817.
43+
44+
### Validation
45+
- `cargo build --release -p t27c`: OK.
46+
- `cargo clippy -p t27c`: OK (780 warnings, 0 errors).
47+
- `cargo test -p t27c --bin t27c`: 1494 passed; 0 failed; 2 ignored.
48+
- `cargo test -p tri`: 78 passed; 0 failed.
49+
- `cargo test -p flash-spi`: 2 passed; 0 failed.
50+
- `cargo test -p t27c --test bitnet_pipeline`: 20 passed; 0 failed.
51+
- `cargo test -p t27c --test bitnet_top`: 17 passed; 0 failed.
52+
- `cargo test -p t27c --test icarus_lowerable`: 276 passed; 0 failed.
53+
- `cargo test -p t27c --test verilog_const_array`: 2 passed; 0 failed.
54+
- Direct `t27c parse` W816: PASS.
55+
- Direct `t27c icarus-lowerable` W816: PASS (`lowerable`).
56+
- Direct `t27c icarus-simulate` W816: PASS (17 cycles, PASSED).
57+
- Direct `t27c icarus-cocotb` W816: PASS (`reference-model OK`).
58+
- Direct `t27c seal --save` W816: PASS.
59+
60+
### Scientific / engineering background
61+
- IEEE 1800-2017 §7.4.1/7.4.3 define packed-array width as the product of packed
62+
dimensions, with no power-of-two restriction. Variant A emits a single
63+
923,648-bit packed vector, which is legal SystemVerilog.
64+
165
## 2026-07-29 — Wave Loop 815 (module-scope `[449][2]^6 Pt` non-power-of-two outer-dimension AoS variable, issue #1559)
266

367
### What worked
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"gen_hash_c": "sha256:abe188a8c4ed5d8f25b9239402044ff3fa430a2d716e73dd9b0c3a2981355433",
3+
"gen_hash_rust": "sha256:5542dd7f724ea206dae19f60b1aaa663ec05e656d2a21426e1d1e6f0a1842e9e",
4+
"gen_hash_verilog": "sha256:2f6834b9b2c0451b2fe93202634d4e50797f4fd21bb623c6b243f2893e9b9ab4",
5+
"gen_hash_zig": "sha256:ed2ba719fb2b7f2b65df422880b0baa8b1aff0f8c879e477d25adbea9f191b0b",
6+
"module": "w816_bench_module_451x2p6_aos_var_call_write",
7+
"ring": 12,
8+
"sealed_at": "2026-07-29T15:06:38Z",
9+
"spec_hash": "sha256:d287ffda33e77a6a2904a933ce111c3cd0a7851332fcf01cfe569fde627ce1a0",
10+
"spec_path": "/Users/playra/t27/specs/scratch/w816_bench_module_451x2p6_aos_var_call_write.t27"
11+
}

bootstrap/tests/icarus_lowerable.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4981,6 +4981,24 @@ fn accepts_w815_bench_module_449x2p6_aos_var_call_write() {
49814981
}
49824982
}
49834983

4984+
#[test]
4985+
fn accepts_w816_bench_module_451x2p6_aos_var_call_write() {
4986+
let dir = scratch_dir();
4987+
for name in &[
4988+
"w816_bench_module_451x2p6_aos_var_call_write.t27",
4989+
] {
4990+
let p = dir.join(name);
4991+
assert!(p.exists(), "missing W816 witness {}", p.display());
4992+
let (lowerable, json) = run_icarus_lowerable(&p);
4993+
assert!(
4994+
lowerable,
4995+
"expected {} to be lowerable, got: {}",
4996+
p.display(),
4997+
json
4998+
);
4999+
}
5000+
}
5001+
49845002
#[test]
49855003
fn accepts_known_lowerable_witnesses() {
49865004
let dir = scratch_dir();

0 commit comments

Comments
 (0)