diff --git a/PLAN.md b/PLAN.md index d85de7a..d2530ed 100644 --- a/PLAN.md +++ b/PLAN.md @@ -21,7 +21,7 @@ - [ ] **State:** In progress — the package-native capped xtask entry point is reachable, rejects unknown packages, propagates mutest failure, and mutation-tests `hemx-axum`, `hemx-core`, `hemx-js`, and the full `hemx-test` package cleanly; full package closure remains. - **User value:** maintainers can run one bounded repository command and trust that meaningful Rust logic across every mutation-applicable library is either killed or explicitly justified. - **Build:** add a capped `hemx-xtask` mutation command that invokes `/opt/repositories/mutest`/`mutest` through package-native test targets rather than the broken workspace-wide example path; enumerate only current mutation-applicable library/proc-macro packages; finish adversarial tests or simplify code until every survivor is classified; keep equivalent, invariant-only, and infrastructure-inapplicable classifications inspectable and minimal; document the exact local release command in the existing readiness surface. -- **Blocked by:** none; broad survivors currently remain in `hemx-build`, `hemx-derive`, and `hemx-lsp` outside already-clean focused contracts. The mutation entry point now accepts validated native `SHARD/TOTAL` operands with shard-specific output directories while preserving the unsharded gate. The shard wrapper now correctly maps one-based public numbering to mutest's zero-based native API and grants repo-owned compiler-probe tests a 120-second per-mutant floor instead of reporting false timeouts. Corrected `hemx-build` shards `1/8` through `4/8` are covered. Shard `4/8` exceeded the command limit as one run, so its two deterministic hash partitions passed as `4/16` (82 mutants: 59 caught, 23 unviable) and `12/16` (82 mutants: 70 caught, 12 unviable); together they exactly cover native shard `3/8`. Shards `5/8` through `8/8` remain. The complete 470-mutant `hemx-axum` package gate now passes with 262 caught and 208 unviable after public page/form/multipart/registry/response/runtime proofs and narrow classification of infallible header parsing and streamed multipart unwrap-equivalent mutants. +- **Blocked by:** none; broad survivors currently remain in `hemx-build`, `hemx-derive`, and `hemx-lsp` outside already-clean focused contracts. The mutation entry point now accepts validated native `SHARD/TOTAL` operands with shard-specific output directories while preserving the unsharded gate. The shard wrapper now correctly maps one-based public numbering to mutest's zero-based native API and grants repo-owned compiler-probe tests a 120-second per-mutant floor instead of reporting false timeouts. Corrected `hemx-build` shards `1/8` through `5/8` are covered. Shard `5/8` was interrupted before a final receipt, so its two deterministic hash partitions passed as `5/16` (82 mutants: 78 caught, 4 unviable) and `13/16` (82 mutants: 68 caught, 14 unviable); together they exactly cover native shard `4/8`. Shards `6/8` through `8/8` remain. The complete 470-mutant `hemx-axum` package gate now passes with 262 caught and 208 unviable after public page/form/multipart/registry/response/runtime proofs and narrow classification of infallible header parsing and streamed multipart unwrap-equivalent mutants. - **Proof:** the new xtask mutation command exits zero within its documented bound, covers each applicable package, emits no unexplained missed mutant, and a deliberate adjacent mutation makes it fail. `cargo run -p hemx-xtask -- test` remains green. req: test/020 req: test/021 ## 3. Elect and enforce the release license policy