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
- Clearly differentiate between "factual conflicts" and "hypothetical conflicts" on data access (Hypothetical and factual archetypes: unifying our data access checks #3119).
- Ensure that the former requires a specific world, while the latter does not.
- 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
Problem
Detecting system order ambiguities should be entirely agnostic to the world that we're running on.
However, schedules (well,
SystemStagefor now) must be initialized on a specificWorld(taking&mut World) before we can check for ambiguities, or the whole thing panics.Proposed solution
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