Skip to content

Merging latest master into feature/p-token#994

Closed
mariaKt wants to merge 6 commits intofeature/p-tokenfrom
master
Closed

Merging latest master into feature/p-token#994
mariaKt wants to merge 6 commits intofeature/p-tokenfrom
master

Conversation

@mariaKt
Copy link
Collaborator

@mariaKt mariaKt commented Mar 18, 2026

  • Update dependency: deps/stable-mir-json_release 966
  • docs: streamline README and improve CLI --help descriptions 979
  • fix(kmir.md): handle projected operandMove callees 983
  • Collapse prove-rs into prove 986
  • Added volatile_load intrinsic 987
  • test(stable-mir-ui): add external UI test harness with skip management 968

rv-jenkins and others added 6 commits March 9, 2026 17:56
Co-authored-by: devops <devops@runtimeverification.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel Cumming <124537596+dkcumming@users.noreply.github.com>
## Summary

**README.md:**
- Consolidate repeated setup instructions (rustup, git clone, submodule
init) into a single Quick Start section
- Replace verbose per-command CLI documentation with a command table —
detailed options available via `--help`
- Add "Typical proof workflow" section showing the prove → show →
inspect cycle
- Add "Debugging a stuck or failing proof" section covering
`--break-on-*` flags, `section-edge`, `prune`, and module export/import
- Reduce README from ~245 lines to ~163 lines with no information loss

**CLI `--help` improvements (`__main__.py`):**
- `run`: clarify `--bin` (cargo target) vs `--file` (SMIR JSON) mutual
exclusivity; `--depth` → "execution steps"
- `prove-rs`: `--max-depth` explains KCFG edge semantics; `--reload`
warns about discarding progress; `--break-on-function` clarifies
substring matching
- `show`: `--full-printer` notes default is compact; `--minimize-proof`
notes dependency on `--to-module`; `--rules` describes Markdown link
output; `--node-deltas-pro` documents auto-printing rules
- `prune`: `NODE` explains subtree removal
- `section-edge`: clearer edge format description
- `info --types`: documents output format and behavior when omitted
- `link --output-file`: shows default value

## Test plan

- [x] Verify `--help` output renders correctly for all subcommands
- [x] README renders correctly on GitHub
## Summary

Fix call dispatch for projected `operandMove` callees.
When the callee is reached through `projectionElemDeref`, `kmir` was not
computing the effective callee correctly, which left the proof stuck.
This PR adds a regression for that case and updates call dispatch to use
the projected place type, allowing the repro to run through to
`#EndProgram`.

## Testing

Validated as a `red -> partial green -> green` series with:

```bash
make test-integration TEST_ARGS="-k spl-multisig-iter-eq-copied-next-fail"
```

Each commit in the final branch passes that scoped command on the remote
validation workspace:

- `86074df5` `test(integration): add spl-multisig iter-eq copied next
repro`
- `f04e1656` `fix(call): match projected operandMove callees`
- `ceb4a2a0` `fix(call): compute projected callee types through to
EndProgram`

---------

Co-authored-by: automergerpr-permission-manager[bot] <190534181+automergerpr-permission-manager[bot]@users.noreply.github.com>
Collapse `prove-rs` into `prove`:
- ProveRSOpts merged into ProveOpts
- `kmir prove` is the primary command (`prove-rs` kept as alias for
backwards compatibility)
- adds `parsed_smir` option for programmatic use (useful for tests with
many start symbols like #985)
This PR adds the
[volatile_load](https://doc.rust-lang.org/std/intrinsics/fn.volatile_load.html)
intrinsic. For this semantics, memory being "volatile" is meaningless as
the we are not compiling any further, and aren't modeling any compiler
optimisations that could occur if we were to. Therefore this is
implemented as a simple dereference of the pointer and read of the value
at the location into the destination.
#968)

## Summary

- Add parametrized pytest harness running `kmir prove-rs` against every
entry in `stable-mir-json`'s `passing.tsv`
- Ship `skip.txt` (2859 entries) for known-failing cases, with
`--update-skip` mode to shrink it by re-proving skipped cases
- 300s per-test timeout via `pytest-timeout`; proof show output saved to
`tmp_path` on failure

## Usage

```bash
# Normal run (skipped cases are skipped)
RUST_DIR_ROOT=/path/to/rust make test-stable-mir-ui

# Shrink skip.txt by re-proving skipped cases
RUST_DIR_ROOT=/path/to/rust make test-stable-mir-ui TEST_ARGS="--update-skip"
```

## Test plan

- [x] `make check` passes (B011 lint fixed)
- [x] Single squashed commit, rebased on `origin/master`

---------

Co-authored-by: Daniel Cumming <124537596+dkcumming@users.noreply.github.com>
Co-authored-by: dkcumming <daniel.cumming@runtimeverification.com>
@mariaKt
Copy link
Collaborator Author

mariaKt commented Mar 18, 2026

Closed in favor of #996

@mariaKt mariaKt closed this Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants