# Roadmap

Everything on this page is coming, not shipped. Each item is an open issue in the [medici-finance/assay](https://github.com/medici-finance/assay/issues) tracker; follow the link for its current state. The rest of this site documents only what released muhar does today.

## Speed

| Item | Issue |
|---|---|
| Cut the build cost of each mutant: overlay the mutated file instead of copying the tree, share the build cache across workers safely, and size `-j` from measurements rather than a fixed cap. | [assay#2635](https://github.com/medici-finance/assay/issues/2635) |
| Coverage-guided test selection: run only the tests that reach the mutated code, instead of the whole suite per mutant. | [assay#2636](https://github.com/medici-finance/assay/issues/2636) |
| A diff-scoped mode, `-diff`, that runs only the mutations whose files a change touches. | [assay#2640](https://github.com/medici-finance/assay/issues/2640) |

## Install and CI

| Item | Issue |
|---|---|
| A standalone muhar README and a one-line install that fetches muhar alone, not the whole desk-tools bundle. | [assay#2638](https://github.com/medici-finance/assay/issues/2638) |
| A reusable CI composite action: install a pinned muhar, run a sharded sweep, apply the `Totals:` gate. | [assay#2642](https://github.com/medici-finance/assay/issues/2642) |

Until these land, use the [release bundle](install.md#release) and the [CI recipes](ci.md).

## Verdicts

| Item | Issue |
|---|---|
| Report a mutant that does not compile as unviable instead of `CAUGHT`, and add a per-mutant timeout. | [assay#2639](https://github.com/medici-finance/assay/issues/2639) |

## Known issues

These are defects in released muhar. Each page that is affected says so where it matters.

| Issue | Effect today | Workaround |
|---|---|---|
| [assay#2641](https://github.com/medici-finance/assay/issues/2641) | `SIGINT` or `SIGTERM` exits 130 without restoring the file under test (sequential runs) or removing worker copies (`-j` above 1). | Run on a clean tree; after an interrupt, check `git status` and the temp directory ([signals](internals.md#signals)). |
| [assay#2643](https://github.com/medici-finance/assay/issues/2643) | An absolute `file` with `-j` above 1 edits the original tree while the suite runs in a copy, giving false `NOT_CAUGHT` verdicts. | Use relative `file` paths ([spec reference](spec.md#absolute-paths)). |
| [assay#2644](https://github.com/medici-finance/assay/issues/2644) | A flag-parse error exits 2, the same status as `HARNESS BROKEN`. | Fail on any non-zero exit; a flag error prints nothing on stdout ([exit codes](output.md#exit-codes)). |
| [assay#1382](https://github.com/medici-finance/assay/issues/1382) | With `-j 4`, a spec has been seen to report false `COULD_NOT_MUTATE` for entries that `-j 1` plants and catches. The cause is not fully diagnosed; the worker copies appear to lack files the spec names. | Treat a `COULD_NOT_MUTATE` from a parallel run as suspect and confirm it with `-j 1`; keep every file the spec names and the suite reads under `root`. |

---

Source of this page: https://muhar.assay.guide/roadmap
