nmarshall commited on
Commit
a9e35cf
·
1 Parent(s): 3c27f25

gameplay: port spawn overlap query boundary

Browse files
crates/urt-gameplay/src/bin/urt-native-policy.rs CHANGED
@@ -99,6 +99,40 @@ fn run() -> Result<String, String> {
99
  list(&c.iter().map(|v| *v as u32).collect::<Vec<_>>())
100
  ))
101
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  _ => Err("unknown command".into()),
103
  }
104
  }
 
99
  list(&c.iter().map(|v| *v as u32).collect::<Vec<_>>())
100
  ))
101
  }
102
+ "overlap" => {
103
+ if w.len() < 11 {
104
+ return Err("missing overlap input".into());
105
+ }
106
+ let n = w[10] as usize;
107
+ if n > 1024 || w.len() != 11 + 2 * n {
108
+ return Err("invalid overlap input".into());
109
+ }
110
+ let origin = std::array::from_fn(|j| f32::from_bits(w[j]));
111
+ let bounds = std::array::from_fn(|half| {
112
+ std::array::from_fn(|j| f32::from_bits(w[3 + half * 3 + j]))
113
+ });
114
+ let query = spawn_box(origin, bounds).map_err(|e| format!("{e:?}"))?;
115
+ let indices = w[11..11 + n]
116
+ .iter()
117
+ .map(|v| *v as usize)
118
+ .collect::<Vec<_>>();
119
+ let mut clients = vec![0; 1024];
120
+ for (j, v) in indices.iter().zip(&w[11 + n..]) {
121
+ if *j >= clients.len() {
122
+ return Err("invalid entity index".into());
123
+ }
124
+ clients[*j] = *v;
125
+ }
126
+ let blocked =
127
+ spawn_overlap(&indices, w[9] as i32, &clients).map_err(|e| format!("{e:?}"))?;
128
+ Ok(format!(
129
+ "{{\"queries\":[{{\"mins\":{},\"maxs\":{},\"capacity\":{}}}],\"result\":{}}}",
130
+ list(&query.mins.map(f32::to_bits)),
131
+ list(&query.maxs.map(f32::to_bits)),
132
+ query.capacity,
133
+ u32::from(blocked)
134
+ ))
135
+ }
136
  _ => Err("unknown command".into()),
137
  }
138
  }
crates/urt-gameplay/src/native_policy.rs CHANGED
@@ -206,3 +206,67 @@ mod post_tests {
206
  assert!(!called);
207
  }
208
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  assert!(!called);
207
  }
208
  }
209
+
210
+ #[derive(Clone, Copy, Debug, PartialEq)]
211
+ pub struct SpawnBox {
212
+ pub mins: [f32; 3],
213
+ pub maxs: [f32; 3],
214
+ pub capacity: usize,
215
+ }
216
+ pub fn spawn_box(origin: [f32; 3], bounds: [[f32; 3]; 2]) -> Result<SpawnBox, Error> {
217
+ if origin
218
+ .iter()
219
+ .chain(bounds.iter().flatten())
220
+ .any(|v| !v.is_finite())
221
+ {
222
+ return Err(Error::NonFinite);
223
+ }
224
+ let mins = std::array::from_fn(|j| origin[j] + bounds[0][j]);
225
+ let maxs = std::array::from_fn(|j| origin[j] + bounds[1][j]);
226
+ if mins.iter().chain(maxs.iter()).any(|v| !v.is_finite()) {
227
+ return Err(Error::NonFinite);
228
+ }
229
+ Ok(SpawnBox {
230
+ mins,
231
+ maxs,
232
+ capacity: 1024,
233
+ })
234
+ }
235
+ /// Inspect supplied spatial-query results. A client pointer alone gates overlap.
236
+ /// A negative count follows the original empty-loop path. Malformed positive
237
+ /// results reject before scanning, rather than reading outside the entity pool.
238
+ pub fn spawn_overlap(indices: &[usize], count: i32, client_words: &[u32]) -> Result<bool, Error> {
239
+ let n = count.max(0) as usize;
240
+ if n > 1024 || n > indices.len() {
241
+ return Err(Error::InvalidCount);
242
+ }
243
+ if indices[..n].iter().any(|j| *j >= client_words.len()) {
244
+ return Err(Error::InvalidIndex);
245
+ }
246
+ Ok(indices[..n].iter().any(|j| client_words[*j] != 0))
247
+ }
248
+ #[cfg(test)]
249
+ mod overlap_tests {
250
+ use super::*;
251
+ #[test]
252
+ fn capacity_and_invalid_index_reject() {
253
+ assert_eq!(spawn_overlap(&[0], 2, &[1]), Err(Error::InvalidCount));
254
+ assert_eq!(spawn_overlap(&[1], 1, &[1]), Err(Error::InvalidIndex));
255
+ assert_eq!(spawn_overlap(&[1], -1, &[]), Ok(false));
256
+ assert_eq!(spawn_overlap(&[0], 1, &[u32::MAX]), Ok(true));
257
+ }
258
+ #[test]
259
+ fn nonfinite_and_overflow_bounds_reject() {
260
+ assert_eq!(
261
+ spawn_box([f32::NAN, 0., 0.], [[0.; 3]; 2]),
262
+ Err(Error::NonFinite)
263
+ );
264
+ assert_eq!(
265
+ spawn_box([f32::MAX; 3], [[f32::MAX; 3]; 2]),
266
+ Err(Error::NonFinite)
267
+ );
268
+ let b = spawn_box([0.; 3], [[-15., -15., -24.], [15., 15., 32.]]).unwrap();
269
+ assert_eq!(b.capacity, 1024);
270
+ assert_eq!(b.mins, [-15., -15., -24.]);
271
+ }
272
+ }
docs/FINDINGS.md CHANGED
@@ -1640,3 +1640,6 @@ RE-813–822 replaces the scoreboard decimal assumption with actual37914 executi
1640
 
1641
 
1642
  **RE-880:** 32 actual167638 cases recover f32 origin-plus-six-source-bounds construction, native -33 box query with capacity1024 and returned-index iteration. Any entity with nonzero client pointer at offset520 blocks the spawn; other activity/health/team flags are not tested here. Covers duplicate indices, negative/zero query counts, signed/nonzero client words, f32 rounding and a client at result1024. Engine spatial query answers remain supplied; invalid engine counts/indices and nonfinite bounds are excluded. [Evidence](research/QVM_SPAWN_OVERLAP.md).
 
 
 
 
1640
 
1641
 
1642
  **RE-880:** 32 actual167638 cases recover f32 origin-plus-six-source-bounds construction, native -33 box query with capacity1024 and returned-index iteration. Any entity with nonzero client pointer at offset520 blocks the spawn; other activity/health/team flags are not tested here. Covers duplicate indices, negative/zero query counts, signed/nonzero client words, f32 rounding and a client at result1024. Engine spatial query answers remain supplied; invalid engine counts/indices and nonfinite bounds are excluded. [Evidence](research/QVM_SPAWN_OVERLAP.md).
1643
+
1644
+
1645
+ **RE-881:** Rust matches all32 original167638 box/query/filter cases, including the full1024-result scan and f32 rounding. The API separates box construction from supplied engine indices, rejects nonfinite/overflow bounds and malformed positive counts/indices, and tests client-pointer nonzero alone. Actual collision broadphase and integration into fallback selection remain open. [Evidence](research/RUST_SPAWN_OVERLAP.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1668,3 +1668,6 @@ RE-879: Rust matches all72 original249007 schedules and state snapshots, includi
1668
 
1669
 
1670
  RE-880: 32 actual167638 cases recover f32 origin-plus-six-source-bounds construction, native -33 box query with capacity1024 and returned-index iteration. Any entity with nonzero client pointer at offset520 blocks the spawn; other activity/health/team flags are not tested here. Covers duplicate indices, negative/zero query counts, signed/nonzero client words, f32 rounding and a client at result1024. Engine spatial query answers remain supplied; invalid engine counts/indices and nonfinite bounds are excluded. Full runtime completion remains open. [Evidence](research/QVM_SPAWN_OVERLAP.md).
 
 
 
 
1668
 
1669
 
1670
  RE-880: 32 actual167638 cases recover f32 origin-plus-six-source-bounds construction, native -33 box query with capacity1024 and returned-index iteration. Any entity with nonzero client pointer at offset520 blocks the spawn; other activity/health/team flags are not tested here. Covers duplicate indices, negative/zero query counts, signed/nonzero client words, f32 rounding and a client at result1024. Engine spatial query answers remain supplied; invalid engine counts/indices and nonfinite bounds are excluded. Full runtime completion remains open. [Evidence](research/QVM_SPAWN_OVERLAP.md).
1671
+
1672
+
1673
+ RE-881: Rust matches all32 original167638 box/query/filter cases, including the full1024-result scan and f32 rounding. The API separates box construction from supplied engine indices, rejects nonfinite/overflow bounds and malformed positive counts/indices, and tests client-pointer nonzero alone. Actual collision broadphase and integration into fallback selection remain open. Full runtime completion remains open. [Evidence](research/RUST_SPAWN_OVERLAP.md).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2105,3 +2105,8 @@ Rust matches all72 original249007 schedules and state snapshots, including disco
2105
  ## 2026-10-28 — RE-880 Original spawn overlap query and client filter
2106
 
2107
  32 actual167638 cases recover f32 origin-plus-six-source-bounds construction, native -33 box query with capacity1024 and returned-index iteration. Any entity with nonzero client pointer at offset520 blocks the spawn; other activity/health/team flags are not tested here. Covers duplicate indices, negative/zero query counts, signed/nonzero client words, f32 rounding and a client at result1024. Engine spatial query answers remain supplied; invalid engine counts/indices and nonfinite bounds are excluded. Focused `cargo xtask test-group qvm-spawn-overlap` passes (4 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
 
 
 
 
 
 
2105
  ## 2026-10-28 — RE-880 Original spawn overlap query and client filter
2106
 
2107
  32 actual167638 cases recover f32 origin-plus-six-source-bounds construction, native -33 box query with capacity1024 and returned-index iteration. Any entity with nonzero client pointer at offset520 blocks the spawn; other activity/health/team flags are not tested here. Covers duplicate indices, negative/zero query counts, signed/nonzero client words, f32 rounding and a client at result1024. Engine spatial query answers remain supplied; invalid engine counts/indices and nonfinite bounds are excluded. Focused `cargo xtask test-group qvm-spawn-overlap` passes (4 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
2108
+
2109
+
2110
+ ## 2026-10-28 — RE-881 Rust spawn overlap boundary
2111
+
2112
+ Rust matches all32 original167638 box/query/filter cases, including the full1024-result scan and f32 rounding. The API separates box construction from supplied engine indices, rejects nonfinite/overflow bounds and malformed positive counts/indices, and tests client-pointer nonzero alone. Actual collision broadphase and integration into fallback selection remain open. Focused `cargo xtask test-group rust-spawn-overlap` passes (9 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1705,3 +1705,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1705
 
1706
 
1707
  - [x] RE-880 Original spawn overlap query and client filter ([evidence](research/QVM_SPAWN_OVERLAP.md)).
 
 
 
 
1705
 
1706
 
1707
  - [x] RE-880 Original spawn overlap query and client filter ([evidence](research/QVM_SPAWN_OVERLAP.md)).
1708
+
1709
+
1710
+ - [x] RE-881 Rust spawn overlap boundary ([evidence](research/RUST_SPAWN_OVERLAP.md)).
docs/research/README.md CHANGED
@@ -1240,3 +1240,6 @@ The extension collector adds five focused tests for native tail calls, command-r
1240
 
1241
 
1242
  [RE-880: Original spawn overlap query and client filter](QVM_SPAWN_OVERLAP.md).
 
 
 
 
1240
 
1241
 
1242
  [RE-880: Original spawn overlap query and client filter](QVM_SPAWN_OVERLAP.md).
1243
+
1244
+
1245
+ [RE-881: Rust spawn overlap boundary](RUST_SPAWN_OVERLAP.md).
docs/research/RUST_SPAWN_OVERLAP.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Rust spawn overlap boundary
2
+
3
+ RE-881. Reproduce with `python3 scripts/analyze_rust_spawn_overlap.py`; focused validation: `cargo xtask test-group rust-spawn-overlap`. [Machine report](rust-spawn-overlap.json).
4
+
5
+ Rust matches all32 original167638 box/query/filter cases, including the full1024-result scan and f32 rounding. The API separates box construction from supplied engine indices, rejects nonfinite/overflow bounds and malformed positive counts/indices, and tests client-pointer nonzero alone. Actual collision broadphase and integration into fallback selection remain open.
6
+
7
+ Original executable/native runtime and complete Linux/macOS Rust/Bevy/Solari acceptance remain unverified.
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 135,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
 
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
+ "rust_unit_tests": 137,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
docs/research/rust-spawn-overlap.json ADDED
@@ -0,0 +1,1223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Rust matches all32 original167638 box/query/filter cases, including the full1024-result scan and f32 rounding. The API separates box construction from supplied engine indices, rejects nonfinite/overflow bounds and malformed positive counts/indices, and tests client-pointer nonzero alone. Actual collision broadphase and integration into fallback selection remain open.",
3
+ "probes": [
4
+ {
5
+ "rust": {
6
+ "queries": [
7
+ {
8
+ "capacity": 1024,
9
+ "maxs": [
10
+ 1101004800,
11
+ 1101004800,
12
+ 1107296256
13
+ ],
14
+ "mins": [
15
+ 3248488448,
16
+ 3248488448,
17
+ 3250585600
18
+ ]
19
+ }
20
+ ],
21
+ "result": 0
22
+ },
23
+ "source": {
24
+ "queries": [
25
+ {
26
+ "capacity": 1024,
27
+ "maxs": [
28
+ 1101004800,
29
+ 1101004800,
30
+ 1107296256
31
+ ],
32
+ "mins": [
33
+ 3248488448,
34
+ 3248488448,
35
+ 3250585600
36
+ ]
37
+ }
38
+ ],
39
+ "result": 0
40
+ }
41
+ },
42
+ {
43
+ "rust": {
44
+ "queries": [
45
+ {
46
+ "capacity": 1024,
47
+ "maxs": [
48
+ 1101004800,
49
+ 1101004800,
50
+ 1107296256
51
+ ],
52
+ "mins": [
53
+ 3248488448,
54
+ 3248488448,
55
+ 3250585600
56
+ ]
57
+ }
58
+ ],
59
+ "result": 0
60
+ },
61
+ "source": {
62
+ "queries": [
63
+ {
64
+ "capacity": 1024,
65
+ "maxs": [
66
+ 1101004800,
67
+ 1101004800,
68
+ 1107296256
69
+ ],
70
+ "mins": [
71
+ 3248488448,
72
+ 3248488448,
73
+ 3250585600
74
+ ]
75
+ }
76
+ ],
77
+ "result": 0
78
+ }
79
+ },
80
+ {
81
+ "rust": {
82
+ "queries": [
83
+ {
84
+ "capacity": 1024,
85
+ "maxs": [
86
+ 1101004800,
87
+ 1101004800,
88
+ 1107296256
89
+ ],
90
+ "mins": [
91
+ 3248488448,
92
+ 3248488448,
93
+ 3250585600
94
+ ]
95
+ }
96
+ ],
97
+ "result": 1
98
+ },
99
+ "source": {
100
+ "queries": [
101
+ {
102
+ "capacity": 1024,
103
+ "maxs": [
104
+ 1101004800,
105
+ 1101004800,
106
+ 1107296256
107
+ ],
108
+ "mins": [
109
+ 3248488448,
110
+ 3248488448,
111
+ 3250585600
112
+ ]
113
+ }
114
+ ],
115
+ "result": 1
116
+ }
117
+ },
118
+ {
119
+ "rust": {
120
+ "queries": [
121
+ {
122
+ "capacity": 1024,
123
+ "maxs": [
124
+ 1101004800,
125
+ 1101004800,
126
+ 1107296256
127
+ ],
128
+ "mins": [
129
+ 3248488448,
130
+ 3248488448,
131
+ 3250585600
132
+ ]
133
+ }
134
+ ],
135
+ "result": 1
136
+ },
137
+ "source": {
138
+ "queries": [
139
+ {
140
+ "capacity": 1024,
141
+ "maxs": [
142
+ 1101004800,
143
+ 1101004800,
144
+ 1107296256
145
+ ],
146
+ "mins": [
147
+ 3248488448,
148
+ 3248488448,
149
+ 3250585600
150
+ ]
151
+ }
152
+ ],
153
+ "result": 1
154
+ }
155
+ },
156
+ {
157
+ "rust": {
158
+ "queries": [
159
+ {
160
+ "capacity": 1024,
161
+ "maxs": [
162
+ 1101004800,
163
+ 1101004800,
164
+ 1107296256
165
+ ],
166
+ "mins": [
167
+ 3248488448,
168
+ 3248488448,
169
+ 3250585600
170
+ ]
171
+ }
172
+ ],
173
+ "result": 0
174
+ },
175
+ "source": {
176
+ "queries": [
177
+ {
178
+ "capacity": 1024,
179
+ "maxs": [
180
+ 1101004800,
181
+ 1101004800,
182
+ 1107296256
183
+ ],
184
+ "mins": [
185
+ 3248488448,
186
+ 3248488448,
187
+ 3250585600
188
+ ]
189
+ }
190
+ ],
191
+ "result": 0
192
+ }
193
+ },
194
+ {
195
+ "rust": {
196
+ "queries": [
197
+ {
198
+ "capacity": 1024,
199
+ "maxs": [
200
+ 1101004800,
201
+ 1101004800,
202
+ 1107296256
203
+ ],
204
+ "mins": [
205
+ 3248488448,
206
+ 3248488448,
207
+ 3250585600
208
+ ]
209
+ }
210
+ ],
211
+ "result": 1
212
+ },
213
+ "source": {
214
+ "queries": [
215
+ {
216
+ "capacity": 1024,
217
+ "maxs": [
218
+ 1101004800,
219
+ 1101004800,
220
+ 1107296256
221
+ ],
222
+ "mins": [
223
+ 3248488448,
224
+ 3248488448,
225
+ 3250585600
226
+ ]
227
+ }
228
+ ],
229
+ "result": 1
230
+ }
231
+ },
232
+ {
233
+ "rust": {
234
+ "queries": [
235
+ {
236
+ "capacity": 1024,
237
+ "maxs": [
238
+ 1101004800,
239
+ 1101004800,
240
+ 1107296256
241
+ ],
242
+ "mins": [
243
+ 3248488448,
244
+ 3248488448,
245
+ 3250585600
246
+ ]
247
+ }
248
+ ],
249
+ "result": 1
250
+ },
251
+ "source": {
252
+ "queries": [
253
+ {
254
+ "capacity": 1024,
255
+ "maxs": [
256
+ 1101004800,
257
+ 1101004800,
258
+ 1107296256
259
+ ],
260
+ "mins": [
261
+ 3248488448,
262
+ 3248488448,
263
+ 3250585600
264
+ ]
265
+ }
266
+ ],
267
+ "result": 1
268
+ }
269
+ },
270
+ {
271
+ "rust": {
272
+ "queries": [
273
+ {
274
+ "capacity": 1024,
275
+ "maxs": [
276
+ 1101004800,
277
+ 1101004800,
278
+ 1107296256
279
+ ],
280
+ "mins": [
281
+ 3248488448,
282
+ 3248488448,
283
+ 3250585600
284
+ ]
285
+ }
286
+ ],
287
+ "result": 0
288
+ },
289
+ "source": {
290
+ "queries": [
291
+ {
292
+ "capacity": 1024,
293
+ "maxs": [
294
+ 1101004800,
295
+ 1101004800,
296
+ 1107296256
297
+ ],
298
+ "mins": [
299
+ 3248488448,
300
+ 3248488448,
301
+ 3250585600
302
+ ]
303
+ }
304
+ ],
305
+ "result": 0
306
+ }
307
+ },
308
+ {
309
+ "rust": {
310
+ "queries": [
311
+ {
312
+ "capacity": 1024,
313
+ "maxs": [
314
+ 1123024896,
315
+ 3265265664,
316
+ 1109655552
317
+ ],
318
+ "mins": [
319
+ 1117782016,
320
+ 3270508544,
321
+ 3245342720
322
+ ]
323
+ }
324
+ ],
325
+ "result": 0
326
+ },
327
+ "source": {
328
+ "queries": [
329
+ {
330
+ "capacity": 1024,
331
+ "maxs": [
332
+ 1123024896,
333
+ 3265265664,
334
+ 1109655552
335
+ ],
336
+ "mins": [
337
+ 1117782016,
338
+ 3270508544,
339
+ 3245342720
340
+ ]
341
+ }
342
+ ],
343
+ "result": 0
344
+ }
345
+ },
346
+ {
347
+ "rust": {
348
+ "queries": [
349
+ {
350
+ "capacity": 1024,
351
+ "maxs": [
352
+ 1123024896,
353
+ 3265265664,
354
+ 1109655552
355
+ ],
356
+ "mins": [
357
+ 1117782016,
358
+ 3270508544,
359
+ 3245342720
360
+ ]
361
+ }
362
+ ],
363
+ "result": 0
364
+ },
365
+ "source": {
366
+ "queries": [
367
+ {
368
+ "capacity": 1024,
369
+ "maxs": [
370
+ 1123024896,
371
+ 3265265664,
372
+ 1109655552
373
+ ],
374
+ "mins": [
375
+ 1117782016,
376
+ 3270508544,
377
+ 3245342720
378
+ ]
379
+ }
380
+ ],
381
+ "result": 0
382
+ }
383
+ },
384
+ {
385
+ "rust": {
386
+ "queries": [
387
+ {
388
+ "capacity": 1024,
389
+ "maxs": [
390
+ 1123024896,
391
+ 3265265664,
392
+ 1109655552
393
+ ],
394
+ "mins": [
395
+ 1117782016,
396
+ 3270508544,
397
+ 3245342720
398
+ ]
399
+ }
400
+ ],
401
+ "result": 1
402
+ },
403
+ "source": {
404
+ "queries": [
405
+ {
406
+ "capacity": 1024,
407
+ "maxs": [
408
+ 1123024896,
409
+ 3265265664,
410
+ 1109655552
411
+ ],
412
+ "mins": [
413
+ 1117782016,
414
+ 3270508544,
415
+ 3245342720
416
+ ]
417
+ }
418
+ ],
419
+ "result": 1
420
+ }
421
+ },
422
+ {
423
+ "rust": {
424
+ "queries": [
425
+ {
426
+ "capacity": 1024,
427
+ "maxs": [
428
+ 1123024896,
429
+ 3265265664,
430
+ 1109655552
431
+ ],
432
+ "mins": [
433
+ 1117782016,
434
+ 3270508544,
435
+ 3245342720
436
+ ]
437
+ }
438
+ ],
439
+ "result": 1
440
+ },
441
+ "source": {
442
+ "queries": [
443
+ {
444
+ "capacity": 1024,
445
+ "maxs": [
446
+ 1123024896,
447
+ 3265265664,
448
+ 1109655552
449
+ ],
450
+ "mins": [
451
+ 1117782016,
452
+ 3270508544,
453
+ 3245342720
454
+ ]
455
+ }
456
+ ],
457
+ "result": 1
458
+ }
459
+ },
460
+ {
461
+ "rust": {
462
+ "queries": [
463
+ {
464
+ "capacity": 1024,
465
+ "maxs": [
466
+ 1123024896,
467
+ 3265265664,
468
+ 1109655552
469
+ ],
470
+ "mins": [
471
+ 1117782016,
472
+ 3270508544,
473
+ 3245342720
474
+ ]
475
+ }
476
+ ],
477
+ "result": 0
478
+ },
479
+ "source": {
480
+ "queries": [
481
+ {
482
+ "capacity": 1024,
483
+ "maxs": [
484
+ 1123024896,
485
+ 3265265664,
486
+ 1109655552
487
+ ],
488
+ "mins": [
489
+ 1117782016,
490
+ 3270508544,
491
+ 3245342720
492
+ ]
493
+ }
494
+ ],
495
+ "result": 0
496
+ }
497
+ },
498
+ {
499
+ "rust": {
500
+ "queries": [
501
+ {
502
+ "capacity": 1024,
503
+ "maxs": [
504
+ 1123024896,
505
+ 3265265664,
506
+ 1109655552
507
+ ],
508
+ "mins": [
509
+ 1117782016,
510
+ 3270508544,
511
+ 3245342720
512
+ ]
513
+ }
514
+ ],
515
+ "result": 1
516
+ },
517
+ "source": {
518
+ "queries": [
519
+ {
520
+ "capacity": 1024,
521
+ "maxs": [
522
+ 1123024896,
523
+ 3265265664,
524
+ 1109655552
525
+ ],
526
+ "mins": [
527
+ 1117782016,
528
+ 3270508544,
529
+ 3245342720
530
+ ]
531
+ }
532
+ ],
533
+ "result": 1
534
+ }
535
+ },
536
+ {
537
+ "rust": {
538
+ "queries": [
539
+ {
540
+ "capacity": 1024,
541
+ "maxs": [
542
+ 1123024896,
543
+ 3265265664,
544
+ 1109655552
545
+ ],
546
+ "mins": [
547
+ 1117782016,
548
+ 3270508544,
549
+ 3245342720
550
+ ]
551
+ }
552
+ ],
553
+ "result": 1
554
+ },
555
+ "source": {
556
+ "queries": [
557
+ {
558
+ "capacity": 1024,
559
+ "maxs": [
560
+ 1123024896,
561
+ 3265265664,
562
+ 1109655552
563
+ ],
564
+ "mins": [
565
+ 1117782016,
566
+ 3270508544,
567
+ 3245342720
568
+ ]
569
+ }
570
+ ],
571
+ "result": 1
572
+ }
573
+ },
574
+ {
575
+ "rust": {
576
+ "queries": [
577
+ {
578
+ "capacity": 1024,
579
+ "maxs": [
580
+ 1123024896,
581
+ 3265265664,
582
+ 1109655552
583
+ ],
584
+ "mins": [
585
+ 1117782016,
586
+ 3270508544,
587
+ 3245342720
588
+ ]
589
+ }
590
+ ],
591
+ "result": 0
592
+ },
593
+ "source": {
594
+ "queries": [
595
+ {
596
+ "capacity": 1024,
597
+ "maxs": [
598
+ 1123024896,
599
+ 3265265664,
600
+ 1109655552
601
+ ],
602
+ "mins": [
603
+ 1117782016,
604
+ 3270508544,
605
+ 3245342720
606
+ ]
607
+ }
608
+ ],
609
+ "result": 0
610
+ }
611
+ },
612
+ {
613
+ "rust": {
614
+ "queries": [
615
+ {
616
+ "capacity": 1024,
617
+ "maxs": [
618
+ 1100742656,
619
+ 1101135872,
620
+ 1107230720
621
+ ],
622
+ "mins": [
623
+ 3248750592,
624
+ 3248357376,
625
+ 3250651136
626
+ ]
627
+ }
628
+ ],
629
+ "result": 0
630
+ },
631
+ "source": {
632
+ "queries": [
633
+ {
634
+ "capacity": 1024,
635
+ "maxs": [
636
+ 1100742656,
637
+ 1101135872,
638
+ 1107230720
639
+ ],
640
+ "mins": [
641
+ 3248750592,
642
+ 3248357376,
643
+ 3250651136
644
+ ]
645
+ }
646
+ ],
647
+ "result": 0
648
+ }
649
+ },
650
+ {
651
+ "rust": {
652
+ "queries": [
653
+ {
654
+ "capacity": 1024,
655
+ "maxs": [
656
+ 1100742656,
657
+ 1101135872,
658
+ 1107230720
659
+ ],
660
+ "mins": [
661
+ 3248750592,
662
+ 3248357376,
663
+ 3250651136
664
+ ]
665
+ }
666
+ ],
667
+ "result": 0
668
+ },
669
+ "source": {
670
+ "queries": [
671
+ {
672
+ "capacity": 1024,
673
+ "maxs": [
674
+ 1100742656,
675
+ 1101135872,
676
+ 1107230720
677
+ ],
678
+ "mins": [
679
+ 3248750592,
680
+ 3248357376,
681
+ 3250651136
682
+ ]
683
+ }
684
+ ],
685
+ "result": 0
686
+ }
687
+ },
688
+ {
689
+ "rust": {
690
+ "queries": [
691
+ {
692
+ "capacity": 1024,
693
+ "maxs": [
694
+ 1100742656,
695
+ 1101135872,
696
+ 1107230720
697
+ ],
698
+ "mins": [
699
+ 3248750592,
700
+ 3248357376,
701
+ 3250651136
702
+ ]
703
+ }
704
+ ],
705
+ "result": 1
706
+ },
707
+ "source": {
708
+ "queries": [
709
+ {
710
+ "capacity": 1024,
711
+ "maxs": [
712
+ 1100742656,
713
+ 1101135872,
714
+ 1107230720
715
+ ],
716
+ "mins": [
717
+ 3248750592,
718
+ 3248357376,
719
+ 3250651136
720
+ ]
721
+ }
722
+ ],
723
+ "result": 1
724
+ }
725
+ },
726
+ {
727
+ "rust": {
728
+ "queries": [
729
+ {
730
+ "capacity": 1024,
731
+ "maxs": [
732
+ 1100742656,
733
+ 1101135872,
734
+ 1107230720
735
+ ],
736
+ "mins": [
737
+ 3248750592,
738
+ 3248357376,
739
+ 3250651136
740
+ ]
741
+ }
742
+ ],
743
+ "result": 1
744
+ },
745
+ "source": {
746
+ "queries": [
747
+ {
748
+ "capacity": 1024,
749
+ "maxs": [
750
+ 1100742656,
751
+ 1101135872,
752
+ 1107230720
753
+ ],
754
+ "mins": [
755
+ 3248750592,
756
+ 3248357376,
757
+ 3250651136
758
+ ]
759
+ }
760
+ ],
761
+ "result": 1
762
+ }
763
+ },
764
+ {
765
+ "rust": {
766
+ "queries": [
767
+ {
768
+ "capacity": 1024,
769
+ "maxs": [
770
+ 1100742656,
771
+ 1101135872,
772
+ 1107230720
773
+ ],
774
+ "mins": [
775
+ 3248750592,
776
+ 3248357376,
777
+ 3250651136
778
+ ]
779
+ }
780
+ ],
781
+ "result": 0
782
+ },
783
+ "source": {
784
+ "queries": [
785
+ {
786
+ "capacity": 1024,
787
+ "maxs": [
788
+ 1100742656,
789
+ 1101135872,
790
+ 1107230720
791
+ ],
792
+ "mins": [
793
+ 3248750592,
794
+ 3248357376,
795
+ 3250651136
796
+ ]
797
+ }
798
+ ],
799
+ "result": 0
800
+ }
801
+ },
802
+ {
803
+ "rust": {
804
+ "queries": [
805
+ {
806
+ "capacity": 1024,
807
+ "maxs": [
808
+ 1100742656,
809
+ 1101135872,
810
+ 1107230720
811
+ ],
812
+ "mins": [
813
+ 3248750592,
814
+ 3248357376,
815
+ 3250651136
816
+ ]
817
+ }
818
+ ],
819
+ "result": 1
820
+ },
821
+ "source": {
822
+ "queries": [
823
+ {
824
+ "capacity": 1024,
825
+ "maxs": [
826
+ 1100742656,
827
+ 1101135872,
828
+ 1107230720
829
+ ],
830
+ "mins": [
831
+ 3248750592,
832
+ 3248357376,
833
+ 3250651136
834
+ ]
835
+ }
836
+ ],
837
+ "result": 1
838
+ }
839
+ },
840
+ {
841
+ "rust": {
842
+ "queries": [
843
+ {
844
+ "capacity": 1024,
845
+ "maxs": [
846
+ 1100742656,
847
+ 1101135872,
848
+ 1107230720
849
+ ],
850
+ "mins": [
851
+ 3248750592,
852
+ 3248357376,
853
+ 3250651136
854
+ ]
855
+ }
856
+ ],
857
+ "result": 1
858
+ },
859
+ "source": {
860
+ "queries": [
861
+ {
862
+ "capacity": 1024,
863
+ "maxs": [
864
+ 1100742656,
865
+ 1101135872,
866
+ 1107230720
867
+ ],
868
+ "mins": [
869
+ 3248750592,
870
+ 3248357376,
871
+ 3250651136
872
+ ]
873
+ }
874
+ ],
875
+ "result": 1
876
+ }
877
+ },
878
+ {
879
+ "rust": {
880
+ "queries": [
881
+ {
882
+ "capacity": 1024,
883
+ "maxs": [
884
+ 1100742656,
885
+ 1101135872,
886
+ 1107230720
887
+ ],
888
+ "mins": [
889
+ 3248750592,
890
+ 3248357376,
891
+ 3250651136
892
+ ]
893
+ }
894
+ ],
895
+ "result": 0
896
+ },
897
+ "source": {
898
+ "queries": [
899
+ {
900
+ "capacity": 1024,
901
+ "maxs": [
902
+ 1100742656,
903
+ 1101135872,
904
+ 1107230720
905
+ ],
906
+ "mins": [
907
+ 3248750592,
908
+ 3248357376,
909
+ 3250651136
910
+ ]
911
+ }
912
+ ],
913
+ "result": 0
914
+ }
915
+ },
916
+ {
917
+ "rust": {
918
+ "queries": [
919
+ {
920
+ "capacity": 1024,
921
+ "maxs": [
922
+ 1266679818,
923
+ 3414163436,
924
+ 1107558400
925
+ ],
926
+ "mins": [
927
+ 1266679788,
928
+ 3414163466,
929
+ 3250061312
930
+ ]
931
+ }
932
+ ],
933
+ "result": 0
934
+ },
935
+ "source": {
936
+ "queries": [
937
+ {
938
+ "capacity": 1024,
939
+ "maxs": [
940
+ 1266679818,
941
+ 3414163436,
942
+ 1107558400
943
+ ],
944
+ "mins": [
945
+ 1266679788,
946
+ 3414163466,
947
+ 3250061312
948
+ ]
949
+ }
950
+ ],
951
+ "result": 0
952
+ }
953
+ },
954
+ {
955
+ "rust": {
956
+ "queries": [
957
+ {
958
+ "capacity": 1024,
959
+ "maxs": [
960
+ 1266679818,
961
+ 3414163436,
962
+ 1107558400
963
+ ],
964
+ "mins": [
965
+ 1266679788,
966
+ 3414163466,
967
+ 3250061312
968
+ ]
969
+ }
970
+ ],
971
+ "result": 0
972
+ },
973
+ "source": {
974
+ "queries": [
975
+ {
976
+ "capacity": 1024,
977
+ "maxs": [
978
+ 1266679818,
979
+ 3414163436,
980
+ 1107558400
981
+ ],
982
+ "mins": [
983
+ 1266679788,
984
+ 3414163466,
985
+ 3250061312
986
+ ]
987
+ }
988
+ ],
989
+ "result": 0
990
+ }
991
+ },
992
+ {
993
+ "rust": {
994
+ "queries": [
995
+ {
996
+ "capacity": 1024,
997
+ "maxs": [
998
+ 1266679818,
999
+ 3414163436,
1000
+ 1107558400
1001
+ ],
1002
+ "mins": [
1003
+ 1266679788,
1004
+ 3414163466,
1005
+ 3250061312
1006
+ ]
1007
+ }
1008
+ ],
1009
+ "result": 1
1010
+ },
1011
+ "source": {
1012
+ "queries": [
1013
+ {
1014
+ "capacity": 1024,
1015
+ "maxs": [
1016
+ 1266679818,
1017
+ 3414163436,
1018
+ 1107558400
1019
+ ],
1020
+ "mins": [
1021
+ 1266679788,
1022
+ 3414163466,
1023
+ 3250061312
1024
+ ]
1025
+ }
1026
+ ],
1027
+ "result": 1
1028
+ }
1029
+ },
1030
+ {
1031
+ "rust": {
1032
+ "queries": [
1033
+ {
1034
+ "capacity": 1024,
1035
+ "maxs": [
1036
+ 1266679818,
1037
+ 3414163436,
1038
+ 1107558400
1039
+ ],
1040
+ "mins": [
1041
+ 1266679788,
1042
+ 3414163466,
1043
+ 3250061312
1044
+ ]
1045
+ }
1046
+ ],
1047
+ "result": 1
1048
+ },
1049
+ "source": {
1050
+ "queries": [
1051
+ {
1052
+ "capacity": 1024,
1053
+ "maxs": [
1054
+ 1266679818,
1055
+ 3414163436,
1056
+ 1107558400
1057
+ ],
1058
+ "mins": [
1059
+ 1266679788,
1060
+ 3414163466,
1061
+ 3250061312
1062
+ ]
1063
+ }
1064
+ ],
1065
+ "result": 1
1066
+ }
1067
+ },
1068
+ {
1069
+ "rust": {
1070
+ "queries": [
1071
+ {
1072
+ "capacity": 1024,
1073
+ "maxs": [
1074
+ 1266679818,
1075
+ 3414163436,
1076
+ 1107558400
1077
+ ],
1078
+ "mins": [
1079
+ 1266679788,
1080
+ 3414163466,
1081
+ 3250061312
1082
+ ]
1083
+ }
1084
+ ],
1085
+ "result": 0
1086
+ },
1087
+ "source": {
1088
+ "queries": [
1089
+ {
1090
+ "capacity": 1024,
1091
+ "maxs": [
1092
+ 1266679818,
1093
+ 3414163436,
1094
+ 1107558400
1095
+ ],
1096
+ "mins": [
1097
+ 1266679788,
1098
+ 3414163466,
1099
+ 3250061312
1100
+ ]
1101
+ }
1102
+ ],
1103
+ "result": 0
1104
+ }
1105
+ },
1106
+ {
1107
+ "rust": {
1108
+ "queries": [
1109
+ {
1110
+ "capacity": 1024,
1111
+ "maxs": [
1112
+ 1266679818,
1113
+ 3414163436,
1114
+ 1107558400
1115
+ ],
1116
+ "mins": [
1117
+ 1266679788,
1118
+ 3414163466,
1119
+ 3250061312
1120
+ ]
1121
+ }
1122
+ ],
1123
+ "result": 1
1124
+ },
1125
+ "source": {
1126
+ "queries": [
1127
+ {
1128
+ "capacity": 1024,
1129
+ "maxs": [
1130
+ 1266679818,
1131
+ 3414163436,
1132
+ 1107558400
1133
+ ],
1134
+ "mins": [
1135
+ 1266679788,
1136
+ 3414163466,
1137
+ 3250061312
1138
+ ]
1139
+ }
1140
+ ],
1141
+ "result": 1
1142
+ }
1143
+ },
1144
+ {
1145
+ "rust": {
1146
+ "queries": [
1147
+ {
1148
+ "capacity": 1024,
1149
+ "maxs": [
1150
+ 1266679818,
1151
+ 3414163436,
1152
+ 1107558400
1153
+ ],
1154
+ "mins": [
1155
+ 1266679788,
1156
+ 3414163466,
1157
+ 3250061312
1158
+ ]
1159
+ }
1160
+ ],
1161
+ "result": 1
1162
+ },
1163
+ "source": {
1164
+ "queries": [
1165
+ {
1166
+ "capacity": 1024,
1167
+ "maxs": [
1168
+ 1266679818,
1169
+ 3414163436,
1170
+ 1107558400
1171
+ ],
1172
+ "mins": [
1173
+ 1266679788,
1174
+ 3414163466,
1175
+ 3250061312
1176
+ ]
1177
+ }
1178
+ ],
1179
+ "result": 1
1180
+ }
1181
+ },
1182
+ {
1183
+ "rust": {
1184
+ "queries": [
1185
+ {
1186
+ "capacity": 1024,
1187
+ "maxs": [
1188
+ 1266679818,
1189
+ 3414163436,
1190
+ 1107558400
1191
+ ],
1192
+ "mins": [
1193
+ 1266679788,
1194
+ 3414163466,
1195
+ 3250061312
1196
+ ]
1197
+ }
1198
+ ],
1199
+ "result": 0
1200
+ },
1201
+ "source": {
1202
+ "queries": [
1203
+ {
1204
+ "capacity": 1024,
1205
+ "maxs": [
1206
+ 1266679818,
1207
+ 3414163436,
1208
+ 1107558400
1209
+ ],
1210
+ "mins": [
1211
+ 1266679788,
1212
+ 3414163466,
1213
+ 3250061312
1214
+ ]
1215
+ }
1216
+ ],
1217
+ "result": 0
1218
+ }
1219
+ }
1220
+ ],
1221
+ "source_report": "docs/research/qvm-spawn-overlap.json",
1222
+ "source_report_sha256": "41486d63b1f331ea7deaab21527a0ec2c672a95462e91b2ec36e6ffed93c1415"
1223
+ }
scripts/analyze_rust_spawn_overlap.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ import hashlib,json
3
+ from pathlib import Path
4
+ from rust_native_policy_support import binary,result,invoke
5
+ from analyze_qvm import write_json
6
+ def encode(s):
7
+ a=s['input'];return [*a['origin'],*a['bounds'],a['response'],len(a['indices']),*a['indices'],*[a['clients'][str(j)] for j in a['indices']]]
8
+ def project(s):return {k:s[k] for k in ['queries','result']}
9
+
10
+ def main():
11
+ b=binary();p=Path('docs/research/qvm-spawn-overlap.json');data=p.read_bytes();rows=[]
12
+ for s in json.loads(data)['probes']:rows.append({'source':project(s),'rust':result(b,'overlap',encode(s))})
13
+ write_json(Path('docs/research/rust-spawn-overlap.json'),{'source_report':str(p),'source_report_sha256':hashlib.sha256(data).hexdigest(),'probes':rows,'limits':'Rust matches all32 original167638 box/query/filter cases, including the full1024-result scan and f32 rounding. The API separates box construction from supplied engine indices, rejects nonfinite/overflow bounds and malformed positive counts/indices, and tests client-pointer nonzero alone. Actual collision broadphase and integration into fallback selection remain open.'})
14
+ if __name__=='__main__':main()
scripts/test_rust_spawn_overlap.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib,json,unittest
2
+ from pathlib import Path
3
+ class PortTests(unittest.TestCase):
4
+ def test_all_original_cases(self):
5
+ r=json.loads(Path('docs/research/rust-spawn-overlap.json').read_text());src=json.loads(Path(r['source_report']).read_text());self.assertEqual(len(r['probes']),len(src['probes']));self.assertGreater(len(r['probes']),20)
6
+ for p in r['probes']:self.assertEqual(p['rust'],p['source'])
7
+ def test_source_identity(self):
8
+ r=json.loads(Path('docs/research/rust-spawn-overlap.json').read_text());self.assertEqual(hashlib.sha256(Path(r['source_report']).read_bytes()).hexdigest(),r['source_report_sha256'])
9
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -2573,3 +2573,16 @@ report scripts/analyze_qvm_spawn_overlap.py docs/research/qvm-spawn-overlap.json
2573
  edge docs/research/qvm-spawn-overlap.json scripts/test_qvm_spawn_overlap.py
2574
  group qvm-spawn-overlap scripts/analyze_qvm_spawn_overlap.py
2575
  edge scripts/analyze_qvm_spawn_overlap.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2573
  edge docs/research/qvm-spawn-overlap.json scripts/test_qvm_spawn_overlap.py
2574
  group qvm-spawn-overlap scripts/analyze_qvm_spawn_overlap.py
2575
  edge scripts/analyze_qvm_spawn_overlap.py scripts/analyze_qvm_resumer_audit.py
2576
+ edge Cargo.toml scripts/analyze_rust_spawn_overlap.py
2577
+ edge Cargo.lock scripts/analyze_rust_spawn_overlap.py
2578
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_spawn_overlap.py
2579
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_spawn_overlap.py
2580
+ edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_spawn_overlap.py
2581
+ edge crates/urt-gameplay/src/bin/urt-native-policy.rs scripts/analyze_rust_spawn_overlap.py
2582
+ edge docs/research/qvm-spawn-overlap.json scripts/analyze_rust_spawn_overlap.py
2583
+ group rust-spawn-overlap scripts/analyze_rust_health_impulse.py
2584
+ group gameplay scripts/analyze_rust_spawn_overlap.py
2585
+ report scripts/analyze_rust_spawn_overlap.py docs/research/rust-spawn-overlap.json
2586
+ edge docs/research/rust-spawn-overlap.json scripts/test_rust_spawn_overlap.py
2587
+ group rust-spawn-overlap scripts/analyze_rust_spawn_overlap.py
2588
+ edge scripts/analyze_rust_spawn_overlap.py scripts/analyze_qvm_resumer_audit.py