Skip to content

New challenge: Progress Public MIR - #592

Open
dkcumming wants to merge 5 commits into
model-checking:mainfrom
runtimeverification:challenge_public_mir
Open

New challenge: Progress Public MIR #592
dkcumming wants to merge 5 commits into
model-checking:mainfrom
runtimeverification:challenge_public_mir

Conversation

@dkcumming

@dkcummingdkcumming commented Apr 24, 2026

Copy link
Copy Markdown

#595

This PR proposes a new challenge to progress Public MIR's API stability.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.

@dkcumming
dkcumming requested a review from a team as a code ownerApril 24, 2026 01:04
@feliperodrifeliperodri added the Challenge Proposal Used to tag a challenge proposal PR / Issue label May 11, 2026
@feliperodri
feliperodri requested a review from CopilotMay 11, 2026 22:14

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a new “Challenge 30” document describing a time-boxed effort to improve Public MIR (rustc_public) API stability/usability for verification tooling, and links it from the doc summary.

Changes:

  • Added a new challenge write-up: “Progressing Public MIR for verification tool infrastructure”.
  • Documented motivation, scope, success criteria, and correctness criteria for upstreaming missing rustc_public coverage.
  • Updated the documentation summary to include challenges 28–30.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 7 comments.

FileDescription
doc/src/challenges/0030-progress-public-mir.mdNew challenge document detailing goals/scope/criteria for improving Public MIR for verification tools.
doc/src/SUMMARY.mdAdds navigation entries for challenges 28–30, including the new challenge 30.

Comment threaddoc/src/challenges/0030-progress-public-mir.md Outdated
Comment threaddoc/src/challenges/0030-progress-public-mir.md Outdated
Comment threaddoc/src/challenges/0030-progress-public-mir.md Outdated
Comment threaddoc/src/challenges/0030-progress-public-mir.md Outdated
Comment threaddoc/src/challenges/0030-progress-public-mir.md Outdated
Comment threaddoc/src/challenges/0030-progress-public-mir.md Outdated
Comment threaddoc/src/SUMMARY.md Outdated
@palinatolmach

Copy link
Copy Markdown

@feliperodri similarly to #595, I've addressed the previous comments, so this PR is ready for another review. Please let us know if there's anything we can do to assist the review process.

@feliperodrifeliperodri left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@palinatolmach Thanks for this! The topic is squarely in scope. The book classifies the effort into three areas, and this fits area 1 ("contributing to the core mechanism of verifying the Rust standard library"). Progressing rustc_public so tools stop round-tripping through rustc_internal is a real, well-motivated source of fragility for Kani/KMIR, and the write-up is unusually clear and honest about the risks.

My hesitation is entirely about verifiability, since this challenge's deliverables live upstream in rust-lang/rust and in workgroup discussion rather than in Kani harnesses that pass in this repo's CI. I've left inline notes on the success criteria. Net: I support adding it, provided we (a) explicitly acknowledge it as a non-standard infrastructure challenge that takes the acceptance-criteria exception to the "automated, CI-checked solution" requirement, and (b) add at least one objective floor so "resolved" is adjudicable. The rest are minor.

[project-stable-mir](https://github.com/rust-lang/project-stable-mir)
workgroup.

### Success Criteria

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The general-rules.md Solution Requirements state a solution is only reviewed if it "must be automated and should be checked and pass as part of the PR checks." Criteria A–C here are inherently subjective/best-effort ("convert as many … as is feasible", "a blocker presented with analysis counts toward the criterion") and can't be evaluated by CI, only D is CI-anchored. That's not disqualifying: the book allows exceptions "if it is specified as part of the acceptance criteria of the challenge being solved." Could we add an explicit sentence here stating this challenge intentionally takes that exception (infrastructure challenge, deliverables are upstream PRs + design analysis, not repo-local proofs)? That makes the departure deliberate rather than an oversight a future reviewer trips over.

API-surface and tool-integration deliverables rather than per-function
safety contracts.

**A. Time-boxed, best-effort migration.** Within the engagement, convert as

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because A–C are best-effort, two committee members could reasonably disagree on whether a submission "resolved" the challenge and this will eventually carry a reward. Consider adding a minimal concrete floor here, e.g. "at least N of the named consumer shims (e.g., Kani internal_mir.rs, stable-mir-json) are either removed via a merged upstream PR or catalogued with a taxonomy under criterion C." An objective anchor keeps adjudication (and the reward decision) tractable without removing the flexibility the rest of the criterion needs.

Comment on lines +117 to +119
- Solutions are landed upstream in `rust-lang/rust` via the
[project-stable-mir](https://github.com/rust-lang/project-stable-mir)
workgroup.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth making explicit that completion depends on the project-stable-mir](https://github.com/rust-lang/project-stable-mir) workgroup reaching consensus... something the solver doesn't control, and which the Motivation itself notes "has historically blocked some conversions." I think the criterion-A/C "taxonomy counts as a deliverable" escape hatch is the right mitigation; I'd just call it out here so a solver understands upfront that blocked-but-well-analysed work is an accepted outcome, and so the reward committee is comfortable rewarding design/analysis output rather than only merged code.

Comment on lines +166 to +170
**D. Verification-tool CI still passes.** At least one verification tool
used in this repository's CI (Kani, or KMIR once integrated) is rebuilt
against a toolchain carrying the changes, with all of its proofs for the
currently-resolved challenges still succeeding. This ensures the
stabilisation work does not regress existing verification results.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocker: CI with any verification tool that has been integrated into the contest can be broken. You can bypass a tool if your approach is design to specific tools, but it cannot broke any tool in CI.

@@ -0,0 +1,191 @@
# Challenge 30: Progressing Public MIR for verification tool infrastructure

- **Status:** *Open*

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: other challenge files use a plain Open here; the italics/asterisks are leftover template placeholder styling. (Also, Start/End dates... don't worry about the TBDs; we're planning to drop those fields from the template entirely, so you can remove them completley as well.)

Comment threaddoc/src/SUMMARY.md
Comment on lines +45 to +46
- [28: Verify float to decimal conversion module](./challenges/0028-flt2dec.md)
- [29: Safety of Boxed Types](./challenges/0029-boxed.md)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!!!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Challenge ProposalUsed to tag a challenge proposal PR / Issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@dkcumming@palinatolmach@feliperodri