You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TODO.md
+10-1Lines changed: 10 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1668,7 +1668,16 @@ Work on tasks defined in TODO.md. Repeat the following steps, don’t stop until
1668
1668
-[x]*done* Single-crate reprobe removed the deterministic 27.29.2 runtime head at `/home/shuai/git/rusty-cpp/include/rusty/ptr.hpp:119` + `/home/shuai/git/rusty-cpp/include/rusty/mem.hpp:86`; new deterministic first hard error now starts from `arrayvec` range-bound visit return-shape mismatch (`runner.cpp:968` / `std::visit` return-type unification), with immediate adjacent fallout at `runner.cpp:973` (slice pointer shape mismatch), and additional downstream move-only/runtime fallout at `/home/shuai/git/rusty-cpp/include/rusty/result.hpp:72` + `/home/shuai/git/rusty-cpp/include/rusty/ptr.hpp:132`.
1669
1669
-[x]*done* Canonical artifacts for this leaf’s reprobe are at `/tmp/rusty-parity-27-30-1-20260407-001026/arrayvec/{baseline.txt,build.log,run.log,matrix.log}`.
1670
1670
-[x]*done* Guardrail check against wrong-approach section (`docs/rusty-cpp-transpiler.md` §11): fixes stayed in shared runtime surfaces, avoided crate-specific scripts/post-generation rewrites, and preserved deterministic first-head artifact capture.
1671
-
-[ ] Leaf 4.15.4.3.3.3.3.3.27.30.2: Re-run full seven-crate parity matrix after 27.30.1, record first deterministic failure head with canonical artifacts, and update active-frontier docs/TODO status (or mark Leaf 4 complete if all seven pass).
1671
+
-[x]*done* Leaf 4.15.4.3.3.3.3.3.27.30.2: Re-run full seven-crate parity matrix after 27.30.1, record first deterministic failure head with canonical artifacts, and update active-frontier docs/TODO status (or mark Leaf 4 complete if all seven pass).
1672
+
-[x]*done* Plan/scope check: rerun-and-documentation leaf only (no implementation delta); expected change size stayed well below the <1000 LOC guardrail, so no additional decomposition was required.
1673
+
-[x]*done* Re-ran full seven-crate parity matrix (`tests/transpile_tests/run_parity_matrix.sh --work-root /tmp/rusty-parity-matrix-27-30-2-20260407-001457 --keep-work-dirs`) after 27.30.1: deterministic first failure remains `arrayvec` Stage D (`total=5`, `pass=4`, `fail=1`), with canonical artifacts at `/tmp/rusty-parity-matrix-27-30-2-20260407-001457/arrayvec/{baseline.txt,build.log,run.log,matrix.log}`.
1674
+
-[x]*done* Recorded post-27.30.2 deterministic Stage D head family from `arrayvec` build: first hard error now starts at `runner.cpp:968` (`ArrayVec::drain` range-bound `std::visit` return-type mismatch across bound alternatives), with immediate adjacent fallout at `runner.cpp:973` (incorrect pointer-shape assumption: `const auto* range_slice` vs `rusty::slice(...)` span result), then downstream dependent families including `/home/shuai/git/rusty-cpp/include/rusty/result.hpp:72` default-construction of non-default-constructible `Err` payloads and `/home/shuai/git/rusty-cpp/include/rusty/ptr.hpp:132` move-assignment requirement in `ptr::write`.
1675
+
-[x]*done* Verification for 27.30.2 status update:
-[x]*done* Guardrail check against wrong-approach section (`docs/rusty-cpp-transpiler.md` §11): maintained deterministic first-head discipline and canonical artifact capture, and did not introduce crate-specific rewrites/scripts.
1678
+
-[ ] Leaf 4.15.4.3.3.3.3.3.27.31: Collapse the post-27.30.2 deterministic Stage D drain range-bound visitor/slice pointer-shape family generically (starting with `runner.cpp:968``std::visit` return-type mismatch and adjacent `runner.cpp:973``const auto*` slice pointer assumption), add fixture-agnostic regressions, then re-run full seven-crate matrix.
1679
+
-[ ] Leaf 4.15.4.3.3.3.3.3.27.31.1: Implement generic transpiler/runtime fixes for the first deterministic 27.30.2 head (no crate-specific scripts): normalize `ArrayVec::drain` bound-visit return-shape/type unification and slice-range materialization so generated code does not assume pointer surfaces where span/slice values are produced.
1680
+
-[ ] Leaf 4.15.4.3.3.3.3.3.27.31.2: Re-run full seven-crate parity matrix after 27.31.1, record first deterministic failure head with canonical artifacts, and update active-frontier docs/TODO status (or mark Leaf 4 complete if all seven pass).
1672
1681
-[ ] Leaf 5: Verification matrix (required)
1673
1682
-[x]*done* Add an integration parity matrix test that runs `parity-test --stop-after run` for `either`, `tap`, `cfg-if`, `take_mut`, `arrayvec`, `semver`, and `bitflags`
1674
1683
-[x]*done* Added `tests/transpile_tests/run_parity_matrix.sh`: matrix harness with crate list/version pins matching the integration set; default mode runs each crate through `cargo run -p rusty-cpp-transpiler -- parity-test --stop-after run` using per-crate work dirs
- guardrail check against wrong-approach checklist (§11): fixes remained in shared runtime surfaces, avoided crate-specific scripts/post-generation rewrites, and preserved deterministic first-head artifact capture.
2898
-
91. Current active next leaf is `Leaf 4.15.4.3.3.3.3.3.27.30.2`.
2899
-
- focus: run the full seven-crate matrix and record the new deterministic first-failing head family/artifacts after 27.30.1.
2898
+
91.`Leaf 4.15.4.3.3.3.3.3.27.30.2` is complete.
2899
+
- plan/scope check: rerun/documentation-only leaf with no implementation changes; work stayed well below the <1000 LOC threshold and required no further decomposition.
2900
+
- full seven-crate matrix rerun (`tests/transpile_tests/run_parity_matrix.sh --work-root /tmp/rusty-parity-matrix-27-30-2-20260407-001457 --keep-work-dirs`) remains deterministic with first failing crate `arrayvec` (`total=5`, `pass=4`, `fail=1`).
- deterministic first hard error now starts at `runner.cpp:968`: `ArrayVec::drain` bound-visitor `std::visit` alternatives do not unify to one return type; immediate adjacent fallout appears at `runner.cpp:973` where generated `const auto* range_slice` assumes pointer shape while `rusty::slice((*this), start, end)` yields a span/slice value.
2903
+
- downstream dependent families remain (for example `/home/shuai/git/rusty-cpp/include/rusty/result.hpp:72` default-construction of non-default-constructible `Err` payload and `/home/shuai/git/rusty-cpp/include/rusty/ptr.hpp:132` move-assignment requirement in `ptr::write`).
- guardrail check against wrong-approach checklist (§11): maintained deterministic first-head + canonical-artifact workflow and introduced no crate-specific rewrites/scripts.
2907
+
92. Current active next leaf is `Leaf 4.15.4.3.3.3.3.3.27.31.1`.
2908
+
- focus: implement shared transpiler/runtime normalization for `drain` bound-visit return-shape unification and slice materialization pointer-shape correctness, then reprobe `arrayvec`.
2900
2909
2901
2910
### 10.7 Parity Harness and Matrix Command Reference
2902
2911
@@ -2997,6 +3006,7 @@ Required approach:
2997
3006
- for runtime `Option`/`Result` match lowering, do not fall back to `std::visit` for nested binding-only payload patterns (for example `Err(Type { .. })`); keep dispatch on runtime helper surfaces (`is_err`/`unwrap_err`, `is_ok`/`unwrap`)
2998
3007
- for pointer helper calls (`ptr::read`, hole/reference storage APIs), do not cast value expressions directly to pointer aliases; emit address-of forms (`&expr`) before pointer-typed adaptation
2999
3008
- for runtime move-transfer helpers (`ptr::read`, `mem::replace`, `ptr::write`), do not rely on copy-return or copy-assignment fallbacks that require copyable payloads; preserve move-only behavior with move-out/placement-style reconstruction in shared runtime paths
3009
+
- for range-bound visitor lowering (`start_bound`/`end_bound` in `drain`-style code), do not emit mixed return categories across `std::visit` alternatives and do not force slice helper results into pointer declarators (`const auto*`) when runtime helpers return span/slice values; unify return/value shapes from local type context first
3000
3010
- for raw-pointer helper/receiver lowering (`as_ptr`/`as_mut_ptr`, `ptr::add`/`ptr::offset`), do not preserve storage-pointer pointee shapes when call context expects payload pointers; propagate expected pointer context and adapt pointee shape explicitly
3001
3011
- for runtime pointer helpers on `MaybeUninit`-backed storage (`as_ptr`/`as_mut_ptr`), do not expose wrapper-element pointers to payload-facing slice/read APIs; normalize helper results to payload pointers (`T*`/`const T*`) via shared runtime adaptation instead of crate-local rewrites
3002
3012
- for repeat/collection construction lowering, do not globally force fixed-array materialization from repeat helpers; gate array-vs-vector lowering on explicit expected-type/fixed-capacity context
0 commit comments