Skip to content

Commit ffbcbfe

Browse files
Dmitrii Vasilevclaude
andcommitted
feat(igla): Wave Loop 799 — module-scope [417][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes
Closes #1527 - Witness: specs/scratch/w799_bench_module_417x2p6_aos_var_call_write.t27 (26,688 elements, 854,016-bit packed vector, ~0.814 MiBit) - Generator: scripts/gen_w799.py (copy-hazard fixed before regeneration) - Seal, Icarus lowerable/simulate/cocotb all green; FROZEN_HASH unchanged - Validation matrix: cargo build/clippy/test suites green; icarus_lowerable 259/0 - Closeout report + Wave Loop 800 plan with three cooperation variants - Skills, experience, and persistent memory updated Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent df8ebc5 commit ffbcbfe

11 files changed

Lines changed: 79929 additions & 11 deletions

File tree

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

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Wave Loop 800 Plan — Variant A (recommended)
2+
3+
**Date:** 2026-07-24
4+
**Anchor:** φ² + φ⁻² = 3 | TRINITY
5+
**Branch:** `wave-loop-800` (to be created from `wave-loop-799` HEAD because earlier wave PRs remain open)
6+
**Issue:** TBD (next available GitHub issue after W799 PR is opened)
7+
**Cooperation variant:** A
8+
9+
## Goal
10+
11+
Continue the module-scope packed array-of-struct ladder with the recommended Variant A shape: module-scope `[419][2]^6 Pt` initialized from a function call and exercised with indexed signed field writes, then read back with `assert_eq` in a `bench` block.
12+
13+
## Acceptance criteria
14+
15+
1. `specs/scratch/w800_bench_module_419x2p6_aos_var_call_write.t27` is generated and parses.
16+
2. The witness is Icarus-lowerable and simulates correctly (17 cycles, PASSED).
17+
3. The cocotb reference model matches the t27 semantics.
18+
4. `t27c seal --save` succeeds and `FROZEN_HASH` stays unchanged.
19+
5. All cargo suites remain green.
20+
6. Integration test `accepts_w800_bench_module_419x2p6_aos_var_call_write` is added to `bootstrap/tests/icarus_lowerable.rs`.
21+
7. Closeout report `docs/reports/FPGA_LOOP_CLOSEOUT_W800_2026-07-24.md` is written with weak-point audit, literature scan, and validation matrix.
22+
8. Next-wave plan `.claude/plans/wave-loop-801.md` with three cooperation variants is created.
23+
9. Learning is saved to `.trinity/experience.md`, `.claude/skills/t27-wave-loop.md`, persistent memory, and `.trinity/current-issue.md`.
24+
25+
## Technical notes
26+
27+
- Shape: `[419][2]^6 Pt` where `Pt = pub struct Pt { x : i16, y : i16 }`.
28+
- Total elements: `419 x 64 = 26,816`.
29+
- Packed vector width: `26,816 x 32 = 858,112` bits (~0.818 MiBit).
30+
- `MID_IDX = 209`; frame-condition element `[209][1][0][0][0][0][0]` is element number `209*64 + 32 = 13,408`.
31+
- Generator script `scripts/gen_w800.py` should be copied from `scripts/gen_w799.py`, update `OUTER = 419` and `MID_IDX = 209`, and fix the destination path and hardcoded module prefix in the f-string header.
32+
- Use `assert_eq` on changed elements (`assert_ne` is not emitted by the Icarus simulation path).
33+
- Include `make_grid(32768)` period-identity check because `32768 == 0 (mod 32768)`.
34+
- Zero compiler / reference-model / FROZEN_HASH changes expected for the witness.
35+
36+
## Decomposition
37+
38+
### Phase A — Branch setup (5 min)
39+
1. Create `wave-loop-800` from `wave-loop-799` HEAD because earlier wave PRs remain open.
40+
2. Open next GitHub issue when ready.
41+
42+
### Phase B — Spec + generator (15 min)
43+
3. Copy `scripts/gen_w799.py` to `scripts/gen_w800.py`.
44+
4. Update `OUTER = 419`, `MID_IDX = 209`, fix destination path and module prefix.
45+
5. Run generator to produce `specs/scratch/w800_bench_module_419x2p6_aos_var_call_write.t27`.
46+
6. Verify module name and destination path have no stale `w799` / `417` references.
47+
48+
### Phase C — Test + validation (45 min)
49+
7. Add integration test `accepts_w800_bench_module_419x2p6_aos_var_call_write` to `bootstrap/tests/icarus_lowerable.rs`.
50+
8. `cargo build --release -p t27c`.
51+
9. `t27c parse`, `icarus-lowerable`, `icarus-simulate` (expected 17 cycles), `icarus-cocotb` on the W800 witness.
52+
10. `t27c seal --save` the witness; confirm `FROZEN_HASH` unchanged.
53+
11. `cargo test -p t27c --bin t27c`, `cargo test -p tri`, `cargo test -p t27c --test icarus_lowerable`, `cargo test -p t27c --test verilog_const_array`.
54+
12. `cargo clippy -p t27c`.
55+
56+
### Phase D — Closeout + cooperation variants (30 min)
57+
13. Write `docs/reports/FPGA_LOOP_CLOSEOUT_W800_2026-07-24.md` with audit, literature, validation, and three W801 cooperation variants.
58+
14. Update `docs/NOW.md` and `.trinity/current-issue.md`.
59+
60+
### Phase E — Save skills + memory (15 min)
61+
15. Append W800 worked example to `.claude/skills/t27-wave-loop.md`.
62+
16. Update `.trinity/experience.md`.
63+
17. Save memory file `wave-loop-800.md` and pointer in `MEMORY.md`.
64+
65+
## Cooperation variants for Wave Loop 801
66+
67+
- **Variant A (recommended):** continue odd outer-dimension ladder with `[421][2]^6 Pt` (~0.822 MiBit, 26,944 elements, 862,208-bit packed vector). Zero compiler changes expected.
68+
- **Variant B:** keep `[419][2]^6 Pt` width but move the packed var to bench/function scope to exercise function-local non-power-of-two packed arrays.
69+
- **Variant C:** keep `[419][2]^6 Pt` width and add `if`-guarded indexed signed field writes to exercise control-flow + packed-vector writes.
70+
71+
## Exit criteria
72+
73+
- W800 witness parses, lowers, simulates, cocotb-matches, and seals.
74+
- All cargo suites green.
75+
- Closeout report written.
76+
- `.trinity/experience.md` updated.
77+
- Skills and memory saved.
78+
- Commit with `Closes #N`, push `wave-loop-800`, open PR.
79+
80+
*φ² + φ⁻² = 3 | TRINITY*

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,6 +1579,47 @@ grepping for stale wave numbers and outer dimensions after each copy, keep the
15791579
`make_grid(32768)` period-identity check, and use `assert_eq` on changed elements
15801580
because `assert_ne` is not emitted by the Icarus simulation path.
15811581

1582+
## Worked example — Wave Loop 799
1583+
1584+
Wave Loop 799 continued the module-scope packed-array-of-struct ladder with no
1585+
compiler changes, branching from `wave-loop-798` HEAD because earlier wave PRs
1586+
remained open awaiting review:
1587+
1588+
- Generated `scripts/gen_w799.py` from `scripts/gen_w798.py` with `OUTER = 417`
1589+
and `MID_IDX = 208`.
1590+
- Fixed both the generator destination path and the module header f-string from
1591+
stale `w798` / `415` references to `w799_bench_module_417x2p6_aos_var_call_write`
1592+
before regenerating.
1593+
- Produced `specs/scratch/w799_bench_module_417x2p6_aos_var_call_write.t27`
1594+
(26,688 elements, 854,016-bit packed vector, ~0.814 MiBit).
1595+
- Added integration test `accepts_w799_bench_module_417x2p6_aos_var_call_write`
1596+
after the existing W798 tests in `bootstrap/tests/icarus_lowerable.rs`.
1597+
- Ran `t27c parse`, `icarus-lowerable`, `icarus-simulate` (17 cycles, PASSED),
1598+
`icarus-cocotb` (reference-model OK), and `t27c seal --save`.
1599+
- No changes to `bootstrap/src/compiler.rs`, `bootstrap/stage0/FROZEN_HASH`, or
1600+
`scripts/cocotb_ref_model.py` for the witness itself.
1601+
- Validation: `cargo build --release -p t27c` green,
1602+
`cargo clippy -p t27c` green (780 warnings, 0 errors),
1603+
`cargo test -p t27c --bin t27c` 1494/0/2, `cargo test -p tri` 78/0,
1604+
`cargo test -p flash-spi` 2/0,
1605+
`cargo test -p t27c --test bitnet_pipeline` 20/0,
1606+
`cargo test -p t27c --test bitnet_top` 17/0,
1607+
`cargo test -p t27c --test icarus_lowerable` 259/0,
1608+
`cargo test -p t27c --test verilog_const_array` 2/0.
1609+
- Refreshed weak-point audit and 2025–2026 ternary/MVL literature scan.
1610+
- Wrote `docs/reports/FPGA_LOOP_CLOSEOUT_W799_2026-07-24.md` and
1611+
`.claude/plans/wave-loop-800.md` with three cooperation variants.
1612+
1613+
Key learning: the mechanical ladder is now 27 waves deep (W774–W799) with zero
1614+
compiler changes, confirming the packed-vector AoS lowering is robust up to at
1615+
least `[417][2]^6 Pt` (26,688 elements, ~0.814 MiBit). The generator copy hazard
1616+
continues to be the only manual failure mode, and it now spans two distinct text
1617+
locations (destination path + module header f-string). A single parameterized
1618+
wave-prefix variable in the generator template would eliminate both. Continue
1619+
grepping for stale wave numbers and outer dimensions after each copy, keep the
1620+
`make_grid(32768)` period-identity check, and use `assert_eq` on changed elements
1621+
because `assert_ne` is not emitted by the Icarus simulation path.
1622+
15821623
---
15831624

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

.trinity/current-issue.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
1-
# Current Issue — Wave Loop 799 setup
1+
# Current Issue — Wave Loop 800 setup
22

33
**Date:** 2026-07-24
44
**Anchor:** φ² + φ⁻² = 3 | TRINITY
55

66
## Active wave
77

8-
- **Wave:** 799
9-
- **Issue:** TBD (open after W798 PR is created)
10-
- **Branch:** `wave-loop-799` (to create from `wave-loop-798` HEAD because earlier PRs remain open)
11-
- **Plan:** `.claude/plans/wave-loop-799.md`
12-
- **Recommended variant:** A — module-scope `[417][2]^6 Pt` packed array-of-struct variable from call with indexed signed writes.
8+
- **Wave:** 800
9+
- **Issue:** TBD (open after W799 PR is created)
10+
- **Branch:** `wave-loop-800` (to create from `wave-loop-799` HEAD because earlier PRs remain open)
11+
- **Plan:** `.claude/plans/wave-loop-800.md`
12+
- **Recommended variant:** A — module-scope `[419][2]^6 Pt` packed array-of-struct variable from call with indexed signed writes.
1313

1414
## Goal
1515

16-
Continue the odd outer-dimension module-scope packed array-of-struct ladder with `[417][2]^6 Pt`.
17-
Expected 26,688 elements, 854,016-bit packed vector (~0.814 MiBit), still under the 4-MiBit cliff,
16+
Continue the odd outer-dimension module-scope packed array-of-struct ladder with `[419][2]^6 Pt`.
17+
Expected 26,816 elements, 858,112-bit packed vector (~0.818 MiBit), still under the 4-MiBit cliff,
1818
with zero compiler / reference-model / FROZEN_HASH changes.
1919

2020
## Acceptance criteria
2121

22-
1. `specs/scratch/w799_bench_module_417x2p6_aos_var_call_write.t27` is generated and parses.
22+
1. `specs/scratch/w800_bench_module_419x2p6_aos_var_call_write.t27` is generated and parses.
2323
2. Icarus-lowerable, simulates (17 cycles, PASSED), and cocotb reference-model matches.
2424
3. `t27c seal --save` succeeds and `FROZEN_HASH` stays unchanged.
2525
4. All cargo suites green.
2626
5. Integration test added to `bootstrap/tests/icarus_lowerable.rs`.
27-
6. Closeout report written with weak-point audit, literature scan, and three W800 cooperation variants.
27+
6. Closeout report written with weak-point audit, literature scan, and three W801 cooperation variants.
2828
7. Skills and experience saved.
2929

3030
## Notes
3131

32-
- Copy `scripts/gen_w798.py` to `scripts/gen_w799.py`, update `OUTER = 417` and `MID_IDX = 208`, and fix the destination path/module header copy hazard before generating.
32+
- Copy `scripts/gen_w799.py` to `scripts/gen_w800.py`, update `OUTER = 419` and `MID_IDX = 209`, and fix the destination path/module header copy hazard before generating.
3333
- Use `assert_eq` on changed elements; `assert_ne` is not emitted by the Icarus simulation path.
3434
- Keep the `make_grid(32768)` period-identity check because `32768 ≡ 0 (mod 32768)`.
3535

.trinity/current_task/activity.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3860,3 +3860,11 @@
38603860
- **Commit:** feat(igla): Wave Loop 798 — module-scope [415][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes
38613861
- **Files:** docs/NOW.md,docs/reports/FPGA_LOOP_CLOSEOUT_W798_2026-07-24.md
38623862

3863+
## 2026-07-25T10:57:14Z — wave-loop-799
3864+
- **Commit:** docs(trinity): Wave Loop 798 closeout — record session state and commit count
3865+
- **Files:** .claude/plans/wave-loop-800.md,.claude/skills/t27-wave-loop.md,.trinity/current-issue.md,.trinity/experience.md,.trinity/seals/scratch_w799_bench_module_417x2p6_aos_var_call_write.json,bootstrap/tests/icarus_lowerable.rs,docs/NOW.md,docs/reports/FPGA_LOOP_CLOSEOUT_W799_2026-07-24.md,scripts/gen_w799.py,specs/scratch/w799_bench_module_417x2p6_aos_var_call_write.t27
3866+
3867+
## 2026-07-25T10:58:58Z — wave-loop-799
3868+
- **Commit:** feat(igla): Wave Loop 799 — module-scope [417][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes
3869+
- **Files:** docs/NOW.md,docs/reports/FPGA_LOOP_CLOSEOUT_W799_2026-07-24.md
3870+

.trinity/experience.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,107 @@
1+
## 2026-07-24 — Wave Loop 799 (module-scope `[417][2]^6 Pt` non-power-of-two outer-dimension AoS variable, issue #1527)
2+
3+
### What worked
4+
- Variant A extended the module-scope packed AoS odd outer-dimension ladder to 417.
5+
The `[417][2]^6 Pt` witness is 854,016 bits (~0.814 MiBit), still well under the 4-MiBit
6+
cliff, and required no compiler changes.
7+
- A module-level `pub var dst : [417][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 417, 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 = 417`, `MID_IDX = 208`; the frame-condition element is
14+
`[208][1][0][0][0][0][0]`, element number `208*64 + 32 = 13,344`.
15+
- The generator copy hazard struck again: both the destination path and the module
16+
header f-string in `scripts/gen_w799.py` carried stale `w798` / `415` references
17+
after copying from W798. Fixing both before regenerating resolved it. This is the same
18+
hazard documented in W782–W798 learnings and remains the only manual step in the
19+
otherwise mechanical flow.
20+
- Fresh weak-point audit (2026-07-24) found no new actionable items. The W783 fix
21+
for `bootstrap/tests/verilog_const_array.rs:166` remains green; the pre-existing
22+
`verilog_array_literal_expr` regression is still out of scope for the witness ladder.
23+
- 30-day subject-line traceability remained low; the closeout commit carries
24+
`Closes #1527` in the subject, but the overall rate needs improvement.
25+
Continue putting issue references in commit subjects.
26+
27+
### What changed behavior
28+
- No changes to `bootstrap/src/compiler.rs`.
29+
- No changes to `bootstrap/stage0/FROZEN_HASH` (`68a0b933c00ba5efd7facb5997f00880c3eecae55e6ac5e8cea2aee399b92adc`).
30+
- No changes to `scripts/cocotb_ref_model.py`.
31+
- Added `specs/scratch/w799_bench_module_417x2p6_aos_var_call_write.t27` (~1,829 KB /
32+
~79,291 lines) with seal and Icarus baseline.
33+
- Added integration test `accepts_w799_bench_module_417x2p6_aos_var_call_write`
34+
in `bootstrap/tests/icarus_lowerable.rs`.
35+
- Added generator script `scripts/gen_w799.py`.
36+
- Wrote `docs/reports/FPGA_LOOP_CLOSEOUT_W799_2026-07-24.md` and
37+
`.claude/plans/wave-loop-800.md` with three cooperation variants.
38+
39+
### Validation
40+
- `cargo build --release -p t27c`: OK.
41+
- `cargo clippy -p t27c`: OK (780 warnings, 0 errors).
42+
- `cargo test -p t27c --bin t27c`: 1494 passed; 0 failed; 2 ignored.
43+
- `cargo test -p tri`: 78 passed; 0 failed.
44+
- `cargo test -p flash-spi`: 2 passed; 0 failed.
45+
- `cargo test -p t27c --test bitnet_pipeline`: 20 passed; 0 failed.
46+
- `cargo test -p t27c --test bitnet_top`: 17 passed; 0 failed.
47+
- `cargo test -p t27c --test icarus_lowerable`: 259 passed; 0 failed.
48+
- `cargo test -p t27c --test verilog_const_array`: 2 passed; 0 failed.
49+
- Direct `t27c parse` W799: PASS.
50+
- Direct `t27c icarus-lowerable` W799: PASS (`lowerable`).
51+
- Direct `t27c icarus-simulate` W799: PASS (17 cycles, PASSED).
52+
- Direct `t27c icarus-cocotb` W799: PASS (`reference-model OK`).
53+
- Direct `t27c seal --save` W799: PASS.
54+
55+
### Scientific / engineering background
56+
- IEEE 1800-2017 §7.4.1/7.4.3 define packed-array width as the product of packed
57+
dimensions, with no power-of-two restriction. Variant A emits a single
58+
854,016-bit packed vector, which is legal SystemVerilog.
59+
- Lutsig's verified array lowering and CIRCT's `HWLegalizeModules` show that
60+
flattening nested arrays to wide packed vectors is a well-founded compiler
61+
discipline, even when outer dimensions are non-power-of-two.
62+
- Icarus issue #1134 documents assertion failures for unpacked arrays of packed
63+
structs; t27's scalar flattening avoids that construct entirely.
64+
- Yosys issue #2677 / #4653 confirm that arrays of packed structs remain
65+
unsupported in the native frontend; t27's packed-vector lowering avoids the
66+
gap.
67+
- Recent 2025–2026 ternary/MVL literature reinforces that flattening ternary
68+
aggregate data to wide binary packed vectors is a pragmatic, toolchain-compatible
69+
path while native MVL fabrics mature:
70+
- IEEE Access 2025: An RTL-Based General Synthesis Methodology for
71+
Device-Independent Ternary Logic Circuits.
72+
- Chinese Journal of Electronics 2026: Tlsys, an RTL-to-CNFET ternary synthesis
73+
framework for 500k+ gate designs.
74+
- IEEE Access 2025: A Generalized Multiple-Valued FPGA Architecture Based on
75+
Improved T-Gate Circuit.
76+
- 2026 IEEE ISMVL: Ternary VHDL, a balanced ternary extension to IEEE 1076-2008.
77+
- arXiv 2025: TerEffic, highly efficient ternary LLM inference on FPGA.
78+
- Zenodo 2026: Trinity B002, zero-DSP FPGA architecture for ternary inference.
79+
- GitHub 2026: Vericert v2.0.0, a formally verified HLS tool based on CompCert,
80+
whose scheduler uses a validated three-valued logic checker.
81+
82+
### Patterns to reuse
83+
- Use a non-power-of-two outer dimension under the 4-MiBit cliff to test layout
84+
correctness while keeping simulation fast.
85+
- Keep signed-i16 leaf values inside range with `(2*e + offset) % 32768` for
86+
any element count ≤ 163,840.
87+
- Reuse the W589 wholesale module-scope initializer path for any scalar-struct
88+
array shape; no new compiler work is needed until the wall-clock limit is hit.
89+
- Prefer `assert_eq` over `assert_ne` in Icarus-lowerable simulation blocks;
90+
`assert_ne` is accepted by the classifier but not lowered by the simulation
91+
emitter.
92+
- When computing expected values for deep packed-array indices, convert the full
93+
row-major LSB-first element index explicitly rather than guessing inner-dimension
94+
offsets.
95+
- Parameterizing the wave prefix and destination path inside the generator template
96+
would eliminate the recurring copy hazard; until then, grep for both the old wave
97+
number and the old outer dimension after copying a generator and before the first
98+
generation.
99+
100+
### Anti-patterns to avoid
101+
- Do not use single-line literals for >1,000 element initializers; the scanner
102+
becomes the bottleneck.
103+
- Do not rely on `assert_ne` being emitted for Icarus simulation.
104+
1105
## 2026-07-24 — Wave Loop 798 (module-scope `[415][2]^6 Pt` non-power-of-two outer-dimension AoS variable, issue #1525)
2106

3107
### 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:b6e616c90f0627e61f22522ed7676ef0a56b2c74dc6f3a205612d0c165ac3528",
3+
"gen_hash_rust": "sha256:62db96e9c378828f6e70cc937802669dd52fa4666a19a199fc8601b5da653666",
4+
"gen_hash_verilog": "sha256:e5e341f899c76df7567f8dc3a434fbc8a61d4e676331c6a156c6bae08f5da073",
5+
"gen_hash_zig": "sha256:3be6caed0960f9458f23b5a02218c106551cea26f929565dab0e8bf4d50f9f22",
6+
"module": "w799_bench_module_417x2p6_aos_var_call_write",
7+
"ring": 12,
8+
"sealed_at": "2026-07-25T10:52:18Z",
9+
"spec_hash": "sha256:6e1334ac2213b43e24c3379f5cd781e781e581b8a609065ec7e2fc2b56e24819",
10+
"spec_path": "/Users/playra/t27/specs/scratch/w799_bench_module_417x2p6_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
@@ -4675,6 +4675,24 @@ fn accepts_w798_bench_module_415x2p6_aos_var_call_write() {
46754675
}
46764676
}
46774677

4678+
#[test]
4679+
fn accepts_w799_bench_module_417x2p6_aos_var_call_write() {
4680+
let dir = scratch_dir();
4681+
for name in &[
4682+
"w799_bench_module_417x2p6_aos_var_call_write.t27",
4683+
] {
4684+
let p = dir.join(name);
4685+
assert!(p.exists(), "missing W799 witness {}", p.display());
4686+
let (lowerable, json) = run_icarus_lowerable(&p);
4687+
assert!(
4688+
lowerable,
4689+
"expected {} to be lowerable, got: {}",
4690+
p.display(),
4691+
json
4692+
);
4693+
}
4694+
}
4695+
46784696
#[test]
46794697
fn accepts_known_lowerable_witnesses() {
46804698
let dir = scratch_dir();

0 commit comments

Comments
 (0)