nmarshall commited on
Commit
8596d76
·
1 Parent(s): b7976c2

gameplay: compose filter insertion and export

Browse files
crates/urt-gameplay/src/bin/urt-filter-policy.rs CHANGED
@@ -66,6 +66,10 @@ fn main() {
66
  let mut args = std::env::args().skip(1);
67
  let kind = args.next().unwrap();
68
  let w: Vec<u32> = args.map(|s| s.parse().unwrap()).collect();
 
 
 
 
69
  let n = w[0] as usize;
70
  if kind == "export" {
71
  assert_eq!(w.len(), 2 + 3 * n);
@@ -91,3 +95,57 @@ fn main() {
91
  _ => panic!("unknown policy"),
92
  }
93
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  let mut args = std::env::args().skip(1);
67
  let kind = args.next().unwrap();
68
  let w: Vec<u32> = args.map(|s| s.parse().unwrap()).collect();
69
+ if kind == "insert-export" {
70
+ println!("{}", insertion(&w));
71
+ return;
72
+ }
73
  let n = w[0] as usize;
74
  if kind == "export" {
75
  assert_eq!(w.len(), 2 + 3 * n);
 
95
  _ => panic!("unknown policy"),
96
  }
97
  }
98
+
99
+ fn insertion(w: &[u32]) -> String {
100
+ use urt_gameplay::native_policy::FilterDiagnostic;
101
+ let before_count = w[0] as usize;
102
+ let save = w[1] as i32;
103
+ let handle = w[2];
104
+ let l = w[3] as usize;
105
+ let text: Vec<u8> = w[4..4 + l].iter().map(|v| *v as u8).collect();
106
+ let r = w[4 + l] as usize;
107
+ assert_eq!(w.len(), 5 + l + 3 * r);
108
+ let mut records = rows(&w[5 + l..]);
109
+ let prior = records.clone();
110
+ let mut count = before_count;
111
+ let out = insert_filter_export(&mut records, &mut count, &text, save, handle).unwrap();
112
+ let p = out.mutation;
113
+ let notices = p
114
+ .diagnostics
115
+ .iter()
116
+ .map(|d| match d {
117
+ FilterDiagnostic::Full => r#"{"op":"full"}"#.into(),
118
+ FilterDiagnostic::BadAddress(t) => {
119
+ format!(r#"{{"op":"bad-address","text":"{}"}}"#, hex(t))
120
+ }
121
+ })
122
+ .collect::<Vec<String>>()
123
+ .join(",");
124
+ let row = |r: FilterRecord| format!("[{},{},{}]", r.mask, r.comparison, r.metadata);
125
+ let before = p.slot.map(|j| row(prior[j])).unwrap_or("null".into());
126
+ let after = p.slot.map(|j| row(records[j])).unwrap_or("null".into());
127
+ let mut hash = 14695981039346656037u64;
128
+ for r in &records {
129
+ for v in [r.mask, r.comparison, r.metadata] {
130
+ for b in v.to_le_bytes() {
131
+ hash = (hash ^ b as u64).wrapping_mul(1099511628211);
132
+ }
133
+ }
134
+ }
135
+ format!(
136
+ r#"{{"result":{},"slot":{},"parsed":{},"diagnostics":[{}],"exports":[{}],"before_count":{},"count":{},"before":{},"after":{},"checksum":{},"exported":[{}]}}"#,
137
+ u8::from(p.result),
138
+ p.slot.map(|v| v.to_string()).unwrap_or("null".into()),
139
+ p.parsed
140
+ .map(|v| u8::from(v).to_string())
141
+ .unwrap_or("null".into()),
142
+ notices,
143
+ if p.export { "252500" } else { "" },
144
+ before_count,
145
+ count,
146
+ before,
147
+ after,
148
+ hash,
149
+ out.export.map(|p| export_json(Some(p))).unwrap_or_default()
150
+ )
151
+ }
crates/urt-gameplay/src/filter_lifecycle.rs CHANGED
@@ -218,3 +218,75 @@ mod metadata_tests {
218
  assert_eq!(rows, before);
219
  }
220
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  assert_eq!(rows, before);
219
  }
220
  }
221
+
222
+ #[derive(Clone, Debug, PartialEq, Eq)]
223
+ pub struct PersistedInsert {
224
+ pub mutation: crate::native_policy::FilterInsert,
225
+ pub export: Option<FilterExport>,
226
+ }
227
+ /// Compose252829 with252500, staging unsupported domains while retaining
228
+ /// ordinary parse-failure growth, holes and export through the supplied handle.
229
+ pub fn insert_filter_export(
230
+ records: &mut [FilterRecord],
231
+ count: &mut usize,
232
+ text: &[u8],
233
+ save: i32,
234
+ handle: u32,
235
+ ) -> Result<PersistedInsert, Error> {
236
+ let mut staged = records.to_vec();
237
+ let mut next = *count;
238
+ let mutation = crate::native_policy::insert_filter(&mut staged, &mut next, text, save)?;
239
+ let export = if mutation.export {
240
+ export_filters(&staged[..next], handle)?
241
+ } else {
242
+ None
243
+ };
244
+ records.copy_from_slice(&staged);
245
+ *count = next;
246
+ Ok(PersistedInsert { mutation, export })
247
+ }
248
+ #[cfg(test)]
249
+ mod insertion_export_tests {
250
+ use super::*;
251
+ #[test]
252
+ fn parser_failure_keeps_count_and_empty_write_plan() {
253
+ let mut rows = [FilterRecord {
254
+ mask: 7,
255
+ comparison: 8,
256
+ metadata: 9,
257
+ }];
258
+ let mut count = 0;
259
+ let p = insert_filter_export(&mut rows, &mut count, b"bad", 1, 0).unwrap();
260
+ assert_eq!(count, 1);
261
+ assert_eq!(p.mutation.parsed, Some(false));
262
+ let export = p.export.unwrap();
263
+ assert_eq!(export.handle, 0);
264
+ assert!(export.text.is_empty());
265
+ assert_eq!(
266
+ rows[0],
267
+ FilterRecord {
268
+ mask: 7,
269
+ comparison: u32::MAX,
270
+ metadata: 9
271
+ }
272
+ );
273
+ }
274
+ #[test]
275
+ fn full_capacity_and_unsupported_tokens_do_not_export_or_mutate() {
276
+ let row = FilterRecord {
277
+ mask: 7,
278
+ comparison: 8,
279
+ metadata: 9,
280
+ };
281
+ let mut rows = vec![row; 4096];
282
+ let mut count = 4096;
283
+ let p = insert_filter_export(&mut rows, &mut count, b"1.2.3.4", 1, 7).unwrap();
284
+ assert!(!p.mutation.result);
285
+ assert!(p.export.is_none());
286
+ assert_eq!(rows, vec![row; 4096]);
287
+ count = 0;
288
+ assert!(insert_filter_export(&mut rows, &mut count, &[b'1'; 128], 1, 7).is_err());
289
+ assert_eq!(count, 0);
290
+ assert_eq!(rows, vec![row; 4096]);
291
+ }
292
+ }
docs/FINDINGS.md CHANGED
@@ -1813,3 +1813,5 @@ RE-938: Across180 actual252127 fixtures, parser252304/37159 precedes an exact ma
1813
  RE-939: Rust matches180 original metadata-update cases, retaining the first exact pair, every unaffected row, raw metadata bits, parser/missing-match diagnostics and save gating. Unit tests verify negative save requests, duplicate preservation, sentinel matching and atomic rejection of unsupported tokens. Metadata is deliberately a raw word; native time/expiry interpretation remains open. [Evidence](research/RUST_FILTER_METADATA.md).
1814
 
1815
  RE-940: Twenty-four original252829/252304/252500 compositions verify table checksums plus exact export records and file-operation order. Parse failure still retains count growth and exports, including an empty write through a supplied zero handle. Valid broadcast sentinel values are skipped by export, and wildcard masks are lost in serialized output. Native file IO remains captured; insertion table/caller provenance remains open. [Evidence](research/QVM_FILTER_INSERT_EXPORT.md).
 
 
 
1813
  RE-939: Rust matches180 original metadata-update cases, retaining the first exact pair, every unaffected row, raw metadata bits, parser/missing-match diagnostics and save gating. Unit tests verify negative save requests, duplicate preservation, sentinel matching and atomic rejection of unsupported tokens. Metadata is deliberately a raw word; native time/expiry interpretation remains open. [Evidence](research/RUST_FILTER_METADATA.md).
1814
 
1815
  RE-940: Twenty-four original252829/252304/252500 compositions verify table checksums plus exact export records and file-operation order. Parse failure still retains count growth and exports, including an empty write through a supplied zero handle. Valid broadcast sentinel values are skipped by export, and wildcard masks are lost in serialized output. Native file IO remains captured; insertion table/caller provenance remains open. [Evidence](research/QVM_FILTER_INSERT_EXPORT.md).
1816
+
1817
+ RE-941: Rust matches24 source insertion/export compositions, including all table checksums, optional export payloads, sentinel omission, mask loss and zero-handle empty writes after parser failure. The staged API preserves ordinary source mutation semantics and rejects unsupported domains atomically. Unit tests also cover4096-capacity refusal without export and unsupported-token rollback. Native filesystem operations remain plans for a future adapter. [Evidence](research/RUST_FILTER_INSERT_EXPORT.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1859,3 +1859,5 @@ RE-924–933 completed bounded bot settings, announcement, connect-child composi
1859
  - [x] RE-939 Rust first-match filter metadata policy ([evidence](research/RUST_FILTER_METADATA.md)).
1860
 
1861
  - [x] RE-940 Original insertion composed with recovered export ([evidence](research/QVM_FILTER_INSERT_EXPORT.md)).
 
 
 
1859
  - [x] RE-939 Rust first-match filter metadata policy ([evidence](research/RUST_FILTER_METADATA.md)).
1860
 
1861
  - [x] RE-940 Original insertion composed with recovered export ([evidence](research/QVM_FILTER_INSERT_EXPORT.md)).
1862
+
1863
+ - [x] RE-941 Rust insertion with recovered export composition ([evidence](research/RUST_FILTER_INSERT_EXPORT.md)).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2425,3 +2425,7 @@ Rust matches180 original metadata-update cases, retaining the first exact pair,
2425
  ## 2026-10-28 — RE-940 Original insertion composed with recovered export
2426
 
2427
  Twenty-four original252829/252304/252500 compositions verify table checksums plus exact export records and file-operation order. Parse failure still retains count growth and exports, including an empty write through a supplied zero handle. Valid broadcast sentinel values are skipped by export, and wildcard masks are lost in serialized output. Native file IO remains captured; insertion table/caller provenance remains open. Focused `cargo xtask test-group qvm-filter-insert-export` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
 
 
 
 
 
2425
  ## 2026-10-28 — RE-940 Original insertion composed with recovered export
2426
 
2427
  Twenty-four original252829/252304/252500 compositions verify table checksums plus exact export records and file-operation order. Parse failure still retains count growth and exports, including an empty write through a supplied zero handle. Valid broadcast sentinel values are skipped by export, and wildcard masks are lost in serialized output. Native file IO remains captured; insertion table/caller provenance remains open. Focused `cargo xtask test-group qvm-filter-insert-export` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
2428
+
2429
+ ## 2026-10-28 — RE-941 Rust insertion with recovered export composition
2430
+
2431
+ Rust matches24 source insertion/export compositions, including all table checksums, optional export payloads, sentinel omission, mask loss and zero-handle empty writes after parser failure. The staged API preserves ordinary source mutation semantics and rejects unsupported domains atomically. Unit tests also cover4096-capacity refusal without export and unsupported-token rollback. Native filesystem operations remain plans for a future adapter. Focused `cargo xtask test-group rust-filter-insert-export` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1896,3 +1896,5 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1896
  - [x] RE-939 Rust first-match filter metadata policy ([evidence](research/RUST_FILTER_METADATA.md)).
1897
 
1898
  - [x] RE-940 Original insertion composed with recovered export ([evidence](research/QVM_FILTER_INSERT_EXPORT.md)).
 
 
 
1896
  - [x] RE-939 Rust first-match filter metadata policy ([evidence](research/RUST_FILTER_METADATA.md)).
1897
 
1898
  - [x] RE-940 Original insertion composed with recovered export ([evidence](research/QVM_FILTER_INSERT_EXPORT.md)).
1899
+
1900
+ - [x] RE-941 Rust insertion with recovered export composition ([evidence](research/RUST_FILTER_INSERT_EXPORT.md)).
docs/research/README.md CHANGED
@@ -1431,3 +1431,5 @@ The extension collector adds five focused tests for native tail calls, command-r
1431
  - [RE-939: Rust first-match filter metadata policy](RUST_FILTER_METADATA.md).
1432
 
1433
  - [RE-940: Original insertion composed with recovered export](QVM_FILTER_INSERT_EXPORT.md).
 
 
 
1431
  - [RE-939: Rust first-match filter metadata policy](RUST_FILTER_METADATA.md).
1432
 
1433
  - [RE-940: Original insertion composed with recovered export](QVM_FILTER_INSERT_EXPORT.md).
1434
+
1435
+ - [RE-941: Rust insertion with recovered export composition](RUST_FILTER_INSERT_EXPORT.md).
docs/research/RUST_FILTER_INSERT_EXPORT.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Rust insertion with recovered export composition
2
+
3
+ RE-941. Focused validation: `cargo xtask test-group rust-filter-insert-export`. [Machine report](rust-filter-insert-export.json).
4
+
5
+ Rust matches24 source insertion/export compositions, including all table checksums, optional export payloads, sentinel omission, mask loss and zero-handle empty writes after parser failure. The staged API preserves ordinary source mutation semantics and rejects unsupported domains atomically. Unit tests also cover4096-capacity refusal without export and unsupported-token rollback. Native filesystem operations remain plans for a future adapter.
docs/research/rust-filter-insert-export.json ADDED
@@ -0,0 +1,1835 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Finite recovered policy parity; native filesystem/network effects are not executed.",
3
+ "probes": [
4
+ {
5
+ "rust": {
6
+ "after": [
7
+ 4294967295,
8
+ 67305985,
9
+ 4294967295
10
+ ],
11
+ "before": [
12
+ 287454020,
13
+ 1432778632,
14
+ 2578103244
15
+ ],
16
+ "before_count": 0,
17
+ "checksum": 8643066824336841373,
18
+ "count": 1,
19
+ "diagnostics": [],
20
+ "exported": [],
21
+ "exports": [],
22
+ "parsed": 1,
23
+ "result": 1,
24
+ "slot": 0
25
+ },
26
+ "source": {
27
+ "after": [
28
+ 4294967295,
29
+ 67305985,
30
+ 4294967295
31
+ ],
32
+ "before": [
33
+ 287454020,
34
+ 1432778632,
35
+ 2578103244
36
+ ],
37
+ "before_count": 0,
38
+ "checksum": 8643066824336841373,
39
+ "count": 1,
40
+ "diagnostics": [],
41
+ "exported": [],
42
+ "exports": [],
43
+ "parsed": 1,
44
+ "result": 1,
45
+ "slot": 0
46
+ }
47
+ },
48
+ {
49
+ "rust": {
50
+ "after": [
51
+ 4294967295,
52
+ 67305985,
53
+ 4294967295
54
+ ],
55
+ "before": [
56
+ 287454020,
57
+ 1432778632,
58
+ 2578103244
59
+ ],
60
+ "before_count": 0,
61
+ "checksum": 8643066824336841373,
62
+ "count": 1,
63
+ "diagnostics": [],
64
+ "exported": [
65
+ {
66
+ "buffer": "312e322e332e343a2d310a",
67
+ "events": [
68
+ {
69
+ "op": "print",
70
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
71
+ },
72
+ {
73
+ "mode": 1,
74
+ "op": "open",
75
+ "path": "62616e6c6973742e747874"
76
+ },
77
+ {
78
+ "handle": 7,
79
+ "op": "write",
80
+ "text": "312e322e332e343a2d310a"
81
+ },
82
+ {
83
+ "handle": 7,
84
+ "op": "close"
85
+ }
86
+ ],
87
+ "formats": [
88
+ "312e322e332e343a2d310a"
89
+ ]
90
+ }
91
+ ],
92
+ "exports": [
93
+ 252500
94
+ ],
95
+ "parsed": 1,
96
+ "result": 1,
97
+ "slot": 0
98
+ },
99
+ "source": {
100
+ "after": [
101
+ 4294967295,
102
+ 67305985,
103
+ 4294967295
104
+ ],
105
+ "before": [
106
+ 287454020,
107
+ 1432778632,
108
+ 2578103244
109
+ ],
110
+ "before_count": 0,
111
+ "checksum": 8643066824336841373,
112
+ "count": 1,
113
+ "diagnostics": [],
114
+ "exported": [
115
+ {
116
+ "buffer": "312e322e332e343a2d310a",
117
+ "events": [
118
+ {
119
+ "op": "print",
120
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
121
+ },
122
+ {
123
+ "mode": 1,
124
+ "op": "open",
125
+ "path": "62616e6c6973742e747874"
126
+ },
127
+ {
128
+ "handle": 7,
129
+ "op": "write",
130
+ "text": "312e322e332e343a2d310a"
131
+ },
132
+ {
133
+ "handle": 7,
134
+ "op": "close"
135
+ }
136
+ ],
137
+ "formats": [
138
+ "312e322e332e343a2d310a"
139
+ ]
140
+ }
141
+ ],
142
+ "exports": [
143
+ 252500
144
+ ],
145
+ "parsed": 1,
146
+ "result": 1,
147
+ "slot": 0
148
+ }
149
+ },
150
+ {
151
+ "rust": {
152
+ "after": [
153
+ 287454020,
154
+ 4294967295,
155
+ 2578103244
156
+ ],
157
+ "before": [
158
+ 287454020,
159
+ 1432778632,
160
+ 2578103244
161
+ ],
162
+ "before_count": 0,
163
+ "checksum": 15828147485467890441,
164
+ "count": 1,
165
+ "diagnostics": [
166
+ {
167
+ "op": "bad-address",
168
+ "text": "626164"
169
+ }
170
+ ],
171
+ "exported": [],
172
+ "exports": [],
173
+ "parsed": 0,
174
+ "result": 1,
175
+ "slot": 0
176
+ },
177
+ "source": {
178
+ "after": [
179
+ 287454020,
180
+ 4294967295,
181
+ 2578103244
182
+ ],
183
+ "before": [
184
+ 287454020,
185
+ 1432778632,
186
+ 2578103244
187
+ ],
188
+ "before_count": 0,
189
+ "checksum": 15828147485467890441,
190
+ "count": 1,
191
+ "diagnostics": [
192
+ {
193
+ "op": "bad-address",
194
+ "text": "626164"
195
+ }
196
+ ],
197
+ "exported": [],
198
+ "exports": [],
199
+ "parsed": 0,
200
+ "result": 1,
201
+ "slot": 0
202
+ }
203
+ },
204
+ {
205
+ "rust": {
206
+ "after": [
207
+ 287454020,
208
+ 4294967295,
209
+ 2578103244
210
+ ],
211
+ "before": [
212
+ 287454020,
213
+ 1432778632,
214
+ 2578103244
215
+ ],
216
+ "before_count": 0,
217
+ "checksum": 15828147485467890441,
218
+ "count": 1,
219
+ "diagnostics": [
220
+ {
221
+ "op": "bad-address",
222
+ "text": "626164"
223
+ }
224
+ ],
225
+ "exported": [
226
+ {
227
+ "buffer": "",
228
+ "events": [
229
+ {
230
+ "op": "print",
231
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
232
+ },
233
+ {
234
+ "mode": 1,
235
+ "op": "open",
236
+ "path": "62616e6c6973742e747874"
237
+ },
238
+ {
239
+ "handle": 0,
240
+ "op": "write",
241
+ "text": ""
242
+ },
243
+ {
244
+ "handle": 0,
245
+ "op": "close"
246
+ }
247
+ ],
248
+ "formats": []
249
+ }
250
+ ],
251
+ "exports": [
252
+ 252500
253
+ ],
254
+ "parsed": 0,
255
+ "result": 1,
256
+ "slot": 0
257
+ },
258
+ "source": {
259
+ "after": [
260
+ 287454020,
261
+ 4294967295,
262
+ 2578103244
263
+ ],
264
+ "before": [
265
+ 287454020,
266
+ 1432778632,
267
+ 2578103244
268
+ ],
269
+ "before_count": 0,
270
+ "checksum": 15828147485467890441,
271
+ "count": 1,
272
+ "diagnostics": [
273
+ {
274
+ "op": "bad-address",
275
+ "text": "626164"
276
+ }
277
+ ],
278
+ "exported": [
279
+ {
280
+ "buffer": "",
281
+ "events": [
282
+ {
283
+ "op": "print",
284
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
285
+ },
286
+ {
287
+ "mode": 1,
288
+ "op": "open",
289
+ "path": "62616e6c6973742e747874"
290
+ },
291
+ {
292
+ "handle": 0,
293
+ "op": "write",
294
+ "text": ""
295
+ },
296
+ {
297
+ "handle": 0,
298
+ "op": "close"
299
+ }
300
+ ],
301
+ "formats": []
302
+ }
303
+ ],
304
+ "exports": [
305
+ 252500
306
+ ],
307
+ "parsed": 0,
308
+ "result": 1,
309
+ "slot": 0
310
+ }
311
+ },
312
+ {
313
+ "rust": {
314
+ "after": [
315
+ 4294967295,
316
+ 4294967295,
317
+ 4294967295
318
+ ],
319
+ "before": [
320
+ 287454020,
321
+ 1432778632,
322
+ 2578103244
323
+ ],
324
+ "before_count": 0,
325
+ "checksum": 10626296841257250281,
326
+ "count": 1,
327
+ "diagnostics": [],
328
+ "exported": [],
329
+ "exports": [],
330
+ "parsed": 1,
331
+ "result": 1,
332
+ "slot": 0
333
+ },
334
+ "source": {
335
+ "after": [
336
+ 4294967295,
337
+ 4294967295,
338
+ 4294967295
339
+ ],
340
+ "before": [
341
+ 287454020,
342
+ 1432778632,
343
+ 2578103244
344
+ ],
345
+ "before_count": 0,
346
+ "checksum": 10626296841257250281,
347
+ "count": 1,
348
+ "diagnostics": [],
349
+ "exported": [],
350
+ "exports": [],
351
+ "parsed": 1,
352
+ "result": 1,
353
+ "slot": 0
354
+ }
355
+ },
356
+ {
357
+ "rust": {
358
+ "after": [
359
+ 4294967295,
360
+ 4294967295,
361
+ 4294967295
362
+ ],
363
+ "before": [
364
+ 287454020,
365
+ 1432778632,
366
+ 2578103244
367
+ ],
368
+ "before_count": 0,
369
+ "checksum": 10626296841257250281,
370
+ "count": 1,
371
+ "diagnostics": [],
372
+ "exported": [
373
+ {
374
+ "buffer": "",
375
+ "events": [
376
+ {
377
+ "op": "print",
378
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
379
+ },
380
+ {
381
+ "mode": 1,
382
+ "op": "open",
383
+ "path": "62616e6c6973742e747874"
384
+ },
385
+ {
386
+ "handle": 7,
387
+ "op": "write",
388
+ "text": ""
389
+ },
390
+ {
391
+ "handle": 7,
392
+ "op": "close"
393
+ }
394
+ ],
395
+ "formats": []
396
+ }
397
+ ],
398
+ "exports": [
399
+ 252500
400
+ ],
401
+ "parsed": 1,
402
+ "result": 1,
403
+ "slot": 0
404
+ },
405
+ "source": {
406
+ "after": [
407
+ 4294967295,
408
+ 4294967295,
409
+ 4294967295
410
+ ],
411
+ "before": [
412
+ 287454020,
413
+ 1432778632,
414
+ 2578103244
415
+ ],
416
+ "before_count": 0,
417
+ "checksum": 10626296841257250281,
418
+ "count": 1,
419
+ "diagnostics": [],
420
+ "exported": [
421
+ {
422
+ "buffer": "",
423
+ "events": [
424
+ {
425
+ "op": "print",
426
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
427
+ },
428
+ {
429
+ "mode": 1,
430
+ "op": "open",
431
+ "path": "62616e6c6973742e747874"
432
+ },
433
+ {
434
+ "handle": 7,
435
+ "op": "write",
436
+ "text": ""
437
+ },
438
+ {
439
+ "handle": 7,
440
+ "op": "close"
441
+ }
442
+ ],
443
+ "formats": []
444
+ }
445
+ ],
446
+ "exports": [
447
+ 252500
448
+ ],
449
+ "parsed": 1,
450
+ "result": 1,
451
+ "slot": 0
452
+ }
453
+ },
454
+ {
455
+ "rust": {
456
+ "after": [
457
+ 0,
458
+ 0,
459
+ 4294967295
460
+ ],
461
+ "before": [
462
+ 287454020,
463
+ 1432778632,
464
+ 2578103244
465
+ ],
466
+ "before_count": 0,
467
+ "checksum": 9180629977285729265,
468
+ "count": 1,
469
+ "diagnostics": [],
470
+ "exported": [],
471
+ "exports": [],
472
+ "parsed": 1,
473
+ "result": 1,
474
+ "slot": 0
475
+ },
476
+ "source": {
477
+ "after": [
478
+ 0,
479
+ 0,
480
+ 4294967295
481
+ ],
482
+ "before": [
483
+ 287454020,
484
+ 1432778632,
485
+ 2578103244
486
+ ],
487
+ "before_count": 0,
488
+ "checksum": 9180629977285729265,
489
+ "count": 1,
490
+ "diagnostics": [],
491
+ "exported": [],
492
+ "exports": [],
493
+ "parsed": 1,
494
+ "result": 1,
495
+ "slot": 0
496
+ }
497
+ },
498
+ {
499
+ "rust": {
500
+ "after": [
501
+ 0,
502
+ 0,
503
+ 4294967295
504
+ ],
505
+ "before": [
506
+ 287454020,
507
+ 1432778632,
508
+ 2578103244
509
+ ],
510
+ "before_count": 0,
511
+ "checksum": 9180629977285729265,
512
+ "count": 1,
513
+ "diagnostics": [],
514
+ "exported": [
515
+ {
516
+ "buffer": "302e302e302e303a2d310a",
517
+ "events": [
518
+ {
519
+ "op": "print",
520
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
521
+ },
522
+ {
523
+ "mode": 1,
524
+ "op": "open",
525
+ "path": "62616e6c6973742e747874"
526
+ },
527
+ {
528
+ "handle": 7,
529
+ "op": "write",
530
+ "text": "302e302e302e303a2d310a"
531
+ },
532
+ {
533
+ "handle": 7,
534
+ "op": "close"
535
+ }
536
+ ],
537
+ "formats": [
538
+ "302e302e302e303a2d310a"
539
+ ]
540
+ }
541
+ ],
542
+ "exports": [
543
+ 252500
544
+ ],
545
+ "parsed": 1,
546
+ "result": 1,
547
+ "slot": 0
548
+ },
549
+ "source": {
550
+ "after": [
551
+ 0,
552
+ 0,
553
+ 4294967295
554
+ ],
555
+ "before": [
556
+ 287454020,
557
+ 1432778632,
558
+ 2578103244
559
+ ],
560
+ "before_count": 0,
561
+ "checksum": 9180629977285729265,
562
+ "count": 1,
563
+ "diagnostics": [],
564
+ "exported": [
565
+ {
566
+ "buffer": "302e302e302e303a2d310a",
567
+ "events": [
568
+ {
569
+ "op": "print",
570
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
571
+ },
572
+ {
573
+ "mode": 1,
574
+ "op": "open",
575
+ "path": "62616e6c6973742e747874"
576
+ },
577
+ {
578
+ "handle": 7,
579
+ "op": "write",
580
+ "text": "302e302e302e303a2d310a"
581
+ },
582
+ {
583
+ "handle": 7,
584
+ "op": "close"
585
+ }
586
+ ],
587
+ "formats": [
588
+ "302e302e302e303a2d310a"
589
+ ]
590
+ }
591
+ ],
592
+ "exports": [
593
+ 252500
594
+ ],
595
+ "parsed": 1,
596
+ "result": 1,
597
+ "slot": 0
598
+ }
599
+ },
600
+ {
601
+ "rust": {
602
+ "after": [
603
+ 4294967295,
604
+ 67305985,
605
+ 4294967295
606
+ ],
607
+ "before": [
608
+ 4294967295,
609
+ 4294967295,
610
+ 100
611
+ ],
612
+ "before_count": 3,
613
+ "checksum": 12352080663264302319,
614
+ "count": 3,
615
+ "diagnostics": [],
616
+ "exported": [],
617
+ "exports": [],
618
+ "parsed": 1,
619
+ "result": 1,
620
+ "slot": 0
621
+ },
622
+ "source": {
623
+ "after": [
624
+ 4294967295,
625
+ 67305985,
626
+ 4294967295
627
+ ],
628
+ "before": [
629
+ 4294967295,
630
+ 4294967295,
631
+ 100
632
+ ],
633
+ "before_count": 3,
634
+ "checksum": 12352080663264302319,
635
+ "count": 3,
636
+ "diagnostics": [],
637
+ "exported": [],
638
+ "exports": [],
639
+ "parsed": 1,
640
+ "result": 1,
641
+ "slot": 0
642
+ }
643
+ },
644
+ {
645
+ "rust": {
646
+ "after": [
647
+ 4294967295,
648
+ 67305985,
649
+ 4294967295
650
+ ],
651
+ "before": [
652
+ 4294967295,
653
+ 4294967295,
654
+ 100
655
+ ],
656
+ "before_count": 3,
657
+ "checksum": 12352080663264302319,
658
+ "count": 3,
659
+ "diagnostics": [],
660
+ "exported": [
661
+ {
662
+ "buffer": "312e322e332e343a2d310a322e302e302e303a3130310a332e302e302e303a3130320a",
663
+ "events": [
664
+ {
665
+ "op": "print",
666
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
667
+ },
668
+ {
669
+ "mode": 1,
670
+ "op": "open",
671
+ "path": "62616e6c6973742e747874"
672
+ },
673
+ {
674
+ "handle": 7,
675
+ "op": "write",
676
+ "text": "312e322e332e343a2d310a322e302e302e303a3130310a332e302e302e303a3130320a"
677
+ },
678
+ {
679
+ "handle": 7,
680
+ "op": "close"
681
+ }
682
+ ],
683
+ "formats": [
684
+ "312e322e332e343a2d310a",
685
+ "322e302e302e303a3130310a",
686
+ "332e302e302e303a3130320a"
687
+ ]
688
+ }
689
+ ],
690
+ "exports": [
691
+ 252500
692
+ ],
693
+ "parsed": 1,
694
+ "result": 1,
695
+ "slot": 0
696
+ },
697
+ "source": {
698
+ "after": [
699
+ 4294967295,
700
+ 67305985,
701
+ 4294967295
702
+ ],
703
+ "before": [
704
+ 4294967295,
705
+ 4294967295,
706
+ 100
707
+ ],
708
+ "before_count": 3,
709
+ "checksum": 12352080663264302319,
710
+ "count": 3,
711
+ "diagnostics": [],
712
+ "exported": [
713
+ {
714
+ "buffer": "312e322e332e343a2d310a322e302e302e303a3130310a332e302e302e303a3130320a",
715
+ "events": [
716
+ {
717
+ "op": "print",
718
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
719
+ },
720
+ {
721
+ "mode": 1,
722
+ "op": "open",
723
+ "path": "62616e6c6973742e747874"
724
+ },
725
+ {
726
+ "handle": 7,
727
+ "op": "write",
728
+ "text": "312e322e332e343a2d310a322e302e302e303a3130310a332e302e302e303a3130320a"
729
+ },
730
+ {
731
+ "handle": 7,
732
+ "op": "close"
733
+ }
734
+ ],
735
+ "formats": [
736
+ "312e322e332e343a2d310a",
737
+ "322e302e302e303a3130310a",
738
+ "332e302e302e303a3130320a"
739
+ ]
740
+ }
741
+ ],
742
+ "exports": [
743
+ 252500
744
+ ],
745
+ "parsed": 1,
746
+ "result": 1,
747
+ "slot": 0
748
+ }
749
+ },
750
+ {
751
+ "rust": {
752
+ "after": [
753
+ 4294967295,
754
+ 4294967295,
755
+ 100
756
+ ],
757
+ "before": [
758
+ 4294967295,
759
+ 4294967295,
760
+ 100
761
+ ],
762
+ "before_count": 3,
763
+ "checksum": 4983954312695245907,
764
+ "count": 3,
765
+ "diagnostics": [
766
+ {
767
+ "op": "bad-address",
768
+ "text": "626164"
769
+ }
770
+ ],
771
+ "exported": [],
772
+ "exports": [],
773
+ "parsed": 0,
774
+ "result": 1,
775
+ "slot": 0
776
+ },
777
+ "source": {
778
+ "after": [
779
+ 4294967295,
780
+ 4294967295,
781
+ 100
782
+ ],
783
+ "before": [
784
+ 4294967295,
785
+ 4294967295,
786
+ 100
787
+ ],
788
+ "before_count": 3,
789
+ "checksum": 4983954312695245907,
790
+ "count": 3,
791
+ "diagnostics": [
792
+ {
793
+ "op": "bad-address",
794
+ "text": "626164"
795
+ }
796
+ ],
797
+ "exported": [],
798
+ "exports": [],
799
+ "parsed": 0,
800
+ "result": 1,
801
+ "slot": 0
802
+ }
803
+ },
804
+ {
805
+ "rust": {
806
+ "after": [
807
+ 4294967295,
808
+ 4294967295,
809
+ 100
810
+ ],
811
+ "before": [
812
+ 4294967295,
813
+ 4294967295,
814
+ 100
815
+ ],
816
+ "before_count": 3,
817
+ "checksum": 4983954312695245907,
818
+ "count": 3,
819
+ "diagnostics": [
820
+ {
821
+ "op": "bad-address",
822
+ "text": "626164"
823
+ }
824
+ ],
825
+ "exported": [
826
+ {
827
+ "buffer": "322e302e302e303a3130310a332e302e302e303a3130320a",
828
+ "events": [
829
+ {
830
+ "op": "print",
831
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
832
+ },
833
+ {
834
+ "mode": 1,
835
+ "op": "open",
836
+ "path": "62616e6c6973742e747874"
837
+ },
838
+ {
839
+ "handle": 0,
840
+ "op": "write",
841
+ "text": "322e302e302e303a3130310a332e302e302e303a3130320a"
842
+ },
843
+ {
844
+ "handle": 0,
845
+ "op": "close"
846
+ }
847
+ ],
848
+ "formats": [
849
+ "322e302e302e303a3130310a",
850
+ "332e302e302e303a3130320a"
851
+ ]
852
+ }
853
+ ],
854
+ "exports": [
855
+ 252500
856
+ ],
857
+ "parsed": 0,
858
+ "result": 1,
859
+ "slot": 0
860
+ },
861
+ "source": {
862
+ "after": [
863
+ 4294967295,
864
+ 4294967295,
865
+ 100
866
+ ],
867
+ "before": [
868
+ 4294967295,
869
+ 4294967295,
870
+ 100
871
+ ],
872
+ "before_count": 3,
873
+ "checksum": 4983954312695245907,
874
+ "count": 3,
875
+ "diagnostics": [
876
+ {
877
+ "op": "bad-address",
878
+ "text": "626164"
879
+ }
880
+ ],
881
+ "exported": [
882
+ {
883
+ "buffer": "322e302e302e303a3130310a332e302e302e303a3130320a",
884
+ "events": [
885
+ {
886
+ "op": "print",
887
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
888
+ },
889
+ {
890
+ "mode": 1,
891
+ "op": "open",
892
+ "path": "62616e6c6973742e747874"
893
+ },
894
+ {
895
+ "handle": 0,
896
+ "op": "write",
897
+ "text": "322e302e302e303a3130310a332e302e302e303a3130320a"
898
+ },
899
+ {
900
+ "handle": 0,
901
+ "op": "close"
902
+ }
903
+ ],
904
+ "formats": [
905
+ "322e302e302e303a3130310a",
906
+ "332e302e302e303a3130320a"
907
+ ]
908
+ }
909
+ ],
910
+ "exports": [
911
+ 252500
912
+ ],
913
+ "parsed": 0,
914
+ "result": 1,
915
+ "slot": 0
916
+ }
917
+ },
918
+ {
919
+ "rust": {
920
+ "after": [
921
+ 4294967295,
922
+ 4294967295,
923
+ 4294967295
924
+ ],
925
+ "before": [
926
+ 4294967295,
927
+ 4294967295,
928
+ 100
929
+ ],
930
+ "before_count": 3,
931
+ "checksum": 11865259713149171923,
932
+ "count": 3,
933
+ "diagnostics": [],
934
+ "exported": [],
935
+ "exports": [],
936
+ "parsed": 1,
937
+ "result": 1,
938
+ "slot": 0
939
+ },
940
+ "source": {
941
+ "after": [
942
+ 4294967295,
943
+ 4294967295,
944
+ 4294967295
945
+ ],
946
+ "before": [
947
+ 4294967295,
948
+ 4294967295,
949
+ 100
950
+ ],
951
+ "before_count": 3,
952
+ "checksum": 11865259713149171923,
953
+ "count": 3,
954
+ "diagnostics": [],
955
+ "exported": [],
956
+ "exports": [],
957
+ "parsed": 1,
958
+ "result": 1,
959
+ "slot": 0
960
+ }
961
+ },
962
+ {
963
+ "rust": {
964
+ "after": [
965
+ 4294967295,
966
+ 4294967295,
967
+ 4294967295
968
+ ],
969
+ "before": [
970
+ 4294967295,
971
+ 4294967295,
972
+ 100
973
+ ],
974
+ "before_count": 3,
975
+ "checksum": 11865259713149171923,
976
+ "count": 3,
977
+ "diagnostics": [],
978
+ "exported": [
979
+ {
980
+ "buffer": "322e302e302e303a3130310a332e302e302e303a3130320a",
981
+ "events": [
982
+ {
983
+ "op": "print",
984
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
985
+ },
986
+ {
987
+ "mode": 1,
988
+ "op": "open",
989
+ "path": "62616e6c6973742e747874"
990
+ },
991
+ {
992
+ "handle": 7,
993
+ "op": "write",
994
+ "text": "322e302e302e303a3130310a332e302e302e303a3130320a"
995
+ },
996
+ {
997
+ "handle": 7,
998
+ "op": "close"
999
+ }
1000
+ ],
1001
+ "formats": [
1002
+ "322e302e302e303a3130310a",
1003
+ "332e302e302e303a3130320a"
1004
+ ]
1005
+ }
1006
+ ],
1007
+ "exports": [
1008
+ 252500
1009
+ ],
1010
+ "parsed": 1,
1011
+ "result": 1,
1012
+ "slot": 0
1013
+ },
1014
+ "source": {
1015
+ "after": [
1016
+ 4294967295,
1017
+ 4294967295,
1018
+ 4294967295
1019
+ ],
1020
+ "before": [
1021
+ 4294967295,
1022
+ 4294967295,
1023
+ 100
1024
+ ],
1025
+ "before_count": 3,
1026
+ "checksum": 11865259713149171923,
1027
+ "count": 3,
1028
+ "diagnostics": [],
1029
+ "exported": [
1030
+ {
1031
+ "buffer": "322e302e302e303a3130310a332e302e302e303a3130320a",
1032
+ "events": [
1033
+ {
1034
+ "op": "print",
1035
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1036
+ },
1037
+ {
1038
+ "mode": 1,
1039
+ "op": "open",
1040
+ "path": "62616e6c6973742e747874"
1041
+ },
1042
+ {
1043
+ "handle": 7,
1044
+ "op": "write",
1045
+ "text": "322e302e302e303a3130310a332e302e302e303a3130320a"
1046
+ },
1047
+ {
1048
+ "handle": 7,
1049
+ "op": "close"
1050
+ }
1051
+ ],
1052
+ "formats": [
1053
+ "322e302e302e303a3130310a",
1054
+ "332e302e302e303a3130320a"
1055
+ ]
1056
+ }
1057
+ ],
1058
+ "exports": [
1059
+ 252500
1060
+ ],
1061
+ "parsed": 1,
1062
+ "result": 1,
1063
+ "slot": 0
1064
+ }
1065
+ },
1066
+ {
1067
+ "rust": {
1068
+ "after": [
1069
+ 0,
1070
+ 0,
1071
+ 4294967295
1072
+ ],
1073
+ "before": [
1074
+ 4294967295,
1075
+ 4294967295,
1076
+ 100
1077
+ ],
1078
+ "before_count": 3,
1079
+ "checksum": 9243264774671796427,
1080
+ "count": 3,
1081
+ "diagnostics": [],
1082
+ "exported": [],
1083
+ "exports": [],
1084
+ "parsed": 1,
1085
+ "result": 1,
1086
+ "slot": 0
1087
+ },
1088
+ "source": {
1089
+ "after": [
1090
+ 0,
1091
+ 0,
1092
+ 4294967295
1093
+ ],
1094
+ "before": [
1095
+ 4294967295,
1096
+ 4294967295,
1097
+ 100
1098
+ ],
1099
+ "before_count": 3,
1100
+ "checksum": 9243264774671796427,
1101
+ "count": 3,
1102
+ "diagnostics": [],
1103
+ "exported": [],
1104
+ "exports": [],
1105
+ "parsed": 1,
1106
+ "result": 1,
1107
+ "slot": 0
1108
+ }
1109
+ },
1110
+ {
1111
+ "rust": {
1112
+ "after": [
1113
+ 0,
1114
+ 0,
1115
+ 4294967295
1116
+ ],
1117
+ "before": [
1118
+ 4294967295,
1119
+ 4294967295,
1120
+ 100
1121
+ ],
1122
+ "before_count": 3,
1123
+ "checksum": 9243264774671796427,
1124
+ "count": 3,
1125
+ "diagnostics": [],
1126
+ "exported": [
1127
+ {
1128
+ "buffer": "302e302e302e303a2d310a322e302e302e303a3130310a332e302e302e303a3130320a",
1129
+ "events": [
1130
+ {
1131
+ "op": "print",
1132
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1133
+ },
1134
+ {
1135
+ "mode": 1,
1136
+ "op": "open",
1137
+ "path": "62616e6c6973742e747874"
1138
+ },
1139
+ {
1140
+ "handle": 7,
1141
+ "op": "write",
1142
+ "text": "302e302e302e303a2d310a322e302e302e303a3130310a332e302e302e303a3130320a"
1143
+ },
1144
+ {
1145
+ "handle": 7,
1146
+ "op": "close"
1147
+ }
1148
+ ],
1149
+ "formats": [
1150
+ "302e302e302e303a2d310a",
1151
+ "322e302e302e303a3130310a",
1152
+ "332e302e302e303a3130320a"
1153
+ ]
1154
+ }
1155
+ ],
1156
+ "exports": [
1157
+ 252500
1158
+ ],
1159
+ "parsed": 1,
1160
+ "result": 1,
1161
+ "slot": 0
1162
+ },
1163
+ "source": {
1164
+ "after": [
1165
+ 0,
1166
+ 0,
1167
+ 4294967295
1168
+ ],
1169
+ "before": [
1170
+ 4294967295,
1171
+ 4294967295,
1172
+ 100
1173
+ ],
1174
+ "before_count": 3,
1175
+ "checksum": 9243264774671796427,
1176
+ "count": 3,
1177
+ "diagnostics": [],
1178
+ "exported": [
1179
+ {
1180
+ "buffer": "302e302e302e303a2d310a322e302e302e303a3130310a332e302e302e303a3130320a",
1181
+ "events": [
1182
+ {
1183
+ "op": "print",
1184
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1185
+ },
1186
+ {
1187
+ "mode": 1,
1188
+ "op": "open",
1189
+ "path": "62616e6c6973742e747874"
1190
+ },
1191
+ {
1192
+ "handle": 7,
1193
+ "op": "write",
1194
+ "text": "302e302e302e303a2d310a322e302e302e303a3130310a332e302e302e303a3130320a"
1195
+ },
1196
+ {
1197
+ "handle": 7,
1198
+ "op": "close"
1199
+ }
1200
+ ],
1201
+ "formats": [
1202
+ "302e302e302e303a2d310a",
1203
+ "322e302e302e303a3130310a",
1204
+ "332e302e302e303a3130320a"
1205
+ ]
1206
+ }
1207
+ ],
1208
+ "exports": [
1209
+ 252500
1210
+ ],
1211
+ "parsed": 1,
1212
+ "result": 1,
1213
+ "slot": 0
1214
+ }
1215
+ },
1216
+ {
1217
+ "rust": {
1218
+ "after": [
1219
+ 4294967295,
1220
+ 67305985,
1221
+ 4294967295
1222
+ ],
1223
+ "before": [
1224
+ 4294967295,
1225
+ 4294967295,
1226
+ 101
1227
+ ],
1228
+ "before_count": 3,
1229
+ "checksum": 577458280395593209,
1230
+ "count": 3,
1231
+ "diagnostics": [],
1232
+ "exported": [],
1233
+ "exports": [],
1234
+ "parsed": 1,
1235
+ "result": 1,
1236
+ "slot": 1
1237
+ },
1238
+ "source": {
1239
+ "after": [
1240
+ 4294967295,
1241
+ 67305985,
1242
+ 4294967295
1243
+ ],
1244
+ "before": [
1245
+ 4294967295,
1246
+ 4294967295,
1247
+ 101
1248
+ ],
1249
+ "before_count": 3,
1250
+ "checksum": 577458280395593209,
1251
+ "count": 3,
1252
+ "diagnostics": [],
1253
+ "exported": [],
1254
+ "exports": [],
1255
+ "parsed": 1,
1256
+ "result": 1,
1257
+ "slot": 1
1258
+ }
1259
+ },
1260
+ {
1261
+ "rust": {
1262
+ "after": [
1263
+ 4294967295,
1264
+ 67305985,
1265
+ 4294967295
1266
+ ],
1267
+ "before": [
1268
+ 4294967295,
1269
+ 4294967295,
1270
+ 101
1271
+ ],
1272
+ "before_count": 3,
1273
+ "checksum": 577458280395593209,
1274
+ "count": 3,
1275
+ "diagnostics": [],
1276
+ "exported": [
1277
+ {
1278
+ "buffer": "312e302e302e303a3130300a312e322e332e343a2d310a332e302e302e303a3130320a",
1279
+ "events": [
1280
+ {
1281
+ "op": "print",
1282
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1283
+ },
1284
+ {
1285
+ "mode": 1,
1286
+ "op": "open",
1287
+ "path": "62616e6c6973742e747874"
1288
+ },
1289
+ {
1290
+ "handle": 7,
1291
+ "op": "write",
1292
+ "text": "312e302e302e303a3130300a312e322e332e343a2d310a332e302e302e303a3130320a"
1293
+ },
1294
+ {
1295
+ "handle": 7,
1296
+ "op": "close"
1297
+ }
1298
+ ],
1299
+ "formats": [
1300
+ "312e302e302e303a3130300a",
1301
+ "312e322e332e343a2d310a",
1302
+ "332e302e302e303a3130320a"
1303
+ ]
1304
+ }
1305
+ ],
1306
+ "exports": [
1307
+ 252500
1308
+ ],
1309
+ "parsed": 1,
1310
+ "result": 1,
1311
+ "slot": 1
1312
+ },
1313
+ "source": {
1314
+ "after": [
1315
+ 4294967295,
1316
+ 67305985,
1317
+ 4294967295
1318
+ ],
1319
+ "before": [
1320
+ 4294967295,
1321
+ 4294967295,
1322
+ 101
1323
+ ],
1324
+ "before_count": 3,
1325
+ "checksum": 577458280395593209,
1326
+ "count": 3,
1327
+ "diagnostics": [],
1328
+ "exported": [
1329
+ {
1330
+ "buffer": "312e302e302e303a3130300a312e322e332e343a2d310a332e302e302e303a3130320a",
1331
+ "events": [
1332
+ {
1333
+ "op": "print",
1334
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1335
+ },
1336
+ {
1337
+ "mode": 1,
1338
+ "op": "open",
1339
+ "path": "62616e6c6973742e747874"
1340
+ },
1341
+ {
1342
+ "handle": 7,
1343
+ "op": "write",
1344
+ "text": "312e302e302e303a3130300a312e322e332e343a2d310a332e302e302e303a3130320a"
1345
+ },
1346
+ {
1347
+ "handle": 7,
1348
+ "op": "close"
1349
+ }
1350
+ ],
1351
+ "formats": [
1352
+ "312e302e302e303a3130300a",
1353
+ "312e322e332e343a2d310a",
1354
+ "332e302e302e303a3130320a"
1355
+ ]
1356
+ }
1357
+ ],
1358
+ "exports": [
1359
+ 252500
1360
+ ],
1361
+ "parsed": 1,
1362
+ "result": 1,
1363
+ "slot": 1
1364
+ }
1365
+ },
1366
+ {
1367
+ "rust": {
1368
+ "after": [
1369
+ 4294967295,
1370
+ 4294967295,
1371
+ 101
1372
+ ],
1373
+ "before": [
1374
+ 4294967295,
1375
+ 4294967295,
1376
+ 101
1377
+ ],
1378
+ "before_count": 3,
1379
+ "checksum": 15420461893339168460,
1380
+ "count": 3,
1381
+ "diagnostics": [
1382
+ {
1383
+ "op": "bad-address",
1384
+ "text": "626164"
1385
+ }
1386
+ ],
1387
+ "exported": [],
1388
+ "exports": [],
1389
+ "parsed": 0,
1390
+ "result": 1,
1391
+ "slot": 1
1392
+ },
1393
+ "source": {
1394
+ "after": [
1395
+ 4294967295,
1396
+ 4294967295,
1397
+ 101
1398
+ ],
1399
+ "before": [
1400
+ 4294967295,
1401
+ 4294967295,
1402
+ 101
1403
+ ],
1404
+ "before_count": 3,
1405
+ "checksum": 15420461893339168460,
1406
+ "count": 3,
1407
+ "diagnostics": [
1408
+ {
1409
+ "op": "bad-address",
1410
+ "text": "626164"
1411
+ }
1412
+ ],
1413
+ "exported": [],
1414
+ "exports": [],
1415
+ "parsed": 0,
1416
+ "result": 1,
1417
+ "slot": 1
1418
+ }
1419
+ },
1420
+ {
1421
+ "rust": {
1422
+ "after": [
1423
+ 4294967295,
1424
+ 4294967295,
1425
+ 101
1426
+ ],
1427
+ "before": [
1428
+ 4294967295,
1429
+ 4294967295,
1430
+ 101
1431
+ ],
1432
+ "before_count": 3,
1433
+ "checksum": 15420461893339168460,
1434
+ "count": 3,
1435
+ "diagnostics": [
1436
+ {
1437
+ "op": "bad-address",
1438
+ "text": "626164"
1439
+ }
1440
+ ],
1441
+ "exported": [
1442
+ {
1443
+ "buffer": "312e302e302e303a3130300a332e302e302e303a3130320a",
1444
+ "events": [
1445
+ {
1446
+ "op": "print",
1447
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1448
+ },
1449
+ {
1450
+ "mode": 1,
1451
+ "op": "open",
1452
+ "path": "62616e6c6973742e747874"
1453
+ },
1454
+ {
1455
+ "handle": 0,
1456
+ "op": "write",
1457
+ "text": "312e302e302e303a3130300a332e302e302e303a3130320a"
1458
+ },
1459
+ {
1460
+ "handle": 0,
1461
+ "op": "close"
1462
+ }
1463
+ ],
1464
+ "formats": [
1465
+ "312e302e302e303a3130300a",
1466
+ "332e302e302e303a3130320a"
1467
+ ]
1468
+ }
1469
+ ],
1470
+ "exports": [
1471
+ 252500
1472
+ ],
1473
+ "parsed": 0,
1474
+ "result": 1,
1475
+ "slot": 1
1476
+ },
1477
+ "source": {
1478
+ "after": [
1479
+ 4294967295,
1480
+ 4294967295,
1481
+ 101
1482
+ ],
1483
+ "before": [
1484
+ 4294967295,
1485
+ 4294967295,
1486
+ 101
1487
+ ],
1488
+ "before_count": 3,
1489
+ "checksum": 15420461893339168460,
1490
+ "count": 3,
1491
+ "diagnostics": [
1492
+ {
1493
+ "op": "bad-address",
1494
+ "text": "626164"
1495
+ }
1496
+ ],
1497
+ "exported": [
1498
+ {
1499
+ "buffer": "312e302e302e303a3130300a332e302e302e303a3130320a",
1500
+ "events": [
1501
+ {
1502
+ "op": "print",
1503
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1504
+ },
1505
+ {
1506
+ "mode": 1,
1507
+ "op": "open",
1508
+ "path": "62616e6c6973742e747874"
1509
+ },
1510
+ {
1511
+ "handle": 0,
1512
+ "op": "write",
1513
+ "text": "312e302e302e303a3130300a332e302e302e303a3130320a"
1514
+ },
1515
+ {
1516
+ "handle": 0,
1517
+ "op": "close"
1518
+ }
1519
+ ],
1520
+ "formats": [
1521
+ "312e302e302e303a3130300a",
1522
+ "332e302e302e303a3130320a"
1523
+ ]
1524
+ }
1525
+ ],
1526
+ "exports": [
1527
+ 252500
1528
+ ],
1529
+ "parsed": 0,
1530
+ "result": 1,
1531
+ "slot": 1
1532
+ }
1533
+ },
1534
+ {
1535
+ "rust": {
1536
+ "after": [
1537
+ 4294967295,
1538
+ 4294967295,
1539
+ 4294967295
1540
+ ],
1541
+ "before": [
1542
+ 4294967295,
1543
+ 4294967295,
1544
+ 101
1545
+ ],
1546
+ "before_count": 3,
1547
+ "checksum": 7753791190889012745,
1548
+ "count": 3,
1549
+ "diagnostics": [],
1550
+ "exported": [],
1551
+ "exports": [],
1552
+ "parsed": 1,
1553
+ "result": 1,
1554
+ "slot": 1
1555
+ },
1556
+ "source": {
1557
+ "after": [
1558
+ 4294967295,
1559
+ 4294967295,
1560
+ 4294967295
1561
+ ],
1562
+ "before": [
1563
+ 4294967295,
1564
+ 4294967295,
1565
+ 101
1566
+ ],
1567
+ "before_count": 3,
1568
+ "checksum": 7753791190889012745,
1569
+ "count": 3,
1570
+ "diagnostics": [],
1571
+ "exported": [],
1572
+ "exports": [],
1573
+ "parsed": 1,
1574
+ "result": 1,
1575
+ "slot": 1
1576
+ }
1577
+ },
1578
+ {
1579
+ "rust": {
1580
+ "after": [
1581
+ 4294967295,
1582
+ 4294967295,
1583
+ 4294967295
1584
+ ],
1585
+ "before": [
1586
+ 4294967295,
1587
+ 4294967295,
1588
+ 101
1589
+ ],
1590
+ "before_count": 3,
1591
+ "checksum": 7753791190889012745,
1592
+ "count": 3,
1593
+ "diagnostics": [],
1594
+ "exported": [
1595
+ {
1596
+ "buffer": "312e302e302e303a3130300a332e302e302e303a3130320a",
1597
+ "events": [
1598
+ {
1599
+ "op": "print",
1600
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1601
+ },
1602
+ {
1603
+ "mode": 1,
1604
+ "op": "open",
1605
+ "path": "62616e6c6973742e747874"
1606
+ },
1607
+ {
1608
+ "handle": 7,
1609
+ "op": "write",
1610
+ "text": "312e302e302e303a3130300a332e302e302e303a3130320a"
1611
+ },
1612
+ {
1613
+ "handle": 7,
1614
+ "op": "close"
1615
+ }
1616
+ ],
1617
+ "formats": [
1618
+ "312e302e302e303a3130300a",
1619
+ "332e302e302e303a3130320a"
1620
+ ]
1621
+ }
1622
+ ],
1623
+ "exports": [
1624
+ 252500
1625
+ ],
1626
+ "parsed": 1,
1627
+ "result": 1,
1628
+ "slot": 1
1629
+ },
1630
+ "source": {
1631
+ "after": [
1632
+ 4294967295,
1633
+ 4294967295,
1634
+ 4294967295
1635
+ ],
1636
+ "before": [
1637
+ 4294967295,
1638
+ 4294967295,
1639
+ 101
1640
+ ],
1641
+ "before_count": 3,
1642
+ "checksum": 7753791190889012745,
1643
+ "count": 3,
1644
+ "diagnostics": [],
1645
+ "exported": [
1646
+ {
1647
+ "buffer": "312e302e302e303a3130300a332e302e302e303a3130320a",
1648
+ "events": [
1649
+ {
1650
+ "op": "print",
1651
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1652
+ },
1653
+ {
1654
+ "mode": 1,
1655
+ "op": "open",
1656
+ "path": "62616e6c6973742e747874"
1657
+ },
1658
+ {
1659
+ "handle": 7,
1660
+ "op": "write",
1661
+ "text": "312e302e302e303a3130300a332e302e302e303a3130320a"
1662
+ },
1663
+ {
1664
+ "handle": 7,
1665
+ "op": "close"
1666
+ }
1667
+ ],
1668
+ "formats": [
1669
+ "312e302e302e303a3130300a",
1670
+ "332e302e302e303a3130320a"
1671
+ ]
1672
+ }
1673
+ ],
1674
+ "exports": [
1675
+ 252500
1676
+ ],
1677
+ "parsed": 1,
1678
+ "result": 1,
1679
+ "slot": 1
1680
+ }
1681
+ },
1682
+ {
1683
+ "rust": {
1684
+ "after": [
1685
+ 0,
1686
+ 0,
1687
+ 4294967295
1688
+ ],
1689
+ "before": [
1690
+ 4294967295,
1691
+ 4294967295,
1692
+ 101
1693
+ ],
1694
+ "before_count": 3,
1695
+ "checksum": 11277808847814685921,
1696
+ "count": 3,
1697
+ "diagnostics": [],
1698
+ "exported": [],
1699
+ "exports": [],
1700
+ "parsed": 1,
1701
+ "result": 1,
1702
+ "slot": 1
1703
+ },
1704
+ "source": {
1705
+ "after": [
1706
+ 0,
1707
+ 0,
1708
+ 4294967295
1709
+ ],
1710
+ "before": [
1711
+ 4294967295,
1712
+ 4294967295,
1713
+ 101
1714
+ ],
1715
+ "before_count": 3,
1716
+ "checksum": 11277808847814685921,
1717
+ "count": 3,
1718
+ "diagnostics": [],
1719
+ "exported": [],
1720
+ "exports": [],
1721
+ "parsed": 1,
1722
+ "result": 1,
1723
+ "slot": 1
1724
+ }
1725
+ },
1726
+ {
1727
+ "rust": {
1728
+ "after": [
1729
+ 0,
1730
+ 0,
1731
+ 4294967295
1732
+ ],
1733
+ "before": [
1734
+ 4294967295,
1735
+ 4294967295,
1736
+ 101
1737
+ ],
1738
+ "before_count": 3,
1739
+ "checksum": 11277808847814685921,
1740
+ "count": 3,
1741
+ "diagnostics": [],
1742
+ "exported": [
1743
+ {
1744
+ "buffer": "312e302e302e303a3130300a302e302e302e303a2d310a332e302e302e303a3130320a",
1745
+ "events": [
1746
+ {
1747
+ "op": "print",
1748
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1749
+ },
1750
+ {
1751
+ "mode": 1,
1752
+ "op": "open",
1753
+ "path": "62616e6c6973742e747874"
1754
+ },
1755
+ {
1756
+ "handle": 7,
1757
+ "op": "write",
1758
+ "text": "312e302e302e303a3130300a302e302e302e303a2d310a332e302e302e303a3130320a"
1759
+ },
1760
+ {
1761
+ "handle": 7,
1762
+ "op": "close"
1763
+ }
1764
+ ],
1765
+ "formats": [
1766
+ "312e302e302e303a3130300a",
1767
+ "302e302e302e303a2d310a",
1768
+ "332e302e302e303a3130320a"
1769
+ ]
1770
+ }
1771
+ ],
1772
+ "exports": [
1773
+ 252500
1774
+ ],
1775
+ "parsed": 1,
1776
+ "result": 1,
1777
+ "slot": 1
1778
+ },
1779
+ "source": {
1780
+ "after": [
1781
+ 0,
1782
+ 0,
1783
+ 4294967295
1784
+ ],
1785
+ "before": [
1786
+ 4294967295,
1787
+ 4294967295,
1788
+ 101
1789
+ ],
1790
+ "before_count": 3,
1791
+ "checksum": 11277808847814685921,
1792
+ "count": 3,
1793
+ "diagnostics": [],
1794
+ "exported": [
1795
+ {
1796
+ "buffer": "312e302e302e303a3130300a302e302e302e303a2d310a332e302e302e303a3130320a",
1797
+ "events": [
1798
+ {
1799
+ "op": "print",
1800
+ "text": "57726974696e673a2062616e6c6973742e7478740a"
1801
+ },
1802
+ {
1803
+ "mode": 1,
1804
+ "op": "open",
1805
+ "path": "62616e6c6973742e747874"
1806
+ },
1807
+ {
1808
+ "handle": 7,
1809
+ "op": "write",
1810
+ "text": "312e302e302e303a3130300a302e302e302e303a2d310a332e302e302e303a3130320a"
1811
+ },
1812
+ {
1813
+ "handle": 7,
1814
+ "op": "close"
1815
+ }
1816
+ ],
1817
+ "formats": [
1818
+ "312e302e302e303a3130300a",
1819
+ "302e302e302e303a2d310a",
1820
+ "332e302e302e303a3130320a"
1821
+ ]
1822
+ }
1823
+ ],
1824
+ "exports": [
1825
+ 252500
1826
+ ],
1827
+ "parsed": 1,
1828
+ "result": 1,
1829
+ "slot": 1
1830
+ }
1831
+ }
1832
+ ],
1833
+ "source_report": "docs/research/qvm-filter-insert-export.json",
1834
+ "source_report_sha256": "c6d9c91edf1a90d02ec5d84b0394039f67b95cdef350dd21569b46f4f9eb7b12"
1835
+ }
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 191,
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": 193,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
scripts/analyze_rust_filter_insert_export.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Compare the Rust filter policy with the original QVM report."""
2
+ import hashlib,json,os,subprocess
3
+ from pathlib import Path
4
+ from analyze_qvm import write_json
5
+ from rust_lifecycle_support import result
6
+
7
+ def main():
8
+ subprocess.run(['cargo','build','--offline','--package','urt-gameplay','--bin','urt-filter-policy'],check=True,capture_output=True)
9
+ binary=Path(os.environ.get('CARGO_TARGET_DIR','target'))/'debug'/'urt-filter-policy'
10
+ path=Path('docs/research/qvm-filter-insert-export.json');data=path.read_bytes();probes=[]
11
+ for p in json.loads(data)['probes']:
12
+ a=p['input'];words=encode(a)
13
+ probes.append(dict(source={k:p[k] for k in ['result', 'slot', 'parsed', 'diagnostics', 'exports', 'before_count', 'count', 'before', 'after', 'checksum', 'exported']},rust=result(binary,'insert-export',words)))
14
+ write_json(Path('docs/research/rust-filter-insert-export.json'),dict(source_report=str(path),source_report_sha256=hashlib.sha256(data).hexdigest(),probes=probes,limits='Finite recovered policy parity; native filesystem/network effects are not executed.'))
15
+
16
+ def encode(a):
17
+ from qvm_filter_update_support import table
18
+ n,rows=table(a['profile']);text=bytes.fromhex(a['text']);return [n,a['save'],a['handle'],len(text),*text,len(rows),*[v for r in rows for v in r]]
19
+ if __name__=='__main__':main()
scripts/test_rust_filter_insert_export.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib,json,unittest
2
+ from pathlib import Path
3
+ class PortTests(unittest.TestCase):
4
+ def test_original_parity(self):
5
+ r=json.loads(Path('docs/research/rust-filter-insert-export.json').read_text());self.assertGreaterEqual(len(r['probes']),18)
6
+ for p in r['probes']:self.assertEqual(p['source'],p['rust'])
7
+ def test_identity(self):
8
+ r=json.loads(Path('docs/research/rust-filter-insert-export.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
@@ -3164,3 +3164,18 @@ report scripts/analyze_qvm_filter_insert_export.py docs/research/qvm-filter-inse
3164
  edge docs/research/qvm-filter-insert-export.json scripts/test_qvm_filter_insert_export.py
3165
  group qvm-filter-insert-export scripts/analyze_qvm_filter_insert_export.py
3166
  edge scripts/analyze_qvm_filter_insert_export.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3164
  edge docs/research/qvm-filter-insert-export.json scripts/test_qvm_filter_insert_export.py
3165
  group qvm-filter-insert-export scripts/analyze_qvm_filter_insert_export.py
3166
  edge scripts/analyze_qvm_filter_insert_export.py scripts/analyze_qvm_resumer_audit.py
3167
+ report scripts/analyze_rust_filter_insert_export.py docs/research/rust-filter-insert-export.json
3168
+ edge docs/research/rust-filter-insert-export.json scripts/test_rust_filter_insert_export.py
3169
+ group rust-filter-insert-export scripts/analyze_rust_filter_insert_export.py
3170
+ edge scripts/analyze_rust_filter_insert_export.py scripts/analyze_qvm_resumer_audit.py
3171
+ edge Cargo.toml scripts/analyze_rust_filter_insert_export.py
3172
+ edge Cargo.lock scripts/analyze_rust_filter_insert_export.py
3173
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_filter_insert_export.py
3174
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_filter_insert_export.py
3175
+ edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_filter_insert_export.py
3176
+ edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_filter_insert_export.py
3177
+ edge crates/urt-gameplay/src/bin/urt-filter-policy.rs scripts/analyze_rust_filter_insert_export.py
3178
+ edge docs/research/qvm-filter-insert-export.json scripts/analyze_rust_filter_insert_export.py
3179
+ group rust-filter-insert-export scripts/analyze_rust_health_impulse.py
3180
+ group gameplay scripts/analyze_rust_filter_insert_export.py
3181
+ edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_filter_insert_export.py