Detecting system order ambiguities requires a specific world
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
# Problem
Detecting system order ambiguities should be entirely agnostic to the world that we're running on.
However, schedules (well, `SystemStage` for now) must be initialized on a specific `World` (taking `&mut World`) before we can check for ambiguities, or the whole thing panics.
## Proposed solution
1. Clearly differentiate between "factual conflicts" and "hypothetical conflicts" on data access (#3119).
2. Ensure that the former requires a specific world, while the latter does not.
3. Compute system execution order ambiguities using only hypothetical conflicts.
## Additional context
Discovered in #4299, as this makes exposing useful APIs and writing tests substantially harder than it should.
#1481 needs to take this design into account: we'll need to pass in the archetype invariants to the methods that compute hypothetical invariants
Contributor guide
Assessment
This issue has not been assessed yet.